keepalived+lvs FAQ

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值