忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
123下一页
最近访问板块 发新帖
查看: 3815 | 回复: 23

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

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
发表于 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
发表于 2016-05-16 11:18 |显示全部楼层
回复 1# codeman
可以试试七层负载均衡 HAProxy 吗


   

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

论坛徽章:
0
发表于 2016-05-16 13:37 |显示全部楼层
另外,你可能需要virtual_server group GROUPNAME,这种方式来配置你的LVS

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
发表于 2016-05-16 14:03 |显示全部楼层
回复 2# Godbach
客户端是使用的TCP连接,不是http等七层协议。

   

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-05-19 06:20:00
发表于 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
发表于 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
发表于 2016-05-16 14:10 |显示全部楼层
回复 4# 撒加

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

论坛徽章:
0
发表于 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
发表于 2016-05-16 15:03 |显示全部楼层
回复 3# 撒加

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

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


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

本版积分规则

【有奖调查】AI时代如何迎接未知挑战?

人工智能一直在医疗行业扮演着重要角色,最早的专家系统和后来的基因诊断都是人工智能技术在医疗的行业探索。近年来,随着深度学习等技术的进步,人工智能在医疗行业的应用领域不断扩展,医学影像智能诊断、语音电子病历、癌症智能诊断等均已逐渐成为热门发展方向。
而作为人工智能重要推动力的深度学习技术的快速发展却亟需认知系统的强力支撑。
----------------------------------------
活动时间:2017年5月15日-6月5日

调查入口>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP