準備三臺測試機,一臺做爲分發器(dir),另外兩臺做爲處理用戶請求的服務器(rs),並清空防火牆規則:vim
systemctl stop firewalld
systemctl disable firewalld
systemctl start iptable-service
iptables -F
service iptables savecentos
* 分發器test03: 192.168.77.123
* rs服務器centos0: 192.168.77.129
* rs服務器test-a: 192.168.77.134
* vip: 192.168.77.111bash
1. dir上編寫腳本並執行服務器
[root@test03 ~]# vim /usr/local/sbin/lvs_dr.sh [root@test03 ~]# cat /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward # 打開端口轉發 ipv=/usr/sbin/ipvsadm vip=192.168.77.111 rs1=192.168.77.129 rs2=192.168.77.134 # eno16777736這裏換成本身的網卡名 ifdown eno16777736 ifup eno16777736 # 上面兩行是清理以前虛擬網卡相關的設置 ifconfig eno16777736:2 $vip broadcast $vip netmask 255.255.255.255 up # 設置虛擬網卡,綁定了一個虛擬ip(vip) route add -host $vip dev eno16777736:2 $ipv -C # 清空規則 $ipv -A -t $vip:80 -s wrr $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 # -g 指 dir模式 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1 [root@test03 ~]# sh /usr/local/sbin/lvs_dr.sh
2. 另外兩臺rs上編寫腳本並執行curl
[root@centos0 ~]# vim /usr/local/sbin/lvs_dir_mod_rs.sh [root@centos0 ~]# cat /usr/local/sbin/lvs_dir_mod_rs.sh #! /bin/bash vip=192.168.77.111 # 把vip綁定在lo上,是爲了實現rs直接把結果返回給客戶端 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 # 如下爲更改arp內核參數,是爲了讓rs順利發出mac地址給客戶端 echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce [root@centos0 ~]# sh /usr/local/sbin/lvs_dir_mod_rs.sh [root@test-a ~]# sh /usr/local/sbin/lvs_dir_mod_rs.sh
3.訪問測試測試
[root@test-a ~]# curl localhost Server test-a. [root@centos0 ~]# curl localhost Server centos0.
多刷新幾回再訪問
url