1.Keepalived工具介绍
专为LVS和HA设计的一款健康检查工具
支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)
官方网站: http://www.keepalived.orgl
2.Keepalived及其工作原理
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,
但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,
即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
2.1集群要满足的三个特点:
1. 负载均衡
2. 健康检查
3. 故障切换
对于节点服务器:健康检查如果发现有故障的节点就会其隔离或者剔除集群,待其恢复后再重新加入
的集群当中
负载均衡器:健康检查会定时检查主机的状态(包括主机和服务的状态),如果出故障就会自动切换到备主机上
待主的恢复重新让主承载业务请求
2.2VRRP (虚拟路由冗余协议)
是针对路由器的一种备份解决方案
由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
3.LVS+Keepalived 高可用群集
主DR 服务器:192.168.19.10
备DR 服务器:192.168.19.20
web 服务器1:192.168.19.33
web 服务器2:192.168.19.40
vip:192.168.19.188
客户端:192.168.19.100
3.1配置负载调度器(主:192.168.19.10)
2. #安装服务 yum -y install ipvsadm keepalived
3. #修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak vim keepalived.conf
启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33
5. #调整proce响应参数,关闭Linux内核的重定向参数响应 vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
6. #刷新一下 sysctl -p
7. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
8.
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.10.188:80 -s rr
ipvsadm -a -t 192.168.10.188:80 -r 192.168.59.33:80 -g
ipvsadm -a -t 192.168.10.188:80 -r 192.168.59.40:80 -g
9. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm
3.2配置负载调度器 (192.168.19.20)
1. #关闭防火墙
systemctl stop firewalld.service
setenforce 0
2. #安装服务
yum -y install ipvsadm keepalived
3. #修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
4. #启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33
5. #调整proce响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
6. #刷新一下
sysctl -p
7. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
8. #清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.19.188:80 -s rr
ipvsadm -a -t 192.168.19.188:80 -r 192.168.10.33:80 -g
ipvsadm -a -t 192.168.19.188:80 -r 192.168.10.40:80 -g
9. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm
3.3配置节点服务器web1 (192.168.19.33)
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
3. #配置站点文件
vim /var/www/html/index.html
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.19.188
NETMASK=255.255.255.255
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
6. #设置路由
route add -host 192.168.19.188 dev lo:0
route -n
7. #调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
8. #刷新proc参数
sysctl -p
3.4配置节点服务器web2 192.168.19.40
1.#关闭防火墙
systemctl stop firewalld
setenforce 0
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
3. #配置站点文件
vim /var/www/html/index.html
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.19.188
NETMASK=255.255.255.255
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
6. #设置路由
route add -host 192.168.19.188 dev lo:0
route -n
7. #调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
8. #刷新proc参数
sysctl -p
4.测试
断开主DR服务器的Keepalived测试
systemctl stop keepalived.service