lvs簡介: LVS是一個開源的軟體,由畢業於國防科技大學的章文嵩博士於1998年5月創立,可以實現LINUX平台下的簡單負載均衡.LVS是Linux Virtual Server的縮寫,意思是Linux虛擬伺服器.
Lvs 的集群工作模式有3種:VS/NAT,vs/tun,vs/dr.
Lvs的調度演算法:
LVS的演算法分為兩大類:
靜態演算法:只是根據演算法進行調度並不考慮後端REALSERVER的實際連接情況
rr-論調演算法,假如有兩台伺服器A,B,第一個請求給A,第二個給B,第三個給A依次往複
wrr-加權論調,假如有兩台伺服器A,B,A的性能是B的兩倍,則在論調的同時給A上面分配的請求也大致會是B上面的兩倍
dh-假如調度器的後面是兩台緩存伺服器A,B而不是真正的REALSERVER,則會儘可能的把相同請求或者把同一用戶的請求轉發到同一個緩存伺服器上面以提高緩存命中率
sh-假如公司有兩台防火牆讓員工上網,則會把某個員工往外的訪問及向內返回的請求結果定向到同一台防火牆上面,方便防火牆做established的狀態檢測
動態演算法:前端的調度器會根據後端REALSERVER的實際連接情況來分配請求
活動鏈接:當前有數據包傳輸
非活動鏈接:當前連接出於建立狀態但是沒有數據傳輸
lc-同時檢查後端REALSERVER上面活動狀態和非活動狀態的連接數使用(活動連接數*256 非活動連接數)數字小的將接收下次訪問請求
wlc-加權的lc,使用(活動連接數*256 非活動連接數)/權重,數字小的將接收下次訪問請求,是最常用的演算法
sed-不考慮非活動狀態,使用(活動狀態 1)*256,數字小的將接收下次訪問請求, 1主要是為了提高權重大的伺服器的響應能力
案例:
在公司的內部有兩台web伺服器,為了實現群集的負載均衡,通過lvs伺服器來實現對web伺服器流量的分發.
公司的內部伺服器.
web1 192.168.10.2
Web2 192.168.10.3
分發伺服器director
外卡地址 192.168.2.1
內卡地址 192.168.10.1
常用的調演算法
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
FILES
/proc/net/ip_vs
/proc/net/ip_vs_app
/proc/net/ip_vs_conn
/proc/net/ip_vs_stats
/proc/sys/net/ipv4/vs/am_droprate
/proc/sys/net/ipv4/vs/amemthresh
/proc/sys/net/ipv4/vs/drop_entry
/proc/sys/net/ipv4/vs/timeout_synrecv
/proc/sys/net/ipv4/vs/timeout_synsent
/proc/sys/net/ipv4/vs/timeout_timewait
/proc/sys/net/ipv4/vs/timeout_udp
一:server1的搭建
Webserver1
[root@zzu ~]# yum install http*
[root@zzu ~]# service httpd restart
二:server2的搭建
同一,此處省略
三:director的搭建
1:配置好網路參數
[root@zzu ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:F7:49:EF
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fef7:49ef/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5917 errors:0 dropped:0 overruns:0 frame:0
TX packets:4726 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:552498 (539.5 KiB) TX bytes:599760 (585.7 KiB)
Interrupt:67 Base address:0x2000
eth1 Link encap:Ethernet HWaddr 00:0C:29:F7:49:F9
inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fef7:49f9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:916 errors:0 dropped:0 overruns:0 frame:0
TX packets:902 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:94742 (92.5 KiB) TX bytes:112395 (109.7 KiB)
Interrupt:67 Base address:0x2080
[root@zzu ~]# vim /etc/sysctl.conf 開啟數據包的轉發功能
net.ipv4.ip_forward = 1
[root@zzu ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
2:安裝ipvsadm的rpm包
[root@zzu ~]# yum install -y ipvsadm
[root@zzu ~]# ipvsadm -A -t 192.168.2.1:80 -s rr
[root@zzu ~]# ipvsadm –a -t 192.168.2.1:80 -r 192.168.10.2:80 –m -w 1
[root@zzu ~]# ipvsadm –a -t 192.168.2.1:80 -r 192.168.10.3:80 –m -w 1
3:測試lc
[root@zzu ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.1:80 lc
-> 192.168.10.3:80 Masq 1 0 0
-> 192.168.10.2:80 Masq 1 0 11
10.2的連接數已經為11,而10.3的連接數竟然為0.
[root@zzu ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.1:80 lc
-> 192.168.10.3:80 Masq 1 0 1
-> 192.168.10.2:80 Masq 1 0 11
4:測試rr
[root@zzu ~]# ipvsadm -A -t 192.168.2.1:80 -s rr
[root@zzu ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.10.2:80 -m 使用nat的工作模式
[root@zzu ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.10.3:80 -m
[root@zzu ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.1:80 rr
-> 192.168.10.3:80 Masq 1 0 0
-> 192.168.10.2:80 Masq 1 0 0
[root@zzu ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.1:80 rr
-> 192.168.10.3:80 Masq 1 0 4
-> 192.168.10.2:80 Masq 1 0 3
5.測試wrr
[root@zzu ~]# ipvsadm -E -t 192.168.2.1:80 -s wrr
[root@zzu ~]# ipvsadm -e -t 192.168.2.1:80 -r 192.168.10.3:80 -m -w 1
[root@zzu ~]# ipvsadm -e -t 192.168.2.1:80 -r 192.168.10.2:80 -m -w 3
[root@zzu ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.1:80 wrr
-> 192.168.10.3:80 Masq 1 0 0
-> 192.168.10.2:80 Masq 3 0 0
[root@zzu ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.1:80 wrr
-> 192.168.10.3:80 Masq 1 0 2
-> 192.168.10.2:80 Masq 3 0 5
6:測試dh演算法
[root@zzu ~]# ipvsadm -E -t 192.168.2.1:80 -s dh
[root@zzu ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.1:80 dh
-> 192.168.10.3:80 Masq 1 0 0
-> 192.168.10.2:80 Masq 1 0 11
常用指令的說明:
service ipvsadm save 保存ipvs-table表格
service ipvsadm panic 清空ipvs-table表格
service ipvsadm start|stop|restart
ipvsadm -A|E -t|u| service-address [-s scheduler]
ipvsadm -a|e -t|u| service-address -r server-address
[-g|i|m] [-w weight]
-A 增加虛擬服務 -E 表示修改 -t -u tcp/udp協議 -s 指定調度演算法
-a 增加虛擬的映射關係 -r 真是伺服器的地址 -w 權重的大小
-g -i -m 三種不用的工作模式
-g, --gatewaying Use gatewaying (direct routing). This is the default.
-i, --ipip Use ipip encapsulation (tunneling).
-m, --masquerading Use masquerading (network access translation, or NAT).
-Z, --zero
ipvsadm -Z -t 207.175.44.110:80
例子:
ipvsadm -A -t 207.175.44.110:80 -s rr
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
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m
[火星人 ] LB群集--lvs-nat模型已經有461次圍觀