1、主备无法切换VIP
配置完主备以后无法切换VIP 报密码错误 确认两遍密码绝对一样 后来发现密码是3位的 后来改成4位的即可。
2、one or more VIP associated with VRID mismatch actual master advert
提示one or more VIP associated with VRID mismatch actual master advert 是局域网内有其他的keepalived的机器使用了相同的虚拟路由id ;更改后 keepalive正常。
3、日志报sync问题
两台机器互为热备时,如何日志报sync问题,则尝试去掉lvs_sync_daemon_interface bond0
4、检查iptables和selinux的设置情况
$ sudo service iptables stop
$ sudo setenforce 0
setenforce: SELinux is disabled
如果非要开启iptables的话,需要作些设定
iptables -I INPUT -i eth1 -d 224.0.0.0/8 -j ACCEPT
service iptables save
keepalived使用224.0.0.18作为Master和Backup健康检查的通信IP
5、lvs查看命令
查看LVS上当前的所有连接
# ipvsadm -Lcn
或者
#cat /proc/net/ip_vs_conn
查看虚拟服务和RealServer上当前的连接数、数据包数和字节数的统计值,则可以使用下面的命令实现:
# ipvsadm -l --stats
查看包传递速率的近似精确值,可以使用下面的命令:
# ipvsadm -l --rate 6、keepalived长连接
keepalived 长连接的配置主要在三个地方:
(1)、client端的SoTimeout, 就java来说就是java.net.Socket的setSoTimeout方法设置的, setSoTimeout(0)就是表明超时时间无限大。这个值是为读取阻塞设置超时的。
(2)、lvs的设置:
查看是ipvsadm --list --timeout, 比如我的机器就会返回如下结果:
# ipvsadm --list --timeout
Timeout (tcp tcpfin udp): 7200 5 60
这就表明我的tcp session的timeout时间是7200秒。
设置timeout:
ipvsadm --set 7200 5 60
这个值如果设置太小,你的client将会收到 connection reset by peer此类的错误提示。
(3)、keepalived的配置:
就是virtual_server的persistence_timeout,意思就是在这个一定时间内会讲来自同一用户(根据ip来判断的)route到同一个real
server。对于长连接类的应用,你肯定需要这么做。配置值最好小于等于lvs的配置的timeout。
7、keepalived虚拟IP绑定在备机,但网络不通的情况
经常会出现使用keepalived的时候主机挂了,备机显示绑定了VIP。但是此时实际还是不能访问。
其实就是网关的arp缓存没有刷新
在服务器上执行一下就行了。
可以修改keepalived的配置文件,vrrp_instance段添加
notify_master /root/arp.sh
脚本的内容就是
# cat /root/arp.sh
#!/bin/bash
VIP=10.xx.xx.xx
GATEWAY=10.xx.xx.yy
/sbin/arping -I eth1 -c 5 -s $VIP $GATEWAY &>/dev/null
8、停止 keepalived:/sbin/service: line 66: 6980 已终止 env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
(1)、在keepalived.conf的配置文件中调用的脚本有重复关闭keepalived的操作,就会报此问题,不重复关闭即可。
9、service XX stop 时出现异常问题
编写后台进程的管理脚本,使用service deamon-name stop的时候,出现如下提示:
/sbin/service: line 66: 23299 Terminated env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
原因是:
我把管理脚本的名称设为和后台进程名称一样,即:
后台进程名称:deamon-name,
脚本名称:/etc/init.d/deamon-name
脚本中有一句:
killall deamon-name
执行service deamon-name stop,本意是调用deamon-name脚本,结束后台进程deamon-name,结果连“service deamon-name stop”这条进程也被结束了。
解决方法:
为后台进程与脚本设置不同名称。
10、在两台物理服务器上既有lvs+keepalived又有应用服务的分发风暴问题
1、因为lvs是基于内核的服务,所以两台物理服务器上服务都是启动,当两边都启动keepalived的时候,两台服务器服务器上ipvs服务都启动了,而且都已经加载了ipvs-dr策略,这个可以再两台服务器上涌ipvsadm命令看到都是这一台状态:
root@node6 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
-> RemoteAddressort Forward Weight ActiveConn InActConn
TCP 172.16.41.31:http rr persistent 50
-> node6.example.com:http Local 3 0 1
-> node1.example.com:http Route 3 0 0
2、主lvs上面起了浮动ip,当数据包转发到备lvs时,由于备机lvs上面策略也启动了,所以备机接受到数据包以后也会转发到主lvs上面,所以就形成了广播风暴!!!!
在备机lvs抓包可进行验证。
3、heartbeat+lvs再两台物理服务器上为什么不会出现这个情况:
因为heartbeat服务启动的时候不会让备机lvs的服务加载策略,在备机lvs上执行ipvsadm命令可以确认到,所以当数据包转发到备机lvs的时候,备机不会转发到主lvs,不会形成广播风暴。