安装keepalived高可用(双实例)
首先,我们要先配置好nginx反向代理。
然后准备一个主负载均衡,一个从负载均衡,两个web服务器。
一、先在主从负载均衡上各安装两个网卡,一个公网,一个同网段私网。
配置: cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth1
vim ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTOLLED=yes
BOOTPROTO=dhcp
ifup eth1
ip link
二、安装keepalived安装包。
yum -y install keepalived
配置文件: /etc/keepalived/keepalived.conf
启动脚本: /etc/init.d/keepalived start
检查: ps -ef | grep keepalived | grep -v grep (当有三个进程时,证明安装正确)
ip add | grep 192.168 (默认情况会启动三个VIP地址)
检测后关闭服务: /etc/init.d/keepalived stop
将上述测试同时在其他服务器上进行。
三、配置文件
vim /etc/keepalived/keepalived.conf
将interface 改为收发心跳包的网卡(eth1)
将VIP改为公网网卡(eth0)
启动命令: /etc/init.d/keepalived start
查看: ifconfig (当主活着时,备上没有显示,只有主坏了,备上才会出现)
四、双实例
将主配置文件和备配置文件分别设置一个主和备,提高资源利用率,注意确定主Master和备Slave,不要写两个主,会出现裂脑现象。
主配置文件: 要再文件中分别设置一个主Master和备Slave,设置不同的优先级,id号,IP号。
备配置文件:主和备的位置正好相反,优先级相反。
进行测试,双实例配置完成。
五、如何在防火请开启的情况下接受到心跳包
首先确定是否有tcpdump命令,没有先安装。
然后抓包: tcpdump -n -i eth1 vrrp
抓包 禁止反向解析 指定网卡
注意:每个keepalived对之间用不通的组播地址,就不会产生冲突,最好不通实例的通信认证密码也不同,防止裂脑现象的发生。
网线和防火墙的故障容易导致裂脑现象的发生,建多根冗余线可以减轻该情况的发生。
如何改动可以防备裂脑现象:
假设网络正常,keepalived正常,nginx出现故障:
我们需要在Master上写一个脚本,解决keepalived只能检测物理故障的bug:
若无nginx监听80端口存在,那么就停掉keepalived,释放VIP。
vim detection_nginx.sh
#! /bin/sh
while true
do
if [`netstat -antup | grep nginx | wc -l` -ne 1 ];then
/etc/init.d/keepalived stop
fi
sleep 5
done
检测脚本是否成功:
后台执行脚本: sh detection_nginx.sh &
检查文件: ps -ef | grep detection | grep -v grep
确认nginx和keepalived是否正常:
netstat -antup | grep nignx
/etc/init.d/keepalived status
然后模拟nginx故障,看IP是否发生飘移。
如何验证是否发生了裂脑现象:
ping一下私网IP: 检测网线是否损坏
telnet IP 80端口号: 检测服务器是否损坏