LVS-DR模型實現調度
(LVS服務器的網關可以任意配置,只要能出本地接口就行)
實驗環境:(5臺主機)
一臺客戶端
一臺路由器
一臺LVS服務器
兩臺RS服務器
1、搭建網絡環境
路由器配置:
一個接口連接私網
私網需要配置兩個
一個要和發布出去的私網IP通信(VIP:10.0.0.100,掩碼可以任意)
一個要和和LVS和RS服務器間通信(DIP:192.168.205.101)
一個接口連接公網
配置IP:
公網IP配置:
DEVICE=eth1 ONBOOT=yes BOOTPROTO=none IPADDR=172.18.106.21 PREFIX=16
私網IP配置:
cd /etc/sysconfig/network-scripts
vim ifcfg-eth0
DEVICE=eth0 ONBOOT=yes BOOTPROTO=none IPADDR=192.168.205.101 FREFIX=24
cp ifcfg-eth0 ifcfg-eth0:1
DEVICE=eth0:1 ONBOOT=yes BOOTPROTO=none IPADDR=10.0.0.200 PREFIX=24(私網IP,且與LVS的VIP能通信)
打開IP轉發功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
重啟network服務
LVS網絡配置:
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
NAME=ens33 DEVICE=ens33 ONBOOT=yes BOOTPROTO=none IPADDR=192.168.205.132 PREFIX=24 GATEWAY=192.168.205.101(網關可以任意配置,因為響應報文直接由RS服務器發往Clinet)
重啟network服務
RS網絡配置(兩臺配置幾乎相同,IP改一下就行了)
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
NAME=ens33 DEVICE=ens33 ONBOOT=yes BOOTPROTO=none IPADDR=192.168.205.132 PREFIX=24 GATEWAY=192.168.205.101(網關需要指定為路由器,由於只有一個路由器,所以指向路由器接口的IP)
重啟network服務
2、實現LVS-DR模型
LVS服務器
#!/bin/bash vip='10.0.0.100' iface='ens33:1' mask='255.255.255.255' port='80' rs1='192.168.205.100' rs2='192.168.205.160' scheduler='wrr'(調度算法可以修改) type='-g' case $1 in start) ifconfig $iface $vip netmask $mask iptables -F ipvsadm -A -t ${vip}:${port} -s $scheduler ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1(修改調度算法的時候這裏可修改窮權重) ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1 ;; stop) ipvsadm -C ifconfig $iface down ;; *) echo "Usage $(basename $0) start|stop";exit 1 ;; esac
RS服務器
#!/bin/bash vip='10.0.0.100' mask='255.255.255.255' dev=lo:1 case $1 in start) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore(會還網卡的arp_ignore可以為默認值,不影響客戶端訪問RS服務器) echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce(回環網卡的arp_announce可以為默認值,不影響客戶端訪問RS服務器) ifconfig $dev $vip netmask $mask ;; stop) ifconfig $dev down echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce ;; *) echo "Usage: $(basename $0) start|stop" exit 1 ;; esac
註意:此腳本設置的IP沒有保存到文件中,如果重啟網絡服務需重新運行腳本
了解內容:
限制響應級別:arp_ignore
0:默認值,表示可使用本地任意接口上配置的任意地址進行響應
1: 僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時,才給予響應
限制通告級別:arp_announce
0:默認值,把本機所有接口的所有信息向每個接口的網絡進行通告
1:盡量避免將接口信息向非直接連接網絡進行通告
2:必須避免將接口信息向非本網絡進行通告
實現http和https在同一集群調度
在防火墻上打標簽
iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m muliport --dport 80,443 -j MARK --set-mark 10
添加集群(如果之前有別的httpd服務的集群,可以刪掉)
ipvsadm -A -f 10 -s wrr
添加集群的RS服務器
ipvsadm -a -f 10 -r 192.168.205.100 -g
ipvsadm -a -f 10 -r 192.168.205.160 -g
持久連接實現方式:-p選項
每端口持久(PPC):每個端口對應定義為一個集群服務,每集群服務單獨調度
每防火墻標記持久(PFWMC):基於防火墻標記(MAKRK)定義集群服務;可實現將多個端口上的應用統一調度,即所謂的port Affinity
每客戶端持久(PCC):基於0端口(表示所有服務)定義集群服務,即將客戶端對所有應用的請求都調度至後端主機,必須定義為持久模式
LVS-DR模型實現調度