目錄
-
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解析的IPRIP
:集群節點(后臺真正提供服務的服務器)所使用的IP地址DIP
:Director用來和RIP進行交互的IP地址CIP
:公網IP,客戶端使用的IP
lvs集群的類型
lvs-nat
:網絡地址轉換 NetworkAddress Translation,修改請求報文的目標IPlvs-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可以是任意系統;
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) 不支持端口映射;
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/SOMEFILEsystemctl stop ipvsadm.service #CentOS 7
service ipvsadm stop #CentOS 6
載入當前規則
ipvsadm -R = ipvsadm-restore
ipvsadm -R < /PATH/TO/SOMEFILEsystemctl restart ipvsadm.service #CentOS 7
service ipvsadm restart #CentOS 6
LVS-NAT模式演練
拓撲如下:
在兩臺RS上配置web服務
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訪問
再次刷新可調度至RS2
LVS-DR模型演練
拓撲如下:
在兩臺RS上配置web服務
關閉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訪問
再次刷新可調度至RS2主機上
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兩個集群,接下來做訪問測試
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 ~]#
測試
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 ~]#
測試
每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 ~]#
測試
每客戶端持久
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 ~]#
測試
原創文章,作者:zhai796898,如若轉載,請注明出處:http://www.www58058.com/58220