keepalived 配置过程中遇到了一些问题,做个记录:
1、selinux的影响:keepalived配置了vrrp_script脚本总是无效
注:脚本返回值0代表成功,1或其他非0值代表失败
脚本1:
#!/bin/bash
LOCALIP=redissrv1
ALIVE=`/usr/bin/redis-cli -h $LOCALIP PING`
if [ "$ALIVE" == "PONG" ]; then
exit 0
else
exit 1
fi
脚本2:
#!/bin/bash
LOCALIP=redissrv1
PORT=6379
nc -z $LOCALIP $PORT >/dev/null 2>&1 (屏蔽这句就返回成功)
经查找和分析是执行脚本权限问题,关闭selinux就可以了,临时关闭:setenforce 0, 查看状态:getenforce,或者修改/etc/sysconfig/selinux文件把里面的一行修改为SELINUX=disabled,保存重启就可以了。
2、iptables的影响:keepalived分别在两台服务器执行脚本成功(测试两台redis均正常运行),出现两台服务器都设置了同样的虚拟IP
这个是两台服务器的keepalived数据交互的问题,由于防火墙的原因,两台服务器没有收到相互的优先级等信息,都以为是master,所以设置了虚拟IP
关闭防火墙或添加keepalived组播地址(224.0.0.18)
在iptables 中加入对vrrp报文的允许 注意书写iptables的时候是-i插入 因为通常大家的iptables最后一条默认都是拒绝的。
iptables -A INPUT -d 224.0.0.18 -j ACCEPT
vrrp广播报文使用的地址是224.0.0.18
注:centos 7版本默认使用firewall作为防火墙,不使用iptables