1、LVS安裝html
一、[root@localhost ~]# yum install -y ipvsadm前端
二、[root@localhost ~]# vi /etc/sysctl.conflinux
net.ipv4.ip_forward = 1
執行以下命令來應用:
[root@localhost ~]# sysctl -pweb
[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1算法
2、LVS配置(三種模型配置)docker
Lvs有3種模型,分別是NAT(Virtual Server via NAT)、DR(Virtual Server via Direct Routing)、Tun(Virtual Server via IP Tunneling)模型。windows
術語:後端
1. DS:Director Server。指的是前端負載均衡器節點。
2. RS:Real Server。後端真實的工做服務器。
3. VIP:向外部直接面向用戶請求,做爲用戶請求的目標的IP地址。
4. DIP:Director Server IP,主要用於和內部主機通信的IP地址。
5. RIP:Real Server IP,後端服務器的IP地址。
6. CIP:Client IP,訪問客戶端的IP地址。tomcat
(一)NAT模式(網絡地址轉換)bash
經過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分發給後端的真實服務器,真實服務器的響應報文經過調度器時,報文的源地址被重寫,再返回到客戶端,完成整個調度的過程。
優勢:支持全部操做系統及私有網絡,且只需一個公網 IP 地址
缺點:用戶請求和響應報文都必須通過dr地址重寫,當用戶請求愈來愈多時,調度器的處理能力將成爲瓶頸。
IP準備:VIP: 192.168.0.106, RSIP:192.168.22.15三、192.168.22.154
一、配置網絡環境
1)NAT模式下須要,負載均衡調度器(Director Server)須要兩個網卡,增長網卡(須要添加HWADDR不一樣的網卡,兩個網卡模式分別要屬於不一樣的連接模式分別爲橋接和NAT)。
2)生成完成後,查看虛擬機linux網卡配置狀況,成本網卡名爲ens37。
3)缺乏IP地址和網卡配置文件,手動配置一個,先配置橋接模式,配置物理網卡:
4)查看一下無線網卡地址(windows):ipconfig /all
5)生成完成後,配置虛擬機linux網卡靜態IP地址
[root@localhost network-scripts]# cp ifcfg-eno16777736 ifcfg-ens37 [root@localhost network-scripts]# vi ifcfg-ens37
TYPE=Ethernet #BOOTPROTO=dhcp BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=ens37 #UUID=115a7ee2-4721-4358-92e9-b6bd1068e062 DEVICE=ens37 ONBOOT=yes IPADDR=192.168.0.106 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=8.8.8.8
6)[root@localhost network-scripts]# systemctl restart network //增長後重啓。
[root@localhost network-scripts]# ifconfig
[root@localhost network-scripts]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.22.153 netmask 255.255.255.0 broadcast 192.168.22.255 inet6 fe80::20c:29ff:fe7e:c6f5 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:7e:c6:f5 txqueuelen 1000 (Ethernet) RX packets 991 bytes 88247 (86.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 683 bytes 99544 (97.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::20c:29ff:fe7e:c6ff prefixlen 64 scopeid 0x20<link> ether 00:0c:29:7e:c6:ff txqueuelen 1000 (Ethernet) RX packets 65 bytes 10234 (9.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 15 bytes 1688 (1.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
兩個網卡配置成功。
二、服務器配置
爲了測試用使用docker生成兩個tomcat服務器用於測試,在當前目錄建立兩個目錄
1)[root@localhost ~]# mkdir ~/tomcat ~/tomcat/8081 ~/tomcat/8082
[root@localhost 8081]# docker run --name tomcat1 -p 8081:8080 -v $PWD/data:/usr/local/tomcat/webapps/data -d tomcat:latest [root@localhost 8082]# docker run --name tomcat2 -p 8082:8080 -v $PWD/data:/usr/local/tomcat/webapps/data -d tomcat:latest [root@localhost 8081]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d2b6e4f2ac3d tomcat:latest "catalina.sh run" 4 seconds ago Up 3 seconds 0.0.0.0:8081->8080/tcp tomcat1 8e4e995fd60b tomcat:latest "catalina.sh run" 31 seconds ago Up 30 seconds 0.0.0.0:8082->8080/tcp tomcat2
把15三、154三個網關設置進行調整:
2)[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
3)ipvsadm配置
查看當前系統上網卡名稱,把上述橋連方式生成網卡IP地址作爲VIP(192.168.0.106)使用
[root@localhost network-scripts]# cd /proc/sys/net/ipv4/conf [root@localhost conf]# ls all default docker0 eno16777736 ens37 lo
建立lvs_nat.sh文件(touch lvs_nat.sh),填寫下列內容:
#!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects echo 0 > /proc/sys/net/ipv4/conf/eno16777736/send_redirects echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects iptables -t nat -F iptables -t nat -X iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE IPVSADM='/sbin/ipvsadm' $IPVSADM -C $IPVSADM -A -t 192.168.0.106:8080 -s rr $IPVSADM -a -t 192.168.0.106:8080 -r 192.168.22.153:8081 -m -w 1 $IPVSADM -a -t 192.168.0.106:8080 -r 192.168.22.153:8082 -m -w 1 $IPVSADM -a -t 192.168.0.106:8080 -r 192.168.22.154:8080 -m -w 1
參數說明:
-A:增長一個虛擬服務
-a:增長real server
-r:指定real server 的 IP地址
-t:表示TCP服務
-s:指定調度算法 rr:輪詢算法
-m –masquerading 指定LVS 的工做模式爲NAT 模式
4)[root@localhost ~]# ./lvs_nat.sh //執行lvs_nat.sh文件 ,隨系統自動啓動,可放入/usr/local/sbin/目錄下
5)測試安裝配置狀況:
[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 192.168.0.106:8080 rr -> 192.168.22.153:8081 Masq 1 0 0 -> 192.168.22.153:8082 Masq 1 0 0 -> 192.168.22.154:8080 Masq 1 0 0 [root@localhost ~]# ipvsadm -ln --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 192.168.0.106:8080 12 326 94 31294 681861 -> 192.168.22.153:8081 4 285 74 27223 652737 -> 192.168.22.153:8082 4 29 20 3447 29124 -> 192.168.22.154:8080 4 12 0 624 0 [root@localhost ~]# ipvsadm -ln --rate IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS -> RemoteAddress:Port TCP 192.168.0.106:8080 0 0 0 0 0 -> 192.168.22.153:8081 0 0 0 0 0 -> 192.168.22.153:8082 0 0 0 0 0 -> 192.168.22.154:8080 0 0 0 0 0
6)測試訪問(可中止其中服務器進行測試):
*注:若是沒法鏈接成功,檢查DS服務器防火牆是否關了(使用此命令解決:iptables -F;setenforce 0,重啓防火牆)
三、配置還原:
(1)ipvsadm -C 清空規則,ipvsadm -ln 確認
(2)iptables -t nat -F: 清空iptables的nat規則
(3)master和slave把網卡所對應的網關(GATEWAY)改回來,vi /etc/sysconfig/network-scripts/ifcfg-eno16777736,重啓網卡
systemctl restart network
(4)dr用不到ens37這個網卡(192.168.0.106),在虛擬機上刪除橋連網卡,執行:ifdown ens37,在/etc/sysconfig/network-scripts/目錄下刪除ifcfg-ens37文件,重啓網卡:systemctl restart network
上一方案在實際生產中較少使用。
(二)、DR模式(直接路由模式)
經過改寫請求報文的MAC地址,將請求發送到真是服務器,真實服務器將響應直接返回給用戶,直接路由模式能夠極大的提升集羣系統的伸縮性,這種方法沒有IP隧道的開銷,集羣中真實的服務器也沒有必要必須支持IP隧道協議,只是須要調度器與真實服務器有一塊網卡連在同一物理網段上。
一、環境配置
IP準備:
Director節點: (ens33 192.168.22.153 vip ens33:0 192.168.158)
Real server1: (ens33 192.168.22.154 vip lo:0 192.168.158)
Real server2: (ens33 192.168.22.155 vip lo:0 192.168.158)
二、服務器配置
1)DS轉發服務器配置,在/usr/local/sbin/目錄下建建lvs_dr.sh文件
echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/sbin/ipvsadm vip=192.168.22.158 rs1=192.168.22.154 rs2=192.168.22.155 #刪除一個虛擬IP #ifconfig ens33:0 down #增長一個虛擬IP ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.255 up #增長一條路由 route add -host $vip dev ens33:0 $ipv -C $ipv -A -t $vip:8080 -s wrr $ipv -a -t $vip:8080 -r $rs1:8080 -g -w 1 $ipv -a -t $vip:8080 -r $rs2:8080 -g -w 3
說明:ifconfig ens33:0 192.168.22.158 broadcast 192.168.22.158 netmask 255.255.255.255 up ,表示在現有網卡上建立虛擬IP 192.168.22.158,其實現原理主要是靠TCP/IP的ARP協議。
參數說明:
-g –gatewaying 指定LVS 的工做模式爲dr(直接路由模式)(也是LVS 默認的模式)
-r –real-server server-address 真實的服務器[Real-Server:port]
2)[root@localhost ~]# ./lvs_dr.sh
3)真實服務器配置,在兩臺rs1,rs2都寫入配置腳本
[root@localhost ~]# touch lvs_rs.sh
[root@localhost ~]# vi /usr/local/sbin/lvs_rs.sh
#!/bin/bash vip=192.168.22.158 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #調整內核參數 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@localhost ~]# chmod -R 755 lvs_rs.sh //要受權才能執行
4)[root@localhost ~]# ./lvs_rs.sh
(1)調整arp內核參數的意義:
(1) ARP廣播會產生的問題
當客戶端發起訪問VIP 對應的域名的請求(curl 192.168.22.158)時,根據網絡通訊原理會產生ARP 廣播,由於負載均衡器dir和真實的服務器rs在同一網絡而且VIP設置在集羣中的每一個節點上,此時集羣內的真實服務器會嘗試回答來自客戶端計算機的查找VIP的ARP廣播,這就會產生問題,你們都說我是"VIP"。
(b)爲了達到負載均衡的目的,必須想法辦讓真實服務器忽略來自客戶端計算機的ARP廣播請求 ——》 調整arp內核參數
參考:http://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
http://blog.chinaunix.net/uid-13423994-id-5146098.html
(2)問題:lvs有vip,real server也有vip,但client請求只訪問lvs的vip?
在全部real server上要關閉全部arp請求,致使不能響應client發出的arp請求(至關於啞吧),只有lvs能夠響應,這樣請求就會傳到lvs的vip中,這就是爲何要禁止real server 的 arp請求和響應
5)測試:
直接訪問192.168.22.158
*注:若是沒法鏈接成功,檢查DS服務器防火牆是否關了(使用此命令解決:iptables -F)
三、配置還原(可作爲停機腳本)
(1) director服務器
[root@localhost ~]# /sbin/ipvsadm -C [root@localhost ~]# ip addr del 192.168.22.158 dev ens33
(2)real server服務器
[root@localhost ~]# ip addr del 192.168.22.158 dev lo [root@localhost ~]# echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@localhost ~]# echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce [root@localhost ~]# echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore [root@localhost ~]# echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
爲方便使用,真實服務器可編寫啓停腳本,lvs_rs.sh
#!/bin/bash #description : start realserver VIP=192.168.22.158 /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of REALServer" /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up 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 ;; stop) /sbin/ifconfig lo:0 down echo "close LVS Directorserver" echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce ;; *) echo "Usage: $0 {start|stop}" exit 1 esac
(二)、TUN模式(IP隧道模式)
調度器將請求的報文經過IP隧道轉發至真實服務器,而真實的服務器直接將結果返回給用戶,調度器只處理請求報文,因爲通常網路服務的應答大於請求,採用IP隧道模式,集羣系統的最大吞吐量能夠提升10倍。
一、環境配置
IP準備:
Director節點: (ens33 192.168.22.153 vip ens33:0 192.168.158)
Real server1: (ens33 192.168.22.154 vip lo:0 192.168.158)
Real server2: (ens33 192.168.22.155 vip lo:0 192.168.158)
1) /etc/sysctl.conf
把 net.ipv4.conf.all.rp_filter和 net.ipv4.conf.default.rp_filter設爲0便可
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
系統啓動後,會自動加載這個配置文件,內核會使用這個變量
2)命令行
顯示一個內核變量 sysctl net.ipv4.conf.all.rp_filter
設置一個內核變量 sysctl -w net.ipv4.conf.all.rp_filter=0
設置完後,會更新內核(實時的內存)中的變量的值,但不會修改sysctl.conf的值
二、服務器配置
1)DS轉發服務器配置,在/usr/local/sbin/目錄下建建lvs_tun.sh文件
#!/bin/bash ipv=/sbin/ipvsadm vip=192.168.22.158 ifconfig tunl0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev tunl0 ##添加轉發規則 $ipv -C $ipv -A -t 192.168.22.158:8080 -s rr $ipv -a -t 192.168.22.158:8080 -r 192.168.22.154:8080 -i $ipv -a -t 192.168.22.158:8080 -r 192.168.22.155:8080 -i
參數說明:
-i –ipip 指定LVS 的工做模式爲隧道模式
[root@localhost ~]# chmod -R 775 lvs_tun.sh
[root@localhost ~]# ./lvs_tun.sh
2)真實服務器配置,在兩臺rs1,rs2都寫入配置腳本
[root@localhost ~]# touch lvs_rs.sh
[root@localhost ~]# vi /usr/local/sbin/lvs_rs.sh
#!/bin/bash vip=192.168.22.158 ifconfig tunl0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev tunl0 echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce echo "0" > /proc/sys/net/ipv4/conf/tunl0/rp_filter echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
[root@localhost ~]# chmod -R 755 lvs_rs.sh //要受權才能執行
3)[root@localhost ~]# ./lvs_rs.sh
若是無錯誤表示配置成功.
4)測試:
直接訪問192.168.22.158
*注:遇到IP可通,但加端口不通的狀況,可檢查DS服務器防火牆是否關了(使用此命令解決:iptables -F),再關閉RS服務防火牆。
三、爲方便使用,真實服務器可編寫啓停腳本,lvs_rs.sh
#!/bin/bash #description : start realserver VIP=192.168.22.158 /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of REALServer" modprobe ipip /sbin/ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce echo "0" > /proc/sys/net/ipv4/conf/tunl0/rp_filter echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter ;; stop) /sbin/ifconfig tunl0 down echo "close LVS Directorserver" echo "0" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce echo "1" > /proc/sys/net/ipv4/conf/tunl0/rp_filter echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter ;; *) echo "Usage: $0 {start|stop}" exit 1 esac
3、LVS與Keepalived配置(基於DR模型)
一、環境配置
1)IP準備:
Director節點: (ens33 192.168.22.153 vip ens33:0 192.168.158)
Director節點: (ens33 192.168.22.154 vip ens33:0 192.168.158)
Real server1: (ens33 192.168.22.155 vip lo:0 192.168.158)
Real server2: (ens33 192.168.22.156 vip lo:0 192.168.158)
2)程序準備:
[root@localhost ~]# yum install ipvsadm
[root@localhost ~]# yum install keepalived
3)配置系統日誌(方便監控運行狀況),修改keepalived的日誌輸入(由於keepalived的日誌輸出在/var/log/message裏面,很差查看,可進行修改)
[root@localhost ~]# vi /etc/sysconfig/keepalived
把KEEPALIVED_OPTIONS="-D" 修改成KEEPALIVED_OPTIONS="-D -d -S 0"
[root@localhost ~]# vi /etc/rsyslog.conf
最後添加:
# keepalived -S 0
local0.* /var/log/keepalived.log
從新啓動日誌
[root@localhost log]# systemctl restart rsyslog
[root@localhost log]# systemctl restart keepalived
[root@localhost log]# tail keepalived.log
Sep 8 20:51:58 localhost Keepalived_healthcheckers[39423]: Activating healthchecker for service [10.10.10.3]:1358
二、服務器配置
1)keepalived服務器配置
Master端192.168.22.153機器的配置:
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.22.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.22.158 } } virtual_server 192.168.22.158 8080 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP #sorry_server 192.168.200.200 1358 real_server 192.168.22.155 8080 { weight 2 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8080 } } real_server 192.168.22.156 8080 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8080 } } }
Backup端的192.168.22.154機器配置:
[root@localhost ~]# scp root@192.168.22.153:/etc/keepalived/keepalived.conf /etc/keepalived/
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.22.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.22.158 } } virtual_server 192.168.22.158 8080 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP #sorry_server 192.168.200.200 1358 real_server 192.168.22.155 8080 { weight 2 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8080 } } real_server 192.168.22.156 8080 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8080 } } }
兩個文件主要不一樣處:
3)真實服務器配置
兩臺真實服務器rs一、rs2分別建立lvs_dr.sh文件,內容以下
#!/bin/bash #description: Config realserver VIP=192.168.22.158 /etc/rc.d/init.d/functions case "$1" in start) /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up /sbin/route add -host $VIP dev lo:0 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 sysctl -p >/dev/null 2>&1 echo "RealServer Start OK" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
[root@localhost ~]# chmod -R 755 lvs_dr.sh
[root@localhost ~]# sh lvs_dr.sh start
真實服務器的Tomcat服務器,在webapp下放ROOT文件夾,裏面放index.html,內容爲 :
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> Master Post: 8080. </body> </html>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> Backup Post: 8080. </body> </html>
3)測試
直接訪問以下192.168.22.158:8080
注意防火牆設置,真實服務器最好關閉防火牆。
參考:http://blog.51cto.com/jinlong/1956187 https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119665 https://blog.csdn.net/huaishu/article/details/17023061/ http://blog.51cto.com/wgkgood/1102870