热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:lvsfullnat+ECMP无法同步session

本文由编程笔记#小编为大家整理,主要介绍了lvsfullnat+ECMP无法同步session相关的知识,希望对你有一定的参考价值。session简介:
本文由编程笔记#小编为大家整理,主要介绍了lvs fullnat+ECMP无法同步session相关的知识,希望对你有一定的参考价值。



session简介:

客户连接列表。由ip,port,protocol五元组确定一个session。

[[email protected] keepalived]# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 00:50 AC10611E 172.16.99.4:49684 2.2.2.3:80 172.16.98.10:5001
TCP 00:50 AC10611E 172.16.99.4:49685 2.2.2.3:80 172.16.98.10:5002
[[email protected] keepalived]#

配置了这个session同步之后,当其中一个lvs宕机,已经和客户端建立成功的连接,将继续保持会话,并不会出现一部分用户被迫断开连接的情况。


设想:

在lvs fullnat+ECMP模式中,如果有一个BACKUP机能够同步所有MASTER主机的会话,则当一台MASTER主机出现故障,此BACKUP只需要花费很短的时间(脚本配置网卡和启动ospfd的时间),就可以接替MASTER主机的地位,尽量保证已经建立的会话不中断。给与用户更好的体验。


拓扑:

技术分享图片


测试:

使用lvs_sync_daemon_interface em3命令来同步session。

vrrp_instance VI_1 {
state MASTER
interface em3
lvs_sync_daemon_interface em3
mcast_src_ip 172.16.98.11
virtual_router_id 65
priority 180
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.98.10
}

使用ipvsadm -ln --daemon来查看主备状态

[[email protected] keepalived]# ipvsadm -ln --daemon
master sync daemon (mcast=em3, syncid=65)
[[email protected] keepalived]#

测试结果:当client发起一个访问请求,主lvs正常转发,同时记录session,但是备机会强行重启

报错示例:

Aug 31 01:18:19 lvs-fullnat-two kernel: Intel GenuineIntel
Aug 31 01:18:19 lvs-fullnat-two kernel: AMD AuthenticAMD
Aug 31 01:18:19 lvs-fullnat-two kernel: Centaur CentaurHauls
Aug 31 01:18:19 lvs-fullnat-two kernel: Bios-provided physical RAM map:
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 0000000000000000 - 000000000009c000 (usable)
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 0000000000100000 - 00000000bd2f0000 (usable)
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 00000000bd2f0000 - 00000000bd31c000 (reserved)
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 00000000bd31c000 - 00000000bd35b000 (ACPI data)
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 00000000bd35b000 - 00000000c0000000 (reserved)
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 00000000fe000000 - 0000000100000000 (reserved)
Aug 31 01:18:19 lvs-fullnat-two kernel: BIOS-e820: 0000000100000000 - 0000005040000000 (usable)
Aug 31 01:18:19 lvs-fullnat-two kernel: DMI 2.7 present.

报错日志:

https://pan.baidu.com/s/105m5dN8beyg6OGRHty0SZg


后续尝试:

查看京东大神写的文章后,得到一些启发,可以部署一个cache服务器,cache服务器用于同步所有master服务器的session,在某台master出现故障的时候,cache服务器推送session到backup服务器上,以此来做到backup同步master的session。
但是文章中并没有具体介绍cache服务器怎么部署,怎么提取session。
这个思路很好,但是目前没有明确的操作方法。
http://www.infoq.com/cn/articles/jingdong-network-framework-gateway-dlvs


其他相关连接:

吴佳明(普空):LVS在大规模网络环境中的应用:http://blog.sina.com.cn/s/blog_620c47630102v2iz.html
Linux之lvs集群:https://www.jianshu.com/p/cc40b52cc5df
LVS 实验笔记1 一些基础概念:http://blog.51cto.com/sweifan/1643975
LVS+Keepalived 主备机之间客户连接列表同步问题:http://zh.linuxvirtualserver.org/node/2751
LVS-ospf集群:http://noops.me/?p=974#comment-4756


最新发现:

查看IPVS详情:
查看/proc/net目录下的

[[email protected] net]# ll ip_vs*
-r--r--r--. 1 root root 0 Sep 13 00:14 ip_vs
-r--r--r--. 1 root root 0 Sep 13 00:14 ip_vs_app
-r--r--r--. 1 root root 0 Sep 13 00:14 ip_vs_conn
-r--r--r--. 1 root root 0 Sep 13 00:14 ip_vs_conn_sync
-r--r--r--. 1 root root 0 Sep 13 00:14 ip_vs_ext_stats
-r--r--r--. 1 root root 0 Sep 13 00:14 ip_vs_stats
[[email protected] net]#

其中

[[email protected] net]# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 00:50 AC10611E 172.16.99.4:50870 2.2.2.3:80 172.16.98.10:5009
TCP 00:01 AC10611E 172.16.99.4:0 2.2.2.4:443 172.16.99.4:0
TCP 00:01 AC10611E 172.16.99.4:50872 2.2.2.4:443 172.16.98.10:5015
[[email protected] net]# cat ip_vs_conn
Pro FromIP FPrt ToIP TPrt LocalIP LPrt DestIP DPrt State Expires
TCP AC106304 C6B6 02020203 0050 AC10620A 1391 AC10611E 0050 ESTABLISHED 26
TCP AC106304 0000 02020204 01BB AC106304 0000 AC10611E 01BB NONE 0
TCP AC106304 C6B8 02020204 01BB AC10620A 1397 AC10611E 01BB ESTABLISHED 29
[[email protected] net]#

注:ip_vs_conn文件是无法编辑的.


dpvs的session同步情况:

技术分享图片


推荐阅读
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 使用虚拟机配置服务器
    本文详细介绍了如何使用虚拟机配置服务器,包括购买云服务器的操作步骤、系统默认配置以及相关注意事项。通过这些步骤,您可以高效地配置和管理您的服务器。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
author-avatar
在刀尖上起舞66_596
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有