LVS集群講解

目錄

  • LVS介紹

  • LVS集群類型

  • LVS調度算法

  • ipvsadm/ipvs

  • LVS-NAT模型演練

  • LVS-DR模型演練

  • LVS定義多集群

  • FWM實現多集群統一調度

  • LVS持久連接 

    • 每端口持久

    • 每FWM持久

    • 每客戶端持久

LVS介紹

一般來說,LVS采用三層結構:負載調度器、服務器池、共享存儲。工作在TCP/IP協議的四層,其轉發是依賴于四層協議的特征進行轉發的,由于其轉發要依賴于協議的特征進行轉發,因此需要在內核的TCP/IP協議棧進行過濾篩選,可想而知,這就需要在內核的模塊來完成,而這樣的過濾轉發規則又是由管理員進行定義的,所以,LVS就是兩段式的架構設計,在內核空間中工作的是”ipvs“,而在用戶空間中工作的,用來定義集群服務規則的是”ipvsadm“。這就很容易想到iptables而LVS正好工作在iptables的input鏈上。

LVS的組成

ipvsadm:用于管理集群服務的命令行工具,工作于Linux系統中的用戶空間。
ipvs:為lvs提供服務的內核模塊,工作于內核空間 (相對于是框架,通過ipvsadm添加規則,來實現ipvs功能)。 
注:在linux內核2.4.23之前的內核中模塊默認是不存在的,需要自己手動打補丁,然后把此模塊編譯進內核才可以使用此功能。

LVS集群類型中的術語

VIP:Director用來向客戶端提供服務的IP地址,也是DNS解析的IP 
RIP:集群節點(后臺真正提供服務的服務器)所使用的IP地址 
DIP:Director用來和RIP進行交互的IP地址 
CIP:公網IP,客戶端使用的IP

lvs集群的類型

lvs-nat:網絡地址轉換 NetworkAddress Translation,修改請求報文的目標IP 
lvs-dr:直接路由 Direct Routing,操縱封裝新的MAC地址; 
lvs-tun:IP隧道 IP Tunneling,在原請求IP報文之外新加一個IP首部; 
lvs-fullnat:修改請求報文的源和目標IP;

lvs-nat

