LVS負載均衡集羣服務搭建詳解(二)

lvs-nat模型構建html

1.lvs-nat模型示意圖
本次構建的lvs-nat模型的示意圖以下,其中全部的服務器和測試客戶端均使用VMware虛擬機模擬,所使用的CentOS 7
VS內核都支持ipvs功能,且安裝ipvsadm控制書寫lvs規則工具。
RS端兩臺服務器爲httpd服務器作請求的負載均衡。
注意:
1) 客戶端可使用Windows上的瀏覽器,會後緩存影響結果,因此採用CentOS上的curl命令請求http協議顯示更加直觀
2) DIP上不能配置iptables規則
LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)linux

2.VS網卡配置
(1)增長網卡
在"虛擬機設置"中增長一個網絡適配器設備,並將其自定義特定網絡爲VMnet2模式,此處爲了模擬負載均衡服務器的兩張網卡處於不一樣網段
LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)web

(2)配置VS兩張網卡的IP地址算法

[root@localhost ~]# nmtui # CentOS 7 文本圖形界面配置網卡命令
[root@localhost ~]# systemctl start network.service

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)
注意:
網絡適配器1(172.16.249.57)模擬爲外網網卡,網絡適配器2(192.168.100.1)模擬爲內網,且該網卡的Ip地址要和RS服務器得ip在同一網段,DIP做爲RIP的網絡調度(網關),無需配置GATEWAY後端

[root@localhost~]# ifconfig

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

3.RS網卡配置
此處使用兩臺CentOS 7虛擬機做爲負載均衡後端真實響應主機,安裝RPM包格式httpd服務,並啓動服務。nmtui命令配置網卡信息,RS1的IP:192.168.100.2,RS2的IP:192.168.100.3,RIP和DIP在同一網段,虛擬機網卡和DIP同時匹配值爲VMnet2模式,且兩臺RS服務器主機網關指向DIP:192.168.100.1瀏覽器

[root@localhost~]# yum install -y httpd
[root@localhost ~]# systemctl start httpd.service

注意:安裝完成後在各httpd服務器上配置測試頁面,/var/www/html/index.html.緩存

[root@localhost ~]# nmtui # 配置方法同上,此處省略
… ...
[root@localhost ~]# systemctl start network.service
[root@localhost~]# ifconfig

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

4.測試全部主機是否可以通訊
用ping命令測試各節點的通訊,例如RIP1和VIP、DIP、RIP2之間是否可以通訊bash

[root@localhost ~]# ping IPADDR

5.VS主機:核心轉發和安裝ipvsadm
(1)安裝ipvsadm組件服務器

[root@localhost ~]# yum install -y ipvsadm

(2)啓動網卡間核心轉發功能網絡

