lvs fullnat+ECMP【5】無法同步session

session簡介:

客戶連接列表。由ip,port,protocol五元組確定一個session。

[root@lvs-fullnat-one 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
[root@lvs-fullnat-one keepalived]# 

配置了這個session同步之後,當其中一個lvs宕機,已經和客戶端建立成功的連接,將繼續保持會話,並不會出現一部分用戶被迫斷開連接的情況。

設想:

在lvs fullnat+ECMP模式中,如果有一個BACKUP機能夠同步所有MASTER主機的會話,則當一臺MASTER主機出現故障,此BACKUP只需要花費很短的時間(腳本配置網卡和啓動ospfd的時間),就可以接替MASTER主機的地位,儘量保證已經建立的會話不中斷。給與用戶更好的體驗。

拓撲:

lvs fullnat+ECMP【5】無法同步session

測試:

使用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來查看主備狀態

[root@lvs-fullnat-one keepalived]# ipvsadm -ln --daemon
master sync daemon (mcast=em3, syncid=65)
[root@lvs-fullnat-one 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目錄下的

[root@lvs-fullnat-one 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
[root@lvs-fullnat-one net]# 

其中

[root@lvs-fullnat-one 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
[root@lvs-fullnat-one 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
[root@lvs-fullnat-one net]# 

注:ip_vs_conn文件是無法編輯的.

dpvs的session同步情況:

lvs fullnat+ECMP【5】無法同步session

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章