多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發; 
(1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP; 
(2)請求報文和響應報文都必須經由Director轉發;Director易于成為系統瓶頸; 
(3)支持端口映射,可修改請求報文的目標PORT; 
(4)vs必須是Linux系統,rs可以是任意系統;

Q0I4_F]{T_S0B[Y`_RE8SBI.png

lvs-dr

通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變; 
Director和各RS都得配置使用VIP; 
(1) 確保前端路由器將目標IP為VIP的請求報文發往Director: 
    (a) 在前端網關做靜態綁定; 
    (b) 在RS上使用arptables; 
    (c) 在RS上修改內核參數以限制arp通告及應答級別; 
        arp_announce 
        arp_ignore 
(2) RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一IP網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director; 
(3) RS跟Director要在同一個物理網絡; 
(4) 請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client; 
(5) 不支持端口映射;

}VX8O%@S~[EZZWYT(MY7$U1.png

lvs-tun

轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS; 
(1) DIP, VIP, RIP都應該是公網地址; 
(2) RS的網關不能,也不可能指向DIP; 
(3) 請求報文要經由Director,但響應不能經由Director; 
(4) 不支持端口映射; 
(5) RS的OS得支持隧道功能;

lvs-fullnat

通過同時修改請求報文的源IP地址和目標IP地址進行轉發; 
    CIP –> DIP 
    VIP –> RIP 


(1) VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;因此,RIP的網關一般不會指向DIP; 
(2) RS收到的請求報文源地址是DIP,因此,只需響應給DIP;但Director還要將其發往Client; 
(3) 請求和響應報文都經由Director; 
(4) 支持端口映射;

注意:此類型默認不支持;

lvs調度算法

靜態方法:僅根據算法本身進行調度;

(1) RR:roundrobin,輪詢; 
    輪詢調度算法的原理是每一次把來自用戶的請求輪流分配給內部中的服務器,從1開始,直到N(內部服務器個數),然后重新開始循環。算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度。缺點:是不考慮每臺服務器的處理能力。 

 
(2) WRR:Weighted RR,加權輪詢; 
    由于每臺服務器的配置、安裝的業務應用等不同,其處理能力會不一樣。所以,我們根據服務器的不同處理能力,給每個服務器分配不同的權值,使其能夠接受相應權值數的服務請求。 

 
(3) SH:Source Hashing; 
    實現session sticy,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定; 
簡單的說就是有將同一客戶端的請求發給同一個real server,源地址散列調度算法正好與目標地址散列調度算法相反,它根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的并且沒有超負荷,將請求發送到該服務器,否則返回空。它采用的散列函數與目標地址散列調度算法的相同。它的算法流程與目標地址散列調度算法的基本相似,除了將請求的目標IP地址換成請求的源IP地址。 

 
(4) DH:Destination Hashing; 
    目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS; 
將同樣的請求發送給同一個server,一般用戶于緩存服務器說,簡單的說,LB集群后面又加了一層,在LB與real server之間加了一層緩存服務器,當一個客戶端請求一個頁面時,LB發給cache1,當第二個客戶端請求同樣的頁面時,LB還是發給cache1,這就是我們所說的,將同樣的請求發給同一個server,來提高緩存的命中率。目標地址散列調度算法也是針對目標IP地址的負載均衡,它是一種靜態映射算法,通過一個散列(Hash)函數將一個目標IP地址映射到一臺服務器。目標地址散列調度算法先根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

動態方法:主要根據每RS當前的負載狀態及調度算法進行調度;

(1) LC:leash-connection 最少連接 
    最少連接調度算法是把新的連接請求分配到當前連接數最小的服務器,最小連接調度是一種動態調度短算法,它通過服務器當前所活躍的連接數來估計服務器的負載均衡,調度器需要記錄各個服務器已建立連接的數目,當一個請求被調度到某臺服務器,其連接數加1,當連接中止或超時,其連接數減一,在系統實現時,我們也引入當服務器的權值為0時,表示該服務器不可用而不被調度。此算法忽略了服務器的性能問題,有的服務器性能好,有的服務器性能差,通過加權重來區分性能,所以有了下面算法wlc。 
簡單算法:active*256+inactive (誰的小,挑誰)

(2) WLC:加權最少連接 
    加權最小連接調度算法是最小連接調度的超集,各個服務器用相應的權值表示其處理性能。服務器的缺省權值為1,系統管理員可以動態地設置服務器的權限,加權最小連接調度在調度新連接時盡可能使服務器的已建立連接數和其權值成比例。由于服務器的性能不同,我們給性能相對好的服務器,加大權重,即會接收到更多的請求。

簡單算法:(active*256+inactive)/weight(誰的小,挑誰)

(3) SED:Shortest Expection Delay,最少期望延遲 
    不考慮非活動連接,誰的權重大,我們優先選擇權重大的服務器來接收請求,但會出現問題,就是權重比較大的服務器會很忙,但權重相對較小的服務器很閑,甚至會接收不到請求,所以便有了下面的算法nq。

基于wlc算法,簡單算法:(active+1)*256/weight (誰的小選誰)

(4) nq:never queue 永不排隊 
    在上面我們說明了,由于某臺服務器的權重較小,比較空閑,甚至接收不到請求,而權重大的服務器會很忙,所此算法是sed改進,就是說不管你的權重多大都會被分配到請求。簡單說,無需隊列,如果有臺real server的連接數為0就直接分配過去,不需要在進行sed運算。

(5) LBLC:Locality-Based LC,基于局部性的最少連接 
    基于局部性的最少連接算法是針對請求報文的目標IP地址的負載均衡調度,主要用于Cache集群系統,因為Cache集群中客戶請求報文的目標IP地址是變化的,這里假設任何后端服務器都可以處理任何請求,算法的設計目標在服務器的負載基本平衡的情況下,將相同的目標IP地址的請求調度到同一個臺服務器,來提高服務器的訪問局部性和主存Cache命中率,從而調整整個集群系統的處理能力。

(6) LBLCR:LBLC with Replication,基于局部性的帶復制功能的最少連接 
    基于局部性的帶復制功能的最少連接調度算法也是針對目標IP地址的負載均衡,該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按“最小連接”原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按“最小連接”原則從這個集群中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程度。

ipvsadm/ipvs

(1)管理集群服務

ipvsadm -A|E|D -t|u|f service-address [-s scheduler] [-p [timeout]] 
    -A添加 –E 修改 –D刪除 

 
    service-address: 
        -t:tcp協議的集群 service-address后面必須寫成ip:port 
        -u:udp協議的集群 service-address后面必須寫成ip:port 
        -f:fwm防火墻的標記 service-address后面必須寫成marknumber 

 
    -s:指定調試算法

    -p:保持時長

(2)管理集群中的RS

ipvsadm -a|e|d -t|u|f service-address -r server-address [-g|i|m] [-w weight] 
    -a添加 -e修改 –d刪除 

 
    service-address:實現定義好的某集群服務 
        -t|u|f: 
            -t: TCP協議的端口,VIP:TCP_PORT 
            -u: TCP協議的端口,VIP:UDP_PORT 
            -f:firewall MARK,是一個數字; 

 
    server-address:某rs的地址在nat模型中可使用ip:port實現端口映射 
        rip[:port] 

 
    [-g|i|m] 
        -g: gateway, dr類型 
        -i: ipip, tun類型 
        -m: masquerade, nat類型 

 
    -w weight:權重;

(3)查看

ipvsadm -L | ipvsadm -l …. 
    -n 顯示主機地址和端口為數字格式 
    -c 顯示多少個客戶連接進來 
    –stats 顯示進出站數據 
    –rate 顯示速率 
    –timeout 顯示每一個tcp tcpfin udp 的超時時間值 
    –deamon 顯示進程信息 
    –sort 顯示排序規則默認是升序的

(4)管理規則

清空所有ipvs規則 
    ipvsadm -C 

 
保存定義的規則:建議保存至/etc/sysconfig/ipvsadm
    ipvsadm -S = ipvsadm-save 
    ipvsadm -S > /PATH/TO/SOMEFILE 

    systemctl stop ipvsadm.service #CentOS 7

    service ipvsadm stop  #CentOS 6

 
載入當前規則 
    ipvsadm -R = ipvsadm-restore 
    ipvsadm -R < /PATH/TO/SOMEFILE

    systemctl restart ipvsadm.service #CentOS 7

    service ipvsadm restart  #CentOS 6

LVS-NAT模式演練

拓撲如下:

C75FV799A2F2Q)265A9UDHX.png

在兩臺RS上配置web服務

FO}%44XV1O637WU407WFZ]P.png(B}G2{_X@)P}_S(UTU%9V`W.png

lvs主機上的操作

安裝ipvsadm
[root@lvs ~]# yum -y install ipvsadm  #安裝ipvsadm命令,如果已安裝可省略此步驟
開啟內核轉發
[root@lvs ~]# echo 1 > /proc/sys/net/ipv4/ip_forward  #開啟轉發功能
[root@lvs ~]# cat /proc/sys/net/ipv4/ip_forward   #驗證是否開啟
1
配置lvs-nat模型
[root@lvs ~]# ipvsadm -A -t 100.100.100.1:80 -s rr
[root@lvs ~]# ipvsadm -a -t 100.100.100.1:80 -r 10.1.68.1 -m -w 1
[root@lvs ~]# ipvsadm -a -t 100.100.100.1:80 -r 10.1.68.2 -m -w 2
[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  100.100.100.1:80 rr
 -> 10.1.68.1:80                 Masq    1      0          0        
 -> 10.1.68.2:80                 Masq    2      0          0        
[root@lvs ~]#
保存lvs規則
[root@lvs ~]# ipvsadm-save 
-A -t 100.100.100.1:http -s rr
-a -t 100.100.100.1:http -r 10.1.68.1:http -m -w 1
-a -t 100.100.100.1:http -r 10.1.68.2:http -m -w 2

驗證

通過VIP訪問

ATH[W{5G(9NP}PK`5RY~P]W.png

再次刷新可調度至RS2

JANR6~[Q)5P$O(LAM48JU37.png

LVS-DR模型演練

拓撲如下:

@U9GU4$Z{T_`CVHUK1X_KO9.png

在兩臺RS上配置web服務

FO}%44XV1O637WU407WFZ]P.png(B}G2{_X@)P}_S(UTU%9V`W.png

關閉arp響應

RS1
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
RS2
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

說明

dr模型中,各主機上均需要配置VIP,解決地址沖突的方式有三種: 
    (1) 在前端網關做靜態綁定; 
    (2) 在各RS使用arptables; 
    (3) 在各RS修改內核參數,來限制arp響應和通告的級別; 
        限制響應級別:arp_ignore 
            0:默認值,表示可使用本地任意接口上配置的任意地址進行響應; 
            1: 僅在請求的目標IP配置在本地主機的接收到請求報文接口上時,才給予響應; 
        限制通告級別:arp_announce 
            0:默認值,把本機上的所有接口的所有信息向每個接口上的網絡進行通告; 
            1:盡量避免向非直接連接網絡進行通告; 
            2:必須避免向非本網絡通告;

配置VIP

RS1配置
[root@RS1 ~]# ifconfig lo:0 10.1.100.100 broadcast 10.1.100.100 netmask 255.255.255.255 up
[root@RS1 ~]# route add -host 10.1.100.100 lo:0
RS2配置
[root@RS2 ~]# ifconfig lo:0 10.1.100.100 broadcast 10.1.100.100 netmask 255.255.255.255 up
[root@RS2 ~]# route add -host 10.1.100.100 lo:0
LVS主機上的配置
[root@lvs ~]# iptables -F   #清空防火墻規則
[root@lvs ~]# ipvsadm -A -t 10.1.100.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:80 -r 10.1.68.1 -g -w 1
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:80 -r 10.1.68.2 -g -w 2
[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.100.100:80 rr
 -> 10.1.68.1:80                 Route   1      0          0        
 -> 10.1.68.2:80                 Route   2      0          0        
[root@lvs ~]#
保存規則
[root@lvs ~]# ipvsadm-save 
-A -t 10.1.100.100:http -s rr
-a -t 10.1.100.100:http -r 10.1.68.1:http -g -w 1
-a -t 10.1.100.100:http -r 10.1.68.2:http -g -w 2
[root@lvs ~]#

測試

通過VIP訪問

WT~EV]B7I}B~8~VQA]S3H}U.png

再次刷新可調度至RS2主機上

ZG}`WU5B@)0C}C7Q1DA1HOC.png

LVS定義多集群

我們在原有的DR模型基礎上再來配置一個mysql集群

配置mysql

RS1配置
[root@RS1 ~]# mysql -uroot -pmageedu
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES;
+--------------------+

| Database           |
+--------------------+

| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'10.1.%.%' IDENTIFIED BY 'testpass';    #授權一個用戶 用于測試
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;   #刷新授權
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE rs1;    #在RS1上創建一個數據庫,用于測試
Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES;
+--------------------+

| Database           |
+--------------------+

| information_schema |
| mysql              |
| rs1                |
+--------------------+
3 rows in set (0.00 sec)

mysql>
RS2配置
[root@RS2 ~]# mysql -uroot -pmageedu
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 29
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES;
+--------------------+

| Database           |
+--------------------+

| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'10.1.%.%' IDENTIFIED BY 'testpass';    #授權一個用戶,用于測試
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;    #刷新授權
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE rs2;      #在RS2上創建一個數據庫,用于測試使用
Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES;
+--------------------+

| Database           |
+--------------------+

| information_schema |
| mysql              |
| rs2                |
+--------------------+
3 rows in set (0.00 sec)

mysql>

LVS主機上的配置

[root@lvs ~]# ipvsadm -A -t 10.1.100.100:3306 -s rr
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:3306 -r 10.1.68.1 -g -w 1
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:3306 -r 10.1.68.2 -g -w 2
[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.100.100:80 rr
 -> 10.1.68.1:80                 Route   1      0          0        
 -> 10.1.68.2:80                 Route   2      0          0        
TCP  10.1.100.100:3306 rr
 -> 10.1.68.1:3306               Route   1      0          0        
 -> 10.1.68.2:3306               Route   2      0          0        
[root@lvs ~]#

測試

此時我們已經定義了http與mysql兩個集群,接下來做訪問測試

81LHBU_)EY[2LZA5QW2V_N5.png

FWM實現多集群統一調度

借助于防火墻標記來分類報文,而后基于標記定義集群服務;可將多個不同的應用使用同一個集群服務進行調度;

lvs主機配置

在此之前我們已經配置好的RS1和RS2上的http和mysql服務 

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# iptables -t mangle -A PREROUTING -p tcp -m multiport --dports 80,3306 -j MARK --set-mark 11
[root@lvs ~]# iptables -t mangle -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 551 packets, 44107 bytes)
pkts bytes target     prot opt in     out     source               destination        
  0  5916 MARK      tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 80,3306 MARK set 0xb
[root@lvs ~]# ipvsadm -A -f 11 -s rr
[root@lvs ~]# ipvsadm -a -f 11 -r 10.1.68.1 -g -w 1
[root@lvs ~]# ipvsadm -a -f 11 -r 10.1.68.2 -g -w 2
[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
FWM 11 rr
 -> 10.1.68.1:0                  Route  1      0          0        
 -> 10.1.68.2:0                  Route  2      0          0        
[root@lvs ~]#

測試

ZA@)_~)%]3M]Z_2OQP16J$G.png

