負載均衡集群ipvsadm命令及基本用法


  ipvsadm是LVS在應用層的管理命令,我們可以通過這個命令去管理LVS的配置。需要使用yum單獨安裝。

基本用法:

ipvsadm COMMAND [protocol] service-address
               [scheduling-method] [persistence options]
ipvsadm command [protocol] service-address
               server-address [packet-forwarding-method]
               [weight options]
 
    第一條命令用於向LVS系統中添加一個用於負載均衡的virtual server(VS);第二條命令用來修改已經存在的VS的配置,service address用來指定涉及的虛擬服務即虛擬地址,server-address指定涉及的真實地址。
 
命令:
    -A, --add-service:為ipvs虛擬服務器添加一個虛擬服務,即添加一個需要被負載均衡的虛擬地址。虛擬地址需要是ip地址,端口號,協議的形式。
    -E, --edit-service:修改一個虛擬服務。
    -D, --delete-service:刪除一個虛擬服務。
    -C, --clear:清除所有虛擬服務。
    -R, --restore:從標准輸入獲取ipvsadm命令。一般結合下邊的-S使用。
    -S, --save:從標准輸出輸出虛擬服務器的規則。可以將虛擬服務器的規則保存,在以后通過-R直接讀入,以實現自動化配置。
    -a, --add-server:為虛擬服務添加一個real server(RS)
    -e, --edit-server:修改RS
    -d, --delete-server:刪除
    -L, -l, --list:列出虛擬服務表中的所有虛擬服務。可以指定地址。添加-c顯示連接表。
    -Z, --zero:將所有數據相關的記錄清零。這些記錄一般用於調度策略。
    --set tcp tcpfin udp:修改協議的超時時間。
    --start-daemon state:設置虛擬服務器的備服務器,用來實現主備服務器冗余。(注:該功能只支持ipv4)
    --stop-daemon:停止備服務器。
    -h, --help:幫助。
 
參數:
    以下參數可以接在上邊的命令后邊。
    -t, --tcp-service service-address:指定虛擬服務為tcp服務。service-address要是host[:port]的形式。端口是0表示任意端口。如果需要將端口設置為0,還需要加上-p選項(持久連接)。
    -u, --udp-service service-address:使用udp服務,其他同上。
    -f, --fwmark-service integer:用firewall mark取代虛擬地址來指定要被負載均衡的數據包,可以通過這個命令實現把不同地址、端口的虛擬地址整合成一個虛擬服務,可以讓虛擬服務器同時截獲處理去往多個不同地址的數據包。fwmark可以通過iptables命令指定。如果用在ipv6需要加上-6。
    -s, --scheduler scheduling-method:指定調度算法。調度算法可以指定以下8種:rr(輪詢),wrr(權重),lc(最后連接),wlc(權重),lblc(本地最后連接),lblcr(帶復制的本地最后連接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延遲),nq(永不排隊)
    -p, --persistent [timeout]:設置持久連接,這個模式可以使來自客戶的多個請求被送到同一個真實服務器,通常用於ftp或者ssl中。
    -M, --netmask netmask:指定客戶地址的子網掩碼。用於將同屬一個子網的客戶的請求轉發到相同服務器。
    -r, --real-server server-address:為虛擬服務指定數據可以轉發到的真實服務器的地址。可以添加端口號。如果沒有指定端口號,則等效於使用虛擬地址的端口號。
    [packet-forwarding-method]:此選項指定某個真實服務器所使用的數據轉發模式。需要對每個真實服務器分別指定模式。
        -g, --gatewaying:使用網關(即直接路由),此模式是默認模式。
        -i, --ipip:使用ipip隧道模式。
        -m, --masquerading:使用NAT模式。
    -w, --weight weight:設置權重。權重是0~65535的整數。如果將某個真實服務器的權重設置為0,那么它不會收到新的連接,但是已有連接還會繼續維持(這點和直接把某個真實服務器刪除時不同的)。
    -x, --u-threshold uthreshold:設置一個服務器可以維持的連接上限。0~65535。設置為0表示沒有上限。
    -y, --l-threshold lthreshold:設置一個服務器的連接下限。當服務器的連接數低於此值的時候服務器才可以重新接收連接。如果此值未設置,則當服務器的連接數連續三次低於uthreshold時服務器才可以接收到新的連接。(PS:筆者以為此設定可能是為了防止服務器在能否接收連接這兩個狀態上頻繁變換)
    --mcast-interface interface:指定使用備服務器時候的廣播接口。
    --syncid syncid:指定syncid,同樣用於主備服務器的同步。
    以下選項用於list命令:
    -c, --connection:列出當前的IPVS連接。
    --timeout:列出超時
    --daemon:
    --stats:狀態信息
    --rate:傳輸速率
    --thresholds:列出閾值
    --persistent-conn:堅持連接
    --sor:把列表排序。
    --nosort:不排序
    -n, --numeric:不對ip地址進行dns查詢
    --exact:單位
    -6:如果fwmark用的是ipv6地址需要指定此選項。    
    
其他注意事項
    如果使用IPv6地址,需要在地址兩端加上”【】“。例如:ipvsadm -A -t [2001:db8::80]:80 -s rr
    可以通過設置以下虛擬文件的值來防御DoS攻擊:/proc/sys/net/ipv4/vs/drop_entry /proc/sys/net/ipv4/vs/drop_packet /proc/sys/net/ipv4/vs/secure_tcp
 