[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1
[root@localhost~]# cat /proc/sys/net/ipv4/ip_forward

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

6.VS主機:定義配置lvs-nat服務(此處採用rr算法)
(1)定義ipvsadm負載均衡集羣規則,並查看
此處定義DIP是以-s指定爲rr算法進行輪詢調度,-m指定模式爲lvs-nat,配置命令以下:

[root@localhost~]# ipvsadm -A -t 172.16.249.57:80 -s rr
[root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.2:80 -m
[root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.3:80 -m
[root@localhost~]# ipvsadm -L -n

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

(2)Client客戶機測試
在客戶端主機上使用curl命令對VIP發起請求,負載均衡服務器會將請求按照rr算法依次將請求調度給不一樣的主機進行處理,依次請求給分發給192.168.100.2和192.168.100.3主機響應。

[root@localhost~]# curl http://172.16.249.57

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

7.VS主機:定義配置lvs-nat服務(此處採用wrr算法)
(1)定義ipvsadm負載均衡集羣規則,並查看
此處將在上面lvs-nat的rr的基礎上進行修改,改爲wrr加權輪詢算法;將192.168.100.2的權重設置爲1,192.168.100.3的權重設置爲3。

[root@localhost~]# ipvsadm -E -t 172.16.249.57:80 -s wrr
[root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.2 -w 1 -m
[root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.3 -w 1 -m
[root@localhost~]# ipvsadm -L -n

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

(2)Client客戶機測試
在客戶端主機用curl發起請求,負載均衡主機VS會將其按照權重大小轉發給各個主機,四個請求有三個發給了192.168.100.3請求響應,一個發給了192.168.100.2主機處理。並以此算法作輪詢負載請求

[root@localhost~]# curl http://172.16.249.57

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

lvs-dr模型構建

1.lvs-dr模型示意圖
三臺主機爲虛擬機CentOS 7,每臺主機僅有一塊網卡,且使用橋接方式都指向外部網絡的網關172.16.100.1
LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

2.配置VS和RS服務器的VIP
此處的VIP均已別名的形式配置在往卡上,VS是配置在對外通訊的DIP的網卡上;RS配置在lo本地迴環網卡
注意:此時配置的VIP的子網掩碼必須爲255.255.255.255,廣播地址爲本身自己

VS:[root@localhost~]# ifconfig eno16777736:0 172.16.50.50 netmask 255.255.255.255 broadcast172.16.50.50 up
RS:[root@localhost~]# ifconfig lo:0 172.16.50.50 netmask 255.255.255.255broadcast 172.16.50.50 up

3.RS服務器上配置路由

[root@localhost~]# route add -host 172.16.50.50 dev lo:0

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

4.RS服務器配置APR內核參數修改

[root@localhost~]# ll /proc/sys/net/ipv4/conf

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)
(1)ARP響應行爲和ARP解析行爲內核參數:
1)arp_annouce定義通告級別
0:默認級別,將本地的任何接口上的配置的地址都在網絡中通告
1:儘可能避免向本主機上的其餘網卡進行網絡通訊,特殊狀況下其餘接口也能夠
2:老是使用最佳網絡地址接口(僅使用定義的網卡接口在同網絡通訊)
2)arp_ignore定義響應級別(0-8九個級別),響應時忽略方式
0:都全都響應
1:只對從本接口進入的請求響應,且本接口地址是個網絡地址
… …
註釋:通常使用arp_annouce=2,arp_ignore=1

(2)配置各RS主機參數
注意:all必須配置、eno16777736(本地)和lo兩個能夠同時所有配置或者配置其中一個
RealServer內核參數:

#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 1 > /proc/sys/net/ipv4/conf/INTERFACE/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/INTERFACE/arp_announce

注意:INTERFACE爲你的物理接口;此處網卡接口指的是eno16777736和lo
LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

5.VS主機:定義配置lvs-dr模式(此處採用rr算法)
(1)配置查看

[root@localhost~]# ipvsadm -A -t 172.16.50.50:80 -s rr
[root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.10 -g
[root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.11 -g
[root@localhost~]# ipvsadm -L -n

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

(2)測試

[root@localhost~]# curl http://172.16.50.50

由於基於rr算法調度,依次分發給RS主機

經過防火牆標記來定義lvs

1.FWM防火牆標記功能
防火牆標記能夠實現多個集羣服務綁定爲同一個,實現統一調度;將共享一組RS的集羣服務統一進行定義
FWM基於iptables的mangle表實現防禦牆標記功能,定義標記作策略路由

2.FWM定義集羣的方式
(1)在director上netfilter的mangle表的PREROUTING定義用於"打標"的規則

[root@localhost~]#iptables -t mangle -A PREROUTING -d $vip -p $protocol --dport $port -j MARK--set-mark #

$vip:VIP地址
$protocol:協議
$port:協議端口

(2)基於FWM定義集羣服務:

[root@localhost~]#ipvsadm -A -f # -s scheduler

3.實例演示

[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.50.50 -p tcp --dport 80 -j MARK--set-mark 5
[root@localhost~]# ipvsadm -A -f 5 -s rr
[root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.10 -g
[root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.11 -g

LVS負載均衡集羣服務搭建詳解(二)LVS負載均衡集羣服務搭建詳解(二)

LVS持久鏈接功能:lvs persistence

1.lvs persistence功能
不管ipvs使用何種scheduler,其都可以實如今指定時間範圍內始終未來自同一個ip地址的請求發往同一個RS;實現方式和lvs調度的十種算法無關,經過lvs持久鏈接模板(hash表)實現,當超過自定義的可持節鏈接時長候再根據LVS算法自己進行調度。
ipvsadm命令中-p選項實現,在-p後不指定具體數字(單位:秒),默認爲300,到時候會自動延長2分鐘,對於web自己就是15秒

2.模式
(1)每端口持久(PPC)
客戶端對同一服務端口發起請求,會基於該服務的端口實現請求在一段時間內對同一RS服務器持久鏈接;
例如:有兩臺主機作爲RS服務器作http和hssh的兩種服務的集羣,僅http作每端口持久,Client請求會實現綁定在,可是22號端口請求不會綁定在同一臺RS
(2)每客戶端持久(PCC):定義tcp或udp協議的0號端口爲集羣服務端口
director會將用戶的任何請求都識別爲集羣服務,並向RS進行調度;同一客戶端的請求任何端口都發往同一臺第一次選定的RS服務器
(3)每防火牆標記持久(PFWMC)
將兩個或兩個以上服務經過防火牆打標綁定在一塊兒,這些服務的請求實現同時定向與同一臺RS服務器,服務綁定同一RS
實例:
lvs-dr模式下以rr算法綁定http和https服務

[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 80 -j MARK--set-mark 99
[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 443 -j MARK--set-mark 99
[root@localhost~]# ipvsadm -A -f 99 -s rr -p
[root@localhost~]# ipvsadm -a -f 99 -r 172.16.100.68 -g
[root@localhost~]# ipvsadm -a -f 99 -r 172.16.100.69 -g

附錄:LVS-DR類型RS腳本示例

#!/bin/bash
#
vip=172.16.50.50
interface="lo:0"
case$1 in
start)
echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig$interface $vip broadcast $vip netmask 255.255.255.255 up
routeadd -host $vip dev $interface
;;
stop)
echo0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo0 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig$interface down
;;
status)
ififconfig lo:0 |grep $vip &> /dev/null; then
echo"ipvs is running."
else
echo"ipvs is stopped."
fi
;;
*)
echo"Usage: `basename $0` {start|stop|status}"
exit1
esac

免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/

相關文章
相關標籤/搜索