LVS 筆記


關於LVS的持久鏈接(Persistence)

 

關於設置方式:

1、指令:  ipvsadm 中的參數  -p  N   N單位爲秒】

2、在keepalived配置文件中通過設置參數:persistence_timeout  N 來設置

3、在圖像化配置和管理工具piranha中,如下圖:


wKioL1Ri_s7z9s77AAHPWAeDfik691.jpg

注意:

如果我們僅僅配置了 persistence的相關參數設置,那麼默認是針對一臺主機,如果我們設置了類似“Persistence Network Mask”這種參數,那麼該持久鏈接就是針對一個網段,即只要一個網段的第一個客戶端鏈接過來,DR定位到一臺RS之後,那麼在根據此客戶端的ip和我們設置的“Persistence Network Mask”參數得到的整個網段中的客戶端都會被定位到同一臺RS。【關於此參數的其他配置方式,請自行查閱】

 

相關參數:

1、  Ipvsadm  -l  --timeout    對應的是  TCP超時   FIN_WAIT   UDP超時

Ipvsadm  --set   N1 N2 N3  進行設置

2、  Persistence 參數

 

ipvsadm  -l  ,我們看到的一個時間是 persistence參數


wKioL1Ri_w7Cg6JeAADZ5VuEuA0903.jpg


分析【persistent  TCP超時 FIN_WAIT  Activeconn  InActconn

 

當我們配置了persistent之後,一個新客戶端發起鏈接之後,DR會創建一個叫做NONE的記錄來標示一個客戶端


wKioL1Ri_3WAEerLAADxuYxbTHM774.jpg

此時 NONE 對應的expire值persistent值。

FIN_WAIT對應的expire值則是我們在ipvsadm  -l –timeout 看到的中間的那個值。

ESTABLISHED對應的expire值則是我們在ipvsadm  -l –timeout 看到的左邊的那個值。

這三個值創建之後便開始倒計時。

 

它們的關係和作用是:


1、  只要NONE存在,那麼來自這個客戶端的鏈接都會被定位到一臺特定的RS

2、  ESTABLISHED 會在某個瞬間變爲FIN_WAIT,並以FIN_WAIT的初始值開始倒計時。

3、  如果NONE倒計時完畢,而仍然存在與此客戶端相關的FIN_WAIT,那麼NONE會被初始化爲60s,並重新開始倒計時,如此循環直到所有的相關FIN_WAIT消失。

4、  Activeconn 的值 體現了表中所有狀態爲 ESTABLISHED的鏈接數量。

5、  NotActiveconn的值 體現了表中所有狀態爲FIN_WAIT的鏈接數量。


Keepalived  piranha的區別:

1、  Keepalived的主備有priority設置,主DR會更高,並且會有MASTERBACKUP來標示角色,其他參數相同。工作時,永遠以主DR爲主即只要主DR存在並可用,則永遠是主DR工作。而piranha則不同,其配置文件在主備DR上完全相同,且沒有等級之分,即當備份DR在工作時,即使主DR上線,備份DR仍會繼續工作。

2、  Keepalived的備份DR上,一旦開啓服務, 則相關的配置會立刻生效,例如VIP的配置、lvs相關VSRS的添加等,但不會參與工作,只有主DR宕機時纔會接手。

piranha則不同,只有工作中的DR纔會配置生效。

3、  關於VIP的配置方式不同: keepalived是在一個物理網卡上配置第二個ip【使用ifconfig看不到,只能通過ip address show 才能看到】,而piranha則是通過eth0:1這種網卡別名的形式進行配置的。



======================================================================


注意點:

1、DR模式:RS(Real Server)無需針對VIP另行添加路由【eg: route add -host ${VIP} dev lo:1 】

2、DR模式:分發服務器無需對VIP的掩碼做32位處理,無需添加針對VIP的路由,更無需開啓轉發功能。

3、ipvsadm --set 7200 5 60這個值(7200)如果設置的太小,client將會受到“connetct reset by peer”類似的錯誤。


============================================================================


ipvsadm命令選項解釋:

 

-A --add-service   在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增加一臺新的虛擬服務器。

-E --edit-service   編輯內核虛擬服務器表中的一條虛擬服務器記錄。

-D --delete-service   刪除內核虛擬服務器表中的一條虛擬服務器記錄。

-C --clear      清除內核虛擬服務器表中的所有記錄。

-R --restore   恢復虛擬服務器規則

-S --save       保存虛擬服務器規則,輸出爲-R 選項可讀的格式

-a --add-server       在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器記錄。也就是在一個虛擬服務器中增加一臺新的真實服務器

-e --edit-server       編輯一條虛擬服務器記錄中的某條真實服務器記錄

-d --delete-server    刪除一條虛擬服務器記錄中的某條真實服務器記錄

-L|-l --list       顯示內核虛擬服務器表

-Z --zero        虛擬服務表計數器清零(清空當前的連接數量等)