例子:
1.使用NAT模式
添加地址為207.175.44.110:80的虛擬服務,指定調度算法為輪轉。
ipvsadm -A -t 207.175.44.110:80 -s rr
添加真實服務器,指定傳輸模式為NAT
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
NAT模式是lvs的三種模式中最簡單的一種。此種模式下只需要保證調度服務器與真實服務器互通就可以運行。
2.使用DR模式
對於DR模式首先要配置真實服務器:
對於每台真實服務器要進行以下操作:
1、設置真實服務器的lo接口不做ARP應答
echo 1 > /proc/sys/net/ipv4/conf/all/arg_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arg_ignore
設置這個選項可以使得各個接口只對本接口上的地址進行響應
還需要設置arp_announce選項為2,設置方法同上
2、在真實服務器上添加虛擬IP
ifconfig lo:0 192.168.10.10 boradcast 207.175.44.110 netmask 255.255.255.255
ip r add 192.168.10.10 dev lo
接着添加ipvs規則:
添加地址為192.168.10.10:80的虛擬服務,指定調度算法為輪轉。
ipvsadm -A -t 192.168.10.10:80 -s rr
添加真實服務器,指定傳輸模式為DR
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.1:80 -g
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.2:80 -g
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.3:80 -g
注意:此處的例子中客戶、調度服務器、真實服務器都是位於同一網段的
 

固定調度

rr:論調

wrr:加權論調
weight,加權

sh:source hash ,源地址hash


動態調度
lc:最少鏈接
active*256+inactive
wlc:加權最少鏈接
(active*256+inactive)/weight
sed:最短期望延遲
(active+1)*256/weight
nq:never queue (永不排隊)

LBLC:基於本地的最少鏈接
LBLCR:基於本地的帶復制功能的最少鏈接

————
lvs

ipvsadm:管理集群服務的命令行工具
管理集群服務
添加:-A -t|u|f service-address[-s sheduler ]
{ -t:TCP協議集群
-u:UDP協議集群} service-address: IP:PORT(套接字)
-f:FWM:防火牆標記
service-address : Mark Number
修改: -E 
刪除: -D -t|u|f service-address
管理機器服務中心的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight ]
-t|u|f service-address:事前定義好的某集群服務
-r server-address :某RS的地址,在NAT模型中;可使用IP:PORT實現端口映射:
[-g|i|m]:lvs類型
-g:DR
-i:TUN
-m:NAT 
[-w weight ]:定義權重
修改:-e
刪除:-d -t|u|f serrvice address -r service-add
# ipvsadm -a -t xx.xx.xx.xx:80 -r xx.xx.xx.xx -m

查看
-L|l
-n:數字格式顯示IP地址和端口號
--stats:統計信息
--rate:速率
--timeout:顯示TCP/TCPFIN/UDP的會話超時時長
--sort:排序
-c:顯示當前IPVS的鏈接狀態

-Z:清空計數器
-C:清空ipvs規則
-S:使用輸出重定向進行規則保存
# ipvsadm -S > /../..
-R:使用輸入重定向載入規則
# ipvsadm -R < /../..

 

1. 查看lvs的連接狀態命令: ipvsadm  -l  --stats

說明:

1. Conns    (connections scheduled)  已經轉發過的連接數
2. InPkts   (incoming packets)       入包個數
3. OutPkts  (outgoing packets)       出包個數
4. InBytes  (incoming bytes)         入流量(字節)  
5. OutBytes (outgoing bytes)         出流量(字節)

2. 查看lvs速率  :ipvsadm   -l  --rate

說明:

1. CPS      (current connection rate)   每秒連接數
2. InPPS    (current in packet rate)    每秒的入包個數
3. OutPPS   (current out packet rate)   每秒的出包個數
4. InBPS    (current in byte rate)      每秒入流量(字節)
5. OutBPS   (current out byte rate)      每秒入流量(字節)

 

由於LVS像iptable一樣是工作在內核層,所以只需要安裝模塊ip_vs就可以了,並沒有后台進程在跑。對應lvs主機三種方式分別用參數-m, -i, -g來實現。以下列舉幾種鏈接方式的配置方法:

1.NAT方式:

NAT配置方式最簡單,只需要在LVS主機上配置就可以了,如下例子:

 

設置VIP主機:

ipvsadm -A -t 202.103.106.5:80 -s wlc

ipvsadm -A -t 202.103.106.5:21 -s wrr

ipvsadm -a -t 202.103.106.5:80 -r 172.16.0.2:80 -m

ipvsadm -a -t 202.103.106.5:80 -r 172.16.0.3:8000 -m -w 2

ipvsadm -a -t 202.103.106.5:21 -r 172.16.0.2:21 -m

2.TUN方式:

對LVS主機設置:

設置VIP主機:

ipvsadm -A -t 172.26.20.110:23 -s wlc ipvsadm -a -t 172.26.20.110:23 -r 172.26.20.112 -i

對每台real主機的設置:

echo 1 > /proc/sys/net/ipv4/ip_forward
#加載ipip模塊
modprobe ipip
ifconfig tunl0 0.0.0.0 up
echo 1 > /proc/sys/net/ipv4/conf/all/hidden
echo 1 > /proc/sys/net/ipv4/conf/tunl0/hidden
ifconfig tunl0 172.26.20.110 netmask 255.255.255.255 broadcast 172.26.20.110 up


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM