1. 程式人生 > >LVS配置之ipvsadm命令學習筆記

LVS配置之ipvsadm命令學習筆記

簡介:     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 注意:此處的例子中客戶、排程伺服器、真實伺服器都是位於同一網段的