--set tcp tcpfin udp      設置連接超時值

--start-daemon            啓動同步守護進程。他後面可以是master 或backup,用來說明LVS Router 是master 或是backup。在這個功能上也可以採用keepalived的VRRP 功能。

--stop-daemon            停止同步守護進程

-h --help                    顯示幫助信息

其他的選項:

-t --tcp-service service-address     說明虛擬服務器提供的是tcp 的服務[vip:port] or [real-server-ip:port]

-u --udp-service service-address   說明虛擬服務器提供的是udp 的服務[vip:port] or [real-server-ip:port]  

-f --fwmark-service fwmark          說明是經過iptables 標記過的服務類型。

-s --scheduler scheduler              使用的調度算法,有這樣幾個選  rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是: wlc.

-p --persistent [timeout]             持久穩固的服務。這個選項的意思是來自同一個客戶的多次請求,將被同一臺真實的服務器處理。timeout 的默認值爲300 秒。

-M --netmask            netmask persistent granularity mask

-r --real-server server-address          真實的服務器[Real-Server:port]

-g --gatewaying           指定LVS 的工作模式爲直接路由模式(也是LVS 默認的模式)

-i --ipip                       指定LVS 的工作模式爲隧道模式

-m --masquerading      指定LVS 的工作模式爲NAT 模式

-w --weight weight      真實服務器的權值

--mcast-interface interface     指定組播的同步接口

-c --connection                     顯示LVS 目前的連接 如:ipvsadm -L -c

--timeout        顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout

--daemon       顯示同步守護進程狀態

--stats      顯示統計信息

--rate       顯示速率信息

--sort       對虛擬服務器和真實服務器排序輸出

--numeric -n      輸出IP 地址和端口的數字形式


==================================================


Keepalived 配置文件(/etc/keepalived/keepalived.conf)模板【DR】:僅供參考


  1. global_defs {

  2.    router_id LVS_STUN

  3. }


  4. vrrp_sync_group VGM {

  5.    group {

  6.        VI_1

  7.    }

  8. }


  9. vrrp_instance VI_1 {

  10.     state MASTER #//負載均衡器的角色

  11.     #state BACKUP #//負載均衡器的角色

  12.     interface eth0 #//承載VIP地址的物理接口

  13.     lvs_sync_daemon_inteface eth0 #//虛擬路由器的ID號,每個熱備組保持相同

  14.     virtual_router_id 51 

  15.     priority 200 #//競選優先級,數字越大優先級越高

  16.     #priority 100 #//競選優先級,數字越大優先級越高

  17.     advert_int 5 #//通告間隔秒數(心跳頻率)

  18.     authentication { #//本VRRP組的認證信息

  19.         auth_type PASS

  20.         auth_pass 1111

  21.     }

  22.     virtual_ipaddress {

  23.         10.57.220.155 #//熱備所針對的虛擬地址(VIP),可以有多個

  24.     }

  25. }


  26. virtual_server 10.57.220.155 81 { #//虛擬服務器的IP地址、端口。 可多個服務

  27.     delay_loop 2 #//健康檢查的間隔時間

  28.     lb_algo wrr #//負載調度算法(wrr爲根據權重輪詢,其他參見ipvsadm手冊)

  29.     lb_kind DR #//負載均衡類型,常用的爲DR、NAT方式

  30. # persistence_timeout 1 #//連接保持時間,適用於動態Web站點、FTP站點等情況

  31.     protocol TCP #//協議類型


  32.     real_server 10.57.220.20 81 { #//真實服務器的IP地址、端口

  33.         weight 1 #//節點權重

  34.         TCP_CHECK {

  35.             connect_timeout 10 #//連接超時

  36.             nb_get_retry 3 #//重試次數

  37.             delay_before_retry 3 #//重試間隔

  38.         }

  39.     }

  40.     real_server 10.57.220.26 81 {

  41.         weight 1

  42.         TCP_CHECK {

  43.             connect_timeout 10

  44.             nb_get_retry 3

  45.             delay_before_retry 3

  46.         }

  47.     }

  48. }

  49. #可配置多個

  50. #virtual_server 172.19.1.19 3478 {

  51. # delay_loop 2

  52. # lb_algo wrr

  53. # lb_kind DR

  54. # persistence_timeout 10

  55. # protocol UDP#


  56.     #real_server 172.19.1.15 3478 {

  57.      # weight 1

  58.      # TCP_CHECK {

  59.       # connect_timeout 10

  60.       # nb_get_retry 3

  61.             delay_before_retry 3

  62.        # }

  63.     #}

  64.     #real_server 172.19.1.16 3478 {

  65.     # weight 1

  66.     #TCP_CHECK {

  67.      # connect_timeout 10

  68.       # nb_get_retry 3

  69.        # delay_before_retry 3

  70.        # }

  71.     #}

  72. #}




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