免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 25720 | 回复: 23
打印 上一主题 下一主题

[LVS+Keepalived]真实服务器之间不能漂移 [复制链接]

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-15 16:12 |只看该作者 |倒序浏览
使用LVS+Keepalived做负载均衡,C/S架构,搭建了两个节点对外提供服务,在测试真实服务器宕机时,服务可自动漂移至另一台真实服务器,发现一个奇怪的问题,具体描述如下:
环境:
VIP:10.98.10.1
RIP1:10.98.10.2
RIP2:10.98.10.3

客户端通过两个端口访问服务端,一个是18001,用于通信,一般是一个tcp连接;一个是18002,用于上传大文件,一般会有5个线程同时工作,所以会有5个tcp连接。

因为同一客户端会通过两个端口去访问服务端,并且希望两个端口的连接去向是同一台真实服务器,所以使用了防火墙标记法把两个端口打包成一个服务了。

测试时发现如果在LVS的规则中加了持久性连接选项(ipvsadm -A -t VIP -s rr -p 300),这样的话来自同一客户端的所有tcp连接去向都是同一台服务器。假如有两个客户端A和B连接,则会发现每个客户端连接了一台真实服务器,比如A连接10.98.10.2,B连接10.98.10.3。但是如果把其中一台真实服务器停掉(10.98.10.3),就会发现B客户端还是会一直尝试去连接10.98.10.3,而不会自动漂移至10.98.10.2,通过ipvsadm -Lnc命令可观察到。

但如果在LVS的规则中不加持久性连接选项(ipvsadm -A -t VIP -s rr),这样的话发现如果其中某台服务器宕机,则服务会漂移至另一台真实服务器,继续提供服务;但是又有另外一个问题,发现客户端的18002端口的5个线程的tcp连接会平均分配到两台真实服务器上,这不是想要的结果。

琢磨LVS和Keepalived配置很久了,尝试着改了不少方式,但都不能完美的实现,所以想请问一下怎么配置,既能保证同一客户端连接同一台真实服务器,又能够实现真实服务器的自动失败切换功能,谢谢!

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2016-05-16 11:18 |只看该作者
回复 1# codeman
可以试试七层负载均衡 HAProxy 吗


   

论坛徽章:
0
3 [报告]
发表于 2016-05-16 13:34 |只看该作者
你两个节点上只是部署了LVS+keepalived?没有其他的服务进行复用?
另外,你启用持久连接后,超市时间是300秒,所以你让10.98.10.3 down了后,所以B还是会连接10.98.10.3,等300秒后才会断开连接,然后连接10.98.10.2

论坛徽章:
0
4 [报告]
发表于 2016-05-16 13:37 |只看该作者
另外,你可能需要virtual_server group GROUPNAME,这种方式来配置你的LVS

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
5 [报告]
发表于 2016-05-16 14:03 |只看该作者
回复 2# Godbach
客户端是使用的TCP连接,不是http等七层协议。

   

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
6 [报告]
发表于 2016-05-16 14:06 |只看该作者
回复 3# 撒加
不好意思,我可能没说清楚。

LVS也有主备两台服务器,一个是10.98.10.4,一个是10.98.10.5,LVS和Keepalived都是安装在这两台机器上,VIP是配置在这。

服务端程序是部署在两台真实服务器上,客户端都通过访问对外的VIP来做负载均衡。


   

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
7 [报告]
发表于 2016-05-16 14:08 |只看该作者
回复 3# 撒加

即使300秒超时后也不会连接另外一台服务器,另外也配置了参数expire_quiescent_template=1,也还是不工作,也是一直不太理解的地方。
   

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
8 [报告]
发表于 2016-05-16 14:10 |只看该作者
回复 4# 撒加

以前有加,后来查资料有提到这个配置参数,好像是用于有多组LVS的时候。
   

论坛徽章:
0
9 [报告]
发表于 2016-05-16 14:39 |只看该作者
回复 7# codeman


    expire_nodest_conn的配置是什么,方便的话能把你的keepalived配置贴出来,以及ipvs-sysctl的都发出来

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2016-05-16 15:03 |只看该作者
回复 3# 撒加

HAProxy 中对于这种情况,会及时感知,并且让 persitence 失效的。

对于 down 的 RS,其上的 pesistence 逻辑也应该及时失效,而不是维持到超时结束。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP