Keepalived是一款专为LVS和HA设计的一款健康检查工具:支持故障自动切换、支持节点健康状态检查
官方地址:www.keepalived.org
Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题
在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
Keepalived体系主要模块及其作用:keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
VRRP会把多台路由组成一个虚拟路由组vrid,vrrp会生成一个虚拟路由(包含虚拟IP和虚拟MAC,局域网内用户不关心哪个是主,它们只用虚拟路由器的虚拟IP作为它们的网关)实际上虚拟IP是承载在master路由器,也就是说实际的数据包通过master进行转发,backup是通过优先级来决定哪个是master路由,优先级最大的为master,backup只是用来监听master定时发送来的vrrp报文,如果超时未收到vrrp报文backup就会抢占masker,虚拟IP也会一起漂移到backup上
可以通过yum、编译等方式安装Keppalived工具
Keepalived配置文件位于/etc/keepalived/keepalived.conf
在192.168.48.10部署DR调度器
配置Keepalived
1.关闭防火墙与增强机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装keepalived工具,与ipvsadm工具
yum -y install ipvsadm keepalived
3.修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
10 smtp_server 127.0.0.1 #修改邮件地址为本机
12 router_id LVS_01 #指定服务器(路由器)名称,主备名称不能一样
14 # vrrp_strict #严格遵守VRRP协议,需注释,否则VIP无法使用
21 interface ens33 #修改承载VIP地址的物理接口
22 virtual_router_id 51 #指定虚拟路由的ID号,热备组需保持一致
29 virtual_ipaddress #指定群集VIP地址
34 virtual_server #虚拟服务器地址VIP、端口
37 lb_kind DR #修改集群工作模式DR
41 real_server #修改web节点的IP与端口
52 TCP_CHECK { #添加健康检查
53 connect_prot 80 #添加检查的目标端口
54 connect_timeout 3 #添加连接超时(秒)
55 nb_get_retry 3 #添加重试次数
56 delay_before_retry 3 #添加重试间隔
57 }
#添加第二个web节点的地址与端口
real_server 192.168.48.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
#删除后面多余配置
#启动服务
systemctl start keepalived
安装工具
修改配置文件
vim /etc/keepalived/keepalived.conf
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C #清空策略
ipvsadm -A -t 192.168.48.150:80 -s rr
ipvsadm -a -t 192.168.48.150:80 -r 192.168.48.11:80 -g
ipvsadm -a -t 192.168.48.150:80 -r 192.168.48.13:80 -g
ipvsadm
ipvsadm -ln #查看策略
ipvsadm-save >/etc/sysconfig/ipvsadm #保存策略
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p 查看
查看虚拟网卡VIP信息:ip add show dev ens33
在192.168.48.8部署备用DR调度器
配置Keepalived
1.关闭防火墙与增强机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装keepalived工具,与ipvsadm工具
yum -y install ipvsadm keepalived
3.修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
10 smtp_server 127.0.0.1 #修改邮件地址为本机
12 router_id LVS_02 #指定服务器(路由器)名称,主备名称不能一样
14 # vrrp_strict #严格遵守VRRP协议,需注释,否则VIP无法使用
20 state BACKUP
21 interface ens33 #修改承载VIP地址的物理接口
22 virtual_router_id 51 #指定虚拟路由的ID号,热备组需保持一致
23 priority 90 #更改优先级,要比主的低
29 virtual_ipaddress #指定群集VIP地址
34 virtual_server #虚拟服务器地址VIP、端口
37 lb_kind DR #修改集群工作模式DR
41 real_server #修改web节点的IP与端口
52 TCP_CHECK { #添加健康检查
53 connect_prot 80 #添加检查的目标端口
54 connect_timeout 3 #添加连接超时(秒)
55 nb_get_retry 3 #添加重试次数
56 delay_before_retry 3 #添加重试间隔
57 }
#添加第二个web节点的地址与端口
real_server 192.168.48.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
#删除多余配置
#启动服务
systemctl start keepalived
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C #清空策略
ipvsadm -A -t 192.168.48.150:80 -s rr
ipvsadm -a -t 192.168.48.150:80 -r 192.168.48.11:80 -g
ipvsadm -a -t 192.168.48.150:80 -r 192.168.48.13:80 -g
ipvsadm
ipvsadm -ln #查看策略
ipvsadm-save >/etc/sysconfig/ipvsadm #保存策略
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p #刷新
192.168.48.11上部署节点服务器
1.关闭防火墙与增强机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装httpd服务
yum install -y httpd
systemctl start httpd
3.配置站点测试文件
echo "this is test web1" >/var/www/html/index.html
4.配置虚拟网卡lo:0
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.48.150
NETMASK=255.255.255.255
重启网卡
systemctl restart network
5.设置路由
route add -host 192.168.48.150 dev lo:0
route -n #查看路由表
vim /etc/sysctl.conf
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
#刷新配置
sysctl -p
192.168.48.13上部署节点服务器
1.关闭防火墙与增强机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装httpd服务
yum install -y httpd
systemctl start httpd
3.配置站点测试文件
echo "this is test web2" >/var/www/html/index.html
4.配置虚拟网卡lo:0
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.48.150
NETMASK=255.255.255.255
重启网卡
systemctl restart network
5.设置路由
route add -host 192.168.48.150 dev lo:0
route -n #查看路由表
vim /etc/sysctl.conf
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
#刷新配置
sysctl -p
在浏览器中输入192.168.48.150访问测试
关闭主DR调度服务器的Keepalived
再次访问192.168.48.150
再次将主调度器的keepalived服务启动
VIP再次漂移回主调度器,主调度器继续开始工作
1.在配置keepalived时,设置了虚拟IP所在的网卡即VIP地址,所以在设置DR调度器时,无需另外添加ens33:0
2.keepalive主要是通过backup接收vrrp报文进行心跳监测masker的状态,若接收不到vrrp报文,则backup会任务masker宕机,从而上位称为masker,此时VIP也会漂移到其上