1. 程式人生 > >LVS:Linux虛擬服務器,LVS-NAT模式+LVS-DR模式

LVS:Linux虛擬服務器,LVS-NAT模式+LVS-DR模式

url star mtu linu 角色 prot sleep broadcast 監控

LVS:Linux虛擬服務器
什麽是集群:
一組通過高速網絡互聯的計算組,並以單一系統的模
式加以管理
? 將很多服務器集中起來一起,提供同一種服務,在客
戶端看來就象是只有一個服務器
? 可以在付出較低成本的情況下獲得在性能、可靠性、
靈活性方面的相對較高的收益
? 任務調度是集群系統中的核心技術
一、工作模式
1、NAT
2、TUN:隧道模式(很少使用)
3、DR:應用廣泛
4、Full nat:大規模部署
二、LVS的調度算法
1、輪詢rr
2、加權輪詢wrr
3、最少連接lc
4、加權最少連接wlc
5、基於局部的最少連接lblc
6、帶復制的基於局部的最少連接lblcr
7、源地址散列sh
8、目標地址散列dh
9、期望的最少延遲sed
10、最少隊列調度nq

LVS-NAT模式:
1、新建虛擬機vh04.tedu.cn 192.168.4.4
2、主機角色:
(1)vh01 -> mysql
(2)Vh02/vh03 -> web
(3)Vh04 -> lvs-nat
(4)物理主機 -> 客戶端
3、基於上午的環境,做一些改進
(1)web服務器配置網關
# nmtui -> # ifdown eth0; ifup eth0
(2)vh04添加另一個IP地址。eth2 -> 201.1.1.4/24
[root@vh04 ~]# nmtui
(3)vh04上開啟路由轉發(7版本默認已經打開,可以不做)
[root@vh04 ~]# sysctl -a | grep ip_forward

[root@vh04 ~]# echo "net.ipv4.ip_forward = 1">> /etc/sysctl.conf
[root@vh04 ~]# sysctl -p
4、配置LVS
(1)安裝
[root@vh04 ~]# yum install -y ipvsadm
(2)創建虛擬服務器,調度算法為rr
[root@vh04 ~]# ipvsadm -A -t 201.1.1.4:80 -s rr
(3)將Real server添加到虛擬服務器中
[root@vh04 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m -w2
[root@vh04 ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.3 -m
(4)查看規則
[root@vh04 ~]# ipvsadm -Ln
(5)驗證。可以給兩臺web服務器配置不同的頁面
[root@vh02 html]# vim /var/www/html/index.html
(6)修改調度算法為wrr
[root@vh04 ~]# ipvsadm -E -t 201.1.1.4:80 -s wrr
(7)刪除
[root@vh04 ~]# ipvsadm -d -t 201.1.1.4:80 -r 192.168.4.3
[root@vh04 ~]# ipvsadm -D -t 201.1.1.4:80

LVS-DR模式
一、拓撲:LVS調度器只有一個IP地址,它和real server在同一網絡。
二、客戶機要把數據發給VIP。VIP需要出現在每臺服務器上(調度器、web服務器)
三、為了地址不沖突,需要把VIP配置在調度器的eth0上,把VIP配置在web服務器的lo上
四、每臺主機都有VIP,客戶端發來的請求,只有LVS回應。為了實現這一點,需要改web服務器的內核參數
五、實施
1、仍然使用vh04作為調度器,對它進行清理
[root@vh04 ~]# ifdown eth2
[root@vh04 ~]# ipvsadm -D -t 201.1.1.4:80
2、在vh04上配置vip
[root@vh04 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,:0}
[root@vh04 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.4.100
PREFIX=24
[root@vh04 ~]# ifup eth0:0
3、在web服務器的lo上配置VIP
[root@vh02 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}
[root@vh02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.100
NETMASK=255.255.255.255
NETWORK=192.168.4.100
BROADCAST=192.168.4.100
ONBOOT=yes
NAME=lo:0
[root@vh02 ~]# ifup lo:0
4、在web服務器上修改內核參數
[root@vh02 ~]# sysctl -a | grep arp_ig
[root@vh02 ~]# echo "net.ipv4.conf.all.arp_ignore = 1">> /etc/sysctl.conf
[root@vh02 ~]# echo "net.ipv4.conf.lo.arp_ignore = 1">> /etc/sysctl.conf
[root@vh02 ~]# sysctl -a | grep arp_ann
[root@vh02 ~]# echo "net.ipv4.conf.all.arp_announce = 2">> /etc/sysctl.conf
[root@vh02 ~]# echo "net.ipv4.conf.lo.arp_announce = 2">> /etc/sysctl.conf
5、配置規則
[root@vh04 ~]# ipvsadm -A -t 192.168.4.100:80 -s lc
[root@vh04 ~]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.3
[root@vh04 ~]# ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.2 -g

6、ipvsadm服務
如果啟動ipvsadm服務時出錯,則
[root@vh04 ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
然後再正常控制服務狀態
[root@vh04 ~]# systemctl restart ipvsadm
[root@vh04 ~]# systemctl enable ipvsadm

在vh04上編寫服務監控腳本
[root@vh04 bin]# vim monitor_web.sh
VIP=192.168.4.100:80
RIP1=192.168.4.2
RIP2=192.168.4.3

while [ : ]
do
for ip in $RIP1 $RIP2
do
curl http://$ip &> /dev/null
web_health=$?
ipvsadm -Ln | grep $ip &> /dev/null
web_in_lvs=$?
if [ $web_health -ne 0 -a $web_in_lvs -eq 0 ]; then
ipvsadm -d -t $VIP -r $ip
elif [ $web_health -eq 0 -a $web_in_lvs -ne 0 ]; then
ipvsadm -a -t $VIP -r $ip
fi
done
sleep 3
done

驗證時,可以每隔一秒查看一次規則
[root@vh04 bin]# watch -n1 ipvsadm -Ln

LVS:Linux虛擬服務器,LVS-NAT模式+LVS-DR模式