簡介:
ipvsadm是LVS在應用層的管理命令,我們可以通過這個命令去管理LVS的配置。在筆者使用的fedora14系統中,已經集成了LVS相關模塊,但是ipvsadm命令仍然需要使用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
注意:此處的例子中客戶、調度服務器、真實服務器都是位於同一網段的
原文鏈接:https://blog.csdn.net/l1902090/java/article/details/25660393
1 概述
ipvsadm是LVS在應用層的管理命令,我們可以通過這個命令去管理LVS的配置,編輯和定制lvs的功能,也有其他工具,這個不是唯一的。ipvsadm在base源里,要自行安裝,yuminstall ipvsadm
通過命令grep -i -C 10"ipvs" /boot/config-VERSION-RELEASE.x86_64,查看內核中和ipvs相關的,如查看支持的協議以及支持的算法,ipvs支持七種協議:TCP,UDP,AH,ESP,AH_ESP, SCTP
2 工具介紹
ipvsadm包構成
.程序包:ipvsadm
.Unit File: ipvsadm.service
.主程序:/usr/sbin/ipvsadm
.規則保存工具:/usr/sbin/ipvsadm-save
.規則重載工具:/usr/sbin/ipvsadm-restore
.配置文件:/etc/sysconfig/ipvsadm-config
.ipvsadm命令核心功能:
集群服務管理:增、刪、改
集群服務的RS管理:增、刪、改
2.1 管理集群服務:增、改、刪
增加或者更改,語法如下
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A|E 管理的是集群
-A:增加集群
-E:更改集群
刪除語法如下
ipvsadm -D -t|u|f service-address
-D: 刪除VIP
-t|u|f:
定義的服務的類型,主要是指定協議
-t: TCP協議的端口,VIP:TCP_PORT 如172.18.50.75:80
-u: UDP協議的端口,VIP:UDP_PORT
-f:firewallMARK,標記,一個數字,可以給不同的協議打一個標簽,代表不同協議是同一集群
[-s scheduler]:指定集群的調度算法,默認為wlc
2.2 管理集群上的RS:增、改、刪
增加或者更改,語法如下
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-a|e 管理RIP
如果有多個rip,以上的命令要多次執行。執行的時候要注意模式
-a:增加rip
-e: 更改rip
刪除語法如下
ipvsadm -d -t|u|f service-address -r server-address
-d: 刪除rip
.server-address:
rip[:port],如果省略port,不作端口映射
lvs類型選項:[-g|i|m]
-g: gateway, dr類型,默認
-i: ipip, tun類型
-m: masquerade, nat類型
-w weight:權重,指定權重
2.3 清空
.清空定義的所有內容:ipvsadm –C
.清空計數器:ipvsadm -Z [-t|u|f service-address],這個主要是清空用於計算后台服務器的負載情況的計數器
2.4 查看
ipvsadm -L|l [options]
其中,options有以下的幾類
--numeric, -n:以數字形式輸出地址和端口號,不做dns解析
--exact:擴展信息,精確值
--connection,-c:當前IPVS連接輸出
--stats:統計信息
--rate :輸出速率信息
.ipvs規則:/proc/net/ip_vs
.ipvs連接:/proc/net/ip_vs_conn,查看現在正在連接
2.5 保存及重載規則
.保存
建議保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm-S > /PATH/TO/IPVSADM_FILE
centos7
systemctl stop ipvsadm.service
centos6
service ipvsadm stop
.重載:
ipvsadm-restore </PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_FILE
centos7
systemctl restart ipvsadm.service
centos6
service ipvsadm restart