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,不会形成广播风暴。