lvs持久連接

持久連接模板:實現無論使用任何算法,在一段時間內,實現將來自同一個地址的請求始終發往同一個RS;

port Affinity

每端口持久:每集群服務單獨定義,并定義其持久性; 
每防火墻標記持久:基于防火墻標記定義持久的集群服務;可實現將多個端口上的應用統一調度,即所謂的port Affinity; 
每客戶端持久:基于0端口定義集群服務,即將客戶端對所有應用的請求統統調度至后端主機,而且可使用持久連接進行綁定;

每端口持久配置

lvs主機配置

配置http集群服務
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -A -t 10.1.100.100:80 -s rr -p 60
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:80 -r 10.1.68.1 -g -w 1
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:80 -r 10.1.68.2 -g -w 2

配置mysql集群服務
[root@lvs ~]# ipvsadm -A -t 10.1.100.100:3306 -s rr -p 60
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:3306 -r 10.1.68.1 -g -w 1
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:3306 -r 10.1.68.2 -g -w 2

[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.100.100:80 rr persistent 60
 -> 10.1.68.1:80                 Route   1      0          0        
 -> 10.1.68.2:80                 Route   2      0          0        
TCP  10.1.100.100:3306 rr persistent 60
 -> 10.1.68.1:3306               Route   1      0          0        
 -> 10.1.68.2:3306               Route   2      0          0        
[root@lvs ~]#

測試

R_DAH1XV3ME`K7Q8RV5615R.png

每FWM持久配置

lvs主機配置

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# iptables -t mangle -A PREROUTING -p tcp -m multiport --dports 80,3306 -j MARK --set-mark 11
[root@lvs ~]# iptables -t mangle -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 49 packets, 4200 bytes)
pkts bytes target     prot opt in     out     source               destination        
   0     0 MARK      tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 80,3306 MARK set 0xb
[root@lvs ~]# ipvsadm -A -f 11 -s rr -p 60
[root@lvs ~]# ipvsadm -a -f 11 -r 10.1.68.1 -g -w 1
[root@lvs ~]# ipvsadm -a -f 11 -r 10.1.68.2 -g -w 2
[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
FWM 11 rr persistent 60
 -> 10.1.68.1:0                  Route  1      0          0        
 -> 10.1.68.2:0                  Route  2      0          0        
[root@lvs ~]#

測試

}G06AV4MTUVGAIHOL2YJJB3.png

每客戶端持久

lvs主機配置

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -A -t 10.1.100.100:0 -s rr -p 60
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:0 -r 10.1.68.1 -g -w 1
[root@lvs ~]# ipvsadm -a -t 10.1.100.100:0 -r 10.1.68.2 -g -w 2
[root@lvs ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.100.100:0 rr persistent 60
 -> 10.1.68.1:0                  Route   1      0          0        
 -> 10.1.68.2:0                  Route   2      0          0        
[root@lvs ~]#

測試

B$)9~B7]{C`UJEKD`H$]LZP.png

原創文章,作者:zhai796898,如若轉載,請注明出處:http://www.www58058.com/58220

(0)
zhai796898zhai796898
上一篇 2016-11-07
下一篇 2016-11-07

相關推薦

  • N25第六周作業

    vim編輯器 基本模式: 編輯模式,命令模式 輸入模式 末行模式: 內置的命令行接口;   打開文件: # vim [options] [file ..] +#:打開文件后,直接讓光標處于第#行的行首; +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首;   模式轉換: 編輯模式:默認模式 編輯模式 &…

    Linux干貨 2017-02-15
  • N28-第二周博客作業

    常用通配符
    *:表示任意長度的任意字符;

    ?:表示任意的單個字符;

    []:表示在指定范圍內的單個字符:[a-z];

    [^]:脫字符,是取反的意思,即在指定范圍以外的任意字符,如 [^0-9]表示除數字以外的一切字符。

    [:digit:] 表示所有的數字,相當于0-9

    [:lower:] 表示所有的小寫字母

    [:upper:] 表示所有的大寫字母

    [:alpha:] 表示所有的字母,

    [:alnum:] 相當于[0-9a-z]

    [:space:] 相當于空白字符

    [:punct:] 表示所有的標點符號

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。

    2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。

    3、請使用命令行展開功能來完成以下練習:

    (1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d

    (2)、創建/tmp/mylinux目錄下的:
    mylinux/
    ├── bin
    ├── boot
    │?? └── grub
    ├── dev
    ├── etc
    │?? ├── rc.d
    │?? │?? └── init.d
    │?? └── sysconfig
    │?? └── network-scripts
    ├── lib
    │?? └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │?? └── local
    │?? ├── bin
    │?? └── sbin
    └── var
    ├── lock
    ├── log
    └── run

    4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

    5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?

    6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。

    7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。

    8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。

    9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

    10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

    11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。

    12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    Linux干貨 2017-12-11
  • 第一天

    今天講了很多

    Linux干貨 2018-03-26
  • MySQL架構

    1.MySQL整體邏輯架構 我們先下圖看看MySQL整體邏輯架構(MySQL’s Logical Architecture)                       圖1  第一層,即最上一層,所包含的服務并不是MySQL所獨有的技術?!?/p>

    Linux干貨 2015-04-13
  • Linux網絡屬性管理(一)

    MarkdownPad Document Linux網絡屬性管理(一) 將一臺linux主機接入互聯網一般需要配置以下幾個方面的參數: IP/mask –>  IP地址和子網掩碼 路由 –> 默認網關 DNS服務器 配置方式 靜態指定:   1、ifcfg:ifconfig,route,netstat   2、i…

    Linux干貨 2016-06-12
  • 文本處理工具

    一、文本處理工具的分類:     查看全部內容:more、less、cat、tac、rev     截取文件內容:head 、tail     抽取文件內容:cut     抽取關鍵字:grep、eg…

    Linux干貨 2016-08-08
欧美性久久久久