Lvs與Keepalived集羣

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

相關文章
相關標籤/搜索