LVS+Keepalived高可用群集

Keepalived是一款用于LVS和HA的健康检查工具,实现VRRP协议进行服务器热备,防止单点故障。集群包括主、备调度器,节点服务器和NFS存储。在主调度器故障时,备调度器能自动接管虚拟IP,确保服务不间断。通过`ip addr`命令和浏览器访问测试验证了高可用性和故障切换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Keepalived

专为LVS和HA设计的一款健康检查工具
支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)

作用

企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务将发生中断,造成极大危害。keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能,双机热备的故障切换是由虚拟IP地址的漂移来实现的,适用于各种应用服务器。

原理

由多台服务器组成一个热备组,通过共用的虚拟IP地址对外提供服务。每个热备组内同时只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

配置文件

vi /etc/keepalived/keepalived.conf

global_defs {此区段指定全局参数}
vrrp_instance 实例名称 {此区段指定VRRP热备参数}
注释文字以 “!”开头
router_id LVS_1:本服务器名称为 LVS_1
vrrp_instance v1 {}:定义热备实例组名为 v1
state MASTER:热备状态,MASTER表示主服务器
interface ens33:表示承载虚拟地址的物理接口为ens33
virtual_router_id 1:表示虚拟服务器的ID号为1,每个热备组保持一致
priority 100:优先级为100,数值越大优先级越高
advert_int 1:表示通告间隔秒数为1(心跳频率)
auth_type PASS:表示认证类型为密码
auth_pass 123456:表示密码为123456
virtual_ipaddress {此段为虚拟地址,可以有多个}

LVS+Keepalived高可用群集

本项目需要主、备两台调度器,两台服务器作为节点,一台NFS共享存储服务器以及一台客户机。

NFS

192.168.10.16

yum -y install nfs-utils rpcbind
mkdir -p /opt/web1
mkdir -p /opt/web2
vi /etc/exports
/opt/web1 192.168.10.15(ro)
/opt/web2 192.168.10.14(ro)

systemctl start nfs
showmount -e	#查看本机共享存储发布情况

节点服务器

server1

192.168.10.14

showmount -e 192.168.10.16	##查看NFS服务器发布情况
yum -y install httpd
mount 192.168.10.16:/opt/web1 /var/www/html
vi server.sh
#!/bin/bash

ifconfig lo:0 192.168.10.100 broadcast 192.168.10.100 netmask 255.255.255.255 up		
#添加虚拟网口
route add -host 192.168.10.100 dev lo:0		#给lo:0添加路由
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
##系统只响应目的IP为本地真实IPARP请求
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
##系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送真实接口的IP地址
sysctl -p &> /dev/null

sh server.sh
ifconfig	#查看虚拟网口配置情况

server2

192.168.10.15

showmount -e 192.168.10.16	
yum -y install httpd
mount 192.168.10.16:/opt/web2 /var/www/html
vi server.sh
#!/bin/bash

ifconfig lo:0 192.168.10.100 broadcast 192.168.10.100 netmask 255.255.255.255 up		
#添加虚拟网口
route add -host 192.168.10.100 dev lo:0		#给lo:0添加路由
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null

sh server.sh
ifconfig

调度器

主调度器

192.168.10.12

modprobe ip_vs		##加载LVS内核模块
cat /proc/net/ip_vs		##查看当前系统ip_vs模块版本信息
yum -y install ipvsadm		##安装ipvsadm
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel		##keepalived依赖环境
tar -zxvf keepalived-2.0.13.tar.gz
cd keepalived-2.0.13/
./configure --prefix=/
make && make install
cp keepalived/etc/init.d/keepalived /etc/init.d/		##将keepalived加入系统服务,可用systemctl管理

vi /etc/keepalived/keepalived.conf		##编辑配置文件

! Configuration File for keepalived

global_defs {
   router_id LVS_1
}

vrrp_instance v1 {
    state MASTER
    interface ens33
    virtual_router_id 1
    priority 105
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 6666
    }
    virtual_ipaddress {
        192.168.10.100
    }
}

virtual_server 192.168.10.100 80 {	#虚拟服务器地址
    delay_loop 6	#健康检查的间隔时间6s
    lb_algo rr		#调度算法为rr
    lb_kind DR		#群集工作模式为DR
    persistence_timeout 6	#连接保持时间6s
    protocol TCP		#应用服务器采用TCP协议

    real_server 192.168.10.14 80 {	#第一个web服务器真实地址
        weight 1	#节点的权重
        TCP_CHECK {		#健康检查方式TCP
                connect_port 80		#检查的目标端口80
                connect_timeout 3	#连接超时3秒
                nb_get_retry 3		#重试次数3次
                delay_before_retry 3	#重试间隔3}
        }
    real_server 192.168.10.15 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                }
        }
}

systemctl start keepalived		##开启服务
systemctl stop firewalld
setenforce 0

备调度器

192.168.10.13
除keepalived配置文件外,其他同主调度器

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id LVS_2
}

vrrp_instance v1 {
    state BACKUP
    interface ens33
    virtual_router_id 1
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 6666
    }
    virtual_ipaddress {
        192.168.10.100
    }
}

virtual_server 192.168.10.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 6
    protocol TCP

    real_server 192.168.10.14 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                }
        }
    real_server 192.168.10.15 80 {
        weight 1
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                }
        }
}

测试效果

使用“ip addr”命令查看地址信息

当主备调度器正常工作时

主调度器获得虚拟IP,备调度器未获得

在这里插入图片描述
在这里插入图片描述

当主调度器故障,备调度器正常工作

备调度器成为主,获得虚拟IP

在这里插入图片描述

浏览器访问测试

第一次访问

在这里插入图片描述

第二次访问

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值