ipvsadm命令的用法:
1.用于管理Lvs集群服務
2.用于進行RS的增刪改
3.查看配置
lvs服務器架設步驟:
1.判斷內核是否支持ipvs(看到CONFIG_NETFIFLER_XT_MATCH_IPVS=m,)
# grep -A 30 -i 'IPVS' /boot/config-2.6.32-279.el6.x86_64
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y
#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
從上可以看出內核已經支持了ipvs協議,其中:
CONFIG_NETFIFLER_XT_MATCH_IPVS=m 表示能夠執行模塊化編譯
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y 表示支持TCP和UDP協議
CONFIG_IP_VS_RR=m 表示支持的調度協議
2.ipvsadm的安裝
#yum -y install ipvsadm
安裝成功后檢驗:
# rpm -ql ipvsadm
/etc/rc.d/init.d/ipvsadm #ipvs的服務用于加載內核規則
/etc/sysconfig/ipvsadm-config
/sbin/ipvsadm #主程序
/sbin/ipvsadm-restore #用于重載配置到內核中
/sbin/ipvsadm-save #保存規則的文件
/usr/share/doc/ipvsadm-1.26
/usr/share/doc/ipvsadm-1.26/README
/usr/share/man/man8/ipvsadm-restore.8.gz
/usr/share/man/man8/ipvsadm-save.8.gz
/usr/share/man/man8/ipvsadm.8.gz
man查看
SYNOPSIS
ipvsadm -A|E -t|u|f service-address [-s scheduler] 大寫選項用于管理ipvs集群
[-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address 小寫選項用于管理ipvs集群的rs
[-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm –set tcp tcpfin udp
ipvsadm –start-daemon state [–mcast-interface interface]
[–syncid syncid]en
ipvsadm –stop-daemon state
ipvsadm -h
管理集群服務:增、改、刪、查
ipvsadm -A|E -t|u|f service-address [-s scheduler]
-A:添加
-E:修改
-t:tcp
-u:udp
-f:防火墻標記
service-address:
-t,tcp 地址格式 vip:port
-u,udp 地址格式 vip:port
-f,fire wall mark mark
-s scheduler:默認為wlc
ipvsadm -D -t|u|f service-address
-D:刪除
管理集群上的RS:
ipvsadm -a|e -t|u|f service-address -r server-address
-a:增
-e:改
使用命令前,必須創建好Vserver
-r server-address
RS的地址:
rip[:port] #如果端口省略,則與Vserver端口相同
-g,gateway,dr 默認類型
-i,ipip,tun
-m,masquerade,nat
-w,weight 適用wrr、wlc、sed
查看:
ipvsadm -L|l [options]
-n,–numeric:數字格式顯示 IP:端口
–exact:精確顯示
-c,–connection:顯示當前IPVS的連接
–stats:顯示統計數據
–rate:速率
清空規則:
ipvsadm -C
保存和重載:
保存:
ipvsadmin -S > /PATH/TO/SOME_RULE_FILE
ipvsadmin -save > /PATH/TO/SOME_RULE_FILE
重載:
ipvsadm -R < /PATH/TO/SOME_RULE_FILE
ipvsadm -restore < /PATH/TO/SOME_RULE_FILE
清空計數器:
ipvsadm -Z [-t|u|f service-address]
1.數字形式查看IPVS規則:
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags #VIP的信息
-> RemoteAddress:Port Forward Weight ActiveConn InActConn #RS的信息
2.添加一個LVS服務器,再次查看
# ipvsadm -A -t 172.20.150.8:80 -s rr
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.20.150.8:80 rr
3.為LVS服務器關聯一個RS,指定調度類型為NAT
# ipvsadm -a -t 172.20.150.8:80 -r 192.168.1.1:8080 -m -w 1
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.20.150.8:80 rr
-> 192.168.1.1:8080 Local 1 0 0
# ipvsadm -Ln –stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 172.20.150.8:80 0 0 0 0 0
-> 192.168.1.2:8080 0 0 0 0 0
Conns:連接數
InPkts:入棧報文數
OutPkts:出棧報文數
InBytes:入棧字節
OutBytes:出棧字節
# ipvsadm -Ln –rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 172.20.150.8:80 0 0 0 0 0
-> 192.168.1.2:8080 0 0 0 0 0
CPS:每秒鐘的連接數
InPPS:每秒入棧報文數
OutPPS:每秒出棧報文數
InBPS:每秒入棧字節
OutBPS:每秒出棧字節
修改LVS服務器調度方法:
# ipvsadm -E -t 172.20.150.8:80 -s wlc
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.20.150.8:80 wlc
-> 192.168.1.2:8080 Masq 1 0 0
修改LVS服務器下RS的權重:
# ipvsadm -e -t 172.20.150.8:80 -r 192.168.1.2:8080 -m -w 10
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.20.150.8:80 wlc
-> 192.168.1.2:8080 Masq 10 0 0
配置文件的備份、恢復:
保存IPVS配置文件:
# ipvsadm -S > /tmp/ipvsadm-config.v1
# cat /tmp/ipvsadm-config.v1
-A -t cdh1:http -s wlc
-a -t cdh1:http -r 192.168.1.2:webcache -m -w 10
刪除IPVS配置文件
# ipvsadm -C
重新載入IPVS配置文件
# ipvsadm -R < /tmp/ipvsadm-config.v1
配置開機自動加載:
# ipvsadm -S > /etc/sysconfig/ipvsadm 加載時會默認讀取這個文件
# chkconfig ipvsadm on
負載均衡集群設計時的要點:
(1)session保持
session sticky(ip hash)
session cluster
session server
(2)共享存儲:
NAS:訪問接口是文件系統
SAN:訪問接口是塊級別
DS:分布式存儲,訪問接口通常是文件級別,接口可是文件系統,也可以是API;ceph,內核級別的分布式存儲
數據同步:
rsync+inotify (主從服務器 主服務器能夠讀寫、從服務器只能夠讀)
數據格式:
結構化數據:存儲在SQL數據庫中 #即所有數據都能明確定義出數據類型的
半結構化數據:xml,json,存儲于文件系統或NoSQL;
非結構化數據:文件系統,NAS、SAN、DS;
LVS-NAT:
設計要點:
(1)DIP與RIP要在同一IP網絡住,RIP的網關要指向DIP;
(2)支持端口映射;
(3)是否用到共享存儲取決于業務需求;
實踐作業:負載均衡一個php應用;
測試:(1)是否需要會話保持;
(2)是否需要共享存儲;
LVS-DR:direct routing
在各主機(Director,RS)均需要配置VIP;因此,要解決地址沖突的問題,目標是讓各RS上的VIP不可見,僅用接受目標地址為VIP的報文,同時可作為響應報文的源地址;
(1)在前端的網關接口上靜態綁定; #弊端是無法再高可用的Director集群上很好的切換
(2)在各RS上使用arptables; #拒絕RS服務器響應ARP請求
(3)在各RS上修改內核參數,來限制arp響應和通告;
限制響應級別:arp_ignore
0:默認,使用本地任意接口上配置的地址進行響應
1:僅在請求的目標IP配置在本地主機的接收報文的入棧接口,才給與響應
2-8:在LVS-DR集群配置中用不到
限制通告級別:arp_announce
0:默認,把本機所有接口信息向所有接口通告
1:盡量避免向非本地網絡通告;
2:總是避免通告;
設計要點:
(1)各主機一個接口即可,但需要在同一物理網絡中;
(2)RIP的網關不能指向DIP;RIP和DIP通常應該在同一網絡,但此二者未必會與VIP在同一網絡;
(3)各RS需要先設置內核參數,再設置VIP和路由;
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
設置接口IP:
ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip
route add -host $vip dev lo:0
實踐作業:增刪減RS,NAT和DR模式哪一個方便?
原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/66286