羣集(或集羣)的稱呼來自於英文單詞「Cluster」,表示一羣、一串的意思,用在服務器領域則表示大量服務器的集合體,以區分單個服務器。本篇博客將介紹企業中經常使用的一種羣集技術——LVS(Linux Virtual Server,Linux虛擬服務器)html
上一篇博客已經對集羣的結構、工做模式等進行了介紹,還配置了LVS——NAT模式,這裏就直接配置LVS——DR了 算法
案例:構建直接路由模式負載均衡集羣(LVS——DR)vim
爲了進一步提升公司的負載能力,公司決定擴展示有的網站平臺,通過多方面考慮,管理員準備採用LVS羣集的DR模式,以下圖所示:bash
需求描述:服務器
1. 使用一臺LVS調度器,四臺節點服務器,均配置雙網卡負載均衡
(1)第一塊網卡eth0鏈接至Internet,位於172.16.16.0/24網段tcp
(2)第二塊網卡eth1鏈接至存儲內網,位於192.168.7.0/24網段ide
2. 共享存儲器有一臺Linux服務器承擔,將目錄/var/www/html發佈爲NFS可讀寫共享oop
3. 羣集地址(VIP)爲172.16.16.172,經過此地址訪問公司的Web站點測試
實驗步驟以下:
1. 配置LVS負載調度器
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0 [root@localhost network-scripts]# vim ifcfg-eth0:0 //配置虛擬IP地址(VIP) DEVICE=eth0:0 ONBOOT=yes IPADDR=172.16.16.172 NETMASK=255.255.255.0 [root@localhost network-scripts]# ifup eth0:0 //啓動網卡 [root@localhost network-scripts]# ifconfig //查看IP地址 eth0 Link encap:Ethernet HWaddr 00:0C:29:1C:B4:FB inet addr:172.16.16.173 Bcast:172.16.16.255 Mask:255.255.255.0 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:1C:B4:FB inet addr:172.16.16.172 Bcast:172.16.16.255 Mask:255.255.255.0 eth1 Link encap:Ethernet HWaddr 00:0C:29:1C:B4:05 inet addr:192.168.7.173 Bcast:192.168.7.255 Mask:255.255.255.0 [root@localhost network-scripts]# cd ~ # 因爲LVS負載調度器和各節點須要共用VIP地址,應該關閉Linux內核的重定向參數響應 [root@localhost ~]# vim /etc/sysctl.conf //調整/proc響應參數 net.ipv4.conf.all.send_redirects = 0 //關閉Linux內核的重定向參數響應 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 [root@localhost ~]# sysctl -p //當即生效 [root@localhost ~]# iptables -I FORWARD -p tcp -j ACCEPT //設置防火牆策略 [root@localhost ~]# modprobe ip_vs [root@localhost ~]# yum -y install ipvsadm [root@localhost ~]# service ipvsadm stop //清除原有策略 [root@localhost ~]# ipvsadm -A -t 172.16.16.172:80 -s rr [root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.177 -g -w 1 [root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.178 -g -w 1 [root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.179 -g -w 1 [root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.180 -g -w 1 [root@localhost ~]# service ipvsadm save ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [肯定] [root@localhost ~]# chkconfig ipvsadm on [root@localhost ~]# cat /etc/sysconfig/ipvsadm -A -t 172.16.16.172:80 -s rr -a -t 172.16.16.172:80 -r 172.16.16.177:80 -g -w 1 -a -t 172.16.16.172:80 -r 172.16.16.178:80 -g -w 1 -a -t 172.16.16.172:80 -r 172.16.16.179:80 -g -w 1 -a -t 172.16.16.172:80 -r 172.16.16.180:80 -g -w 1
2. 配置NFS共享存儲服務
[root@localhost ~]# ifconfig //配置IP地址 eth0 Link encap:Ethernet HWaddr 00:0C:29:0D:16:6A inet addr:192.168.7.250 Bcast:192.168.7.255 Mask:255.255.255.0 [root@localhost ~]# iptables -I INPUT -p tcp -j ACCEPT //設置防火牆策略 [root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT [root@localhost ~]# yum -y install nfs-utils rpcbind [root@localhost ~]# chkconfig nfs on [root@localhost ~]# chkconfig rpcbind on [root@localhost ~]# mkdir /opt/wwwroot //設置共享目錄 [root@localhost ~]# echo welcome to beijing!!! > /opt/wwwroot/index.html [root@localhost ~]# cat /opt/wwwroot/index.html //建立測試網頁 welcome to beijing!!! [root@localhost ~]# vim /etc/exports //將目錄共享給192.168.7.0/24使用 /opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash) # rw表示容許讀寫(ro爲只讀) # sync表示同步寫入 # no_root_squash當客戶機以root身份訪問時賦予本地root權限(默認是root_squash,將做爲nfsnobody用戶降權對待) [root@localhost ~]# service rpcbind start [root@localhost ~]# service nfs start [root@localhost ~]# showmount -e 127.0.0.1 //查看本機發布的NFS共享目錄 Export list for 127.0.0.1: /opt/wwwroot 192.168.7.0/24
3. 配置Web節點服務器
使用DR模式時,節點服務器也須要配置VIP地址,並調整內核的ARP響應參數以阻止更新VIP的MAC地址,避免發生衝突。其餘的配置和NAT模式差很少
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0 [root@localhost network-scripts]# vim ifcfg-lo:0 //配置虛擬IP地址(VIP) DEVICE=lo:0 IPADDR=172.16.16.172 NETMASK=255.255.255.255 //子網掩碼必須全爲1 ONBOOT=yes [root@localhost network-scripts]# ifconfig //查看IP地址 eth0 Link encap:Ethernet HWaddr 00:0C:29:8A:0D:26 inet addr:172.16.16.177 Bcast:172.16.16.255 Mask:255.255.255.0 eth1 Link encap:Ethernet HWaddr 00:0C:29:8A:0D:30 inet addr:192.168.7.177 Bcast:192.168.7.255 Mask:255.255.255.0 lo:0 Link encap:Local Loopback inet addr:172.16.16.172 Mask:255.255.255.255 [root@localhost network-scripts]# cd ~ [root@localhost ~]# vim /etc/rc.local //添加VIP爲本地訪問路由 /sbin/route add -host 172.16.16.172 dev lo:0 [root@localhost ~]# route add -host 172.16.16.172 dev lo:0 [root@localhost ~]# vim /etc/sysctl.conf //調整內核的ARP響應參數 net.ipv4.conf.all.arp_ignore = 1 //阻止更新VIP的MAC地址,避免發生衝突 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 [root@localhost ~]# sysctl -p //當即生效 [root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT //配置防火牆策略 [root@localhost ~]# yum -y install httpd nfs-utils rpcbind [root@localhost ~]# showmount -e 192.168.7.250 //查看NFS服務器共享了哪些目錄 Export list for 192.168.7.250: /opt/wwwroot 192.168.7.0/24 [root@localhost ~]# mount 192.168.7.250:/opt/wwwroot /var/www/html //將共享目錄掛載到本地目錄 [root@localhost ~]# tail -1 /etc/mtab 192.168.7.250:/opt/wwwroot /var/www/html nfs rw,vers=4,addr=192.168.7.250,clientaddr=192.168.7.177 0 0 [root@localhost ~]# cat /var/www/html/index.html //驗證測試網頁是否共享 welcome to beijing!!! [root@localhost ~]# vim /etc/fstab //設置開機自動掛載 192.168.7.250:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0 [root@localhost ~]# chkconfig nfs on [root@localhost ~]# chkconfig rpcbind on [root@localhost ~]# chkconfig httpd on [root@localhost ~]# service rpcbind start [root@localhost ~]# service nfs start [root@localhost ~]# service httpd start
4. 測試LVS羣集
安排多臺測試機,從Internet中直接訪問VIP地址http://172.16.16.172/,將能看到有真實Web服務器提供的網頁內容。
經過LVS負載均衡調度器,可查看當前的負載分配狀況,因爲使用輪詢算法,各節點所得到的鏈接負載大體至關。
在LVS負載均衡調度器中執行如下命令:
[root@localhost ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.16.172:80 rr -> 172.16.16.177:80 Route 1 2 9 -> 172.16.16.178:80 Route 1 3 8 -> 172.16.16.179:80 Route 1 2 9 -> 172.16.16.180:80 Route 1 4 7
可看到各節點服務器的鏈接負載大體至關,從而實現了負載均衡