使用keepalived保证haproxy双活(一台haproxy挂了自动切换到另外一台haproxy上), 使用haproxy保证后端各服务器流量均衡
环境
虚拟IP: 172.23.6.2
服务器A: 172.23.6.200 部署有keepalived、haproxy
服务器B: 172.23.6.201 部署有keepalived、haproxy
服务器C: 172.23.6.203 部署有nginx(使用nginx作为后端web服务测试)
服务器D: 172.23.6.204 部署有nginx(使用nginx作为后端web服务测试)
另外,各服务器的防火墙和selinux都关闭
安装
服务器C/D
|
|
然后通过web访问:172.23.6.203(确保显示:172.23.6.203 server-master) 和 172.23.6.204(确保显示:172.23.6.204 server-backup)
服务器A/B
|
|
配置
haproxy配置
服务器A
cat /etc/haproxy/haproxy.cfg
然后启动haproxy服务
这时候访问:172.23.6.200 ,页面会在: 172.23.6.203 server-master 和 172.23.6.204 server-backup 来回切换
服务器B
与服务器A的haproxy配置一致,直接拷贝过来即可.
然后启动haproxy服务
这时候访问:172.23.6.201 ,页面会在: 172.23.6.203 server-master 和 172.23.6.204 server-backup 来回切换
备注
如果不配置keepalived,这时候172.23.6.200挂了,流量就没法自动切换到172.23.6.201上
keepalived配置
服务器A
cat /etc/keepalived/keepalived.conf
添加haproxy服务进程判断脚本,如果进行不存在,则关闭keepalived服务,虚IP就会自动飘移到别的keepalived机器上
cat /etc/keepalived/haproxy_check.sh
添加脚本执行权限
启动keepalived服务
通过:ip a, 命令可以看到在eth0 网口生成了虚IP地址: 172.23.6.2
web浏览器访问:172.23.6.2 ,页面会在: 172.23.6.203 server-master 和 172.23.6.204 server-backup 来回切换
服务器B
cat /etc/keepalived/keepalived.conf
添加haproxy服务进程判断脚本
cat /etc/keepalived/haproxy_check.sh
添加脚本执行权限
启动keepalived服务
高可用验证
- 把服务器C上的nginx服务关闭1systemctl stop nginx
页面访问: 172.23.6.2,会一直显示: 172.23.6.204 nginx-backup
再把服务器C上的nginx服务开启
这时候访问:172.23.6.200 ,页面又会在: 172.23.6.203 server-master 和 172.23.6.204 server-backup 来回切换
- 把服务器A上面的haproxy服务关闭1systemctl stop haproxy
在服务器A上执行
会发现在eth0 网口的虚IP(172.23.6.2)已经消失
我们到服务器B上执行
会发现在eth0上有虚IP(172.23.6.2),虚IP自动飘移到服务器B上了
如果把服务器A上的haproxy和keepalived分别启动
必须先启动haproxy,因我们在keepalived里做健康检查,如果先启动keepalived,发现haproxy服务不存在,又给把keepalived给关闭
在服务器A执行:
发现在eth0上有虚IP(172.23.6.2),虚IP又自动飘移回到服务器A上了