1. 程式人生 > >虛擬叢集LVS及DR模式搭建

虛擬叢集LVS及DR模式搭建

LVS(虛擬叢集Linux Virtual Server

LVS-NAT:地址轉換,資料包來回都要經過NAT轉換,所以Director Server(即LVS伺服器)將成為系統瓶頸。使用NAT模式將需要兩個不同網段的IP,一個IP接受外部請求服務,一般為外網ip,此IP稱為VIP,一個IP與後realserver同一地址段,負責相互通訊,稱為DIP。後端realserver的閘道器地址需指向DIP。同時需開啟linux核心的資料包轉發功能。

             

 

LVS-TUN:隧道 ,LVS/TUN與 LVS/DR 類似。只是在報文外面再加一層IP封裝,整個過程比LVS/DR模式多一次報文的封裝/解封過程。LVS/DR只支援本地網路,LVS/TUN卻可以跨機房。

             

 

LVS-DR: 直接路由,此種方式是最常用的方式,

       所有的Director和RealServer都在同一個物理網路中(交換機)並且都只有一塊網絡卡。

 

 

常用的幾種排程:

1. 輪叫排程 rr                    所有real_server輪流

2. 加權輪叫 wrr                 按照效能比例,好的多分,差的少分

3. 最少連結 lc                    給連結數少的分

4. 加權最少連結 wlc          按照效能比例,好的多分,差的少分,連結數也要保持比例

 

 

5. 基於區域性性的最少連線排程演算法 lblc

6. 複雜的基於區域性性最少的連線演算法 lblcr

7. 目標地址雜湊排程演算法 dh

8. 源地址雜湊排程演算法 sh

 

 

用DR模式配置(必須同一網段)

       首先準備構建叢集的三臺裝置

       direct_server:192.168.254.17

       real_server1:192.168.254.18

       real_server2:192.168.254.19

       擬定vip為:192.168.254.250     

      

direct_server:

       # yum -y install ipvsadm

       # yum -y install httpd*

       # ipvsadm -C

       # ipvsadm -A -t 192.168.11.250:80 -s rr                

       # ipvsadm -a -t 192.168.11.250:80 -r 192.168.11.138:80 -g 

       # ipvsadm -a -t 192.168.11.250:80 -r 192.168.11.140:80 -g 

       # ifconfig ens33:0 192.168.11.250 broadcast 192.168.11.250 netmask 255.255.255.255 up       在ens33的子網絡卡新增一個虛擬ip,保證服務可以訪問到VIP;

       # route add -host 192.168.11.250 dev ens33:0       

         新增一個路由通過ens33來訪問Vip 192.168.254.250

       # vim /dev/sysconfig/ipvsadm  隨便編輯一下      

       # ipvsadm -Ln --stats  -L顯示核心虛擬伺服器表

                             --zero  清空流量      -n 輸出IP地址和埠的數字形式

 

                            /# -a新增          -t 新增一個虛擬IP的tcp 協議

                            /# -C:–clear 清除核心虛擬伺服器表中的所有記錄

                            /# -A新增一個虛擬IP  -s排程器

                            /# -r real_server         -g DR模式

                            /# ens33:0 是子網絡卡,設定第二個ip

                            /# broadcast 廣播

                            /# ipvsadm檔案缺失後會導致ipvsadm start失敗

real_server:

# yum -y install httpd*

# ifconfig lo:0 192.168.11.250 broadcast 192.168.11.250 netmask 255.255.255.255 up   

       # route add -host 192.168.11.250 dev lo:0                    

                            /#loopback網絡卡,預設地址127.0.0.1

       # 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

       # vim /etc/www/html/index.html

              <h1>this is 138(或者140) host</h1>

       # systemctl start httpd.service

 

測試:

用第四臺虛擬機器

# curl 192.168.11.250    出現下圖情況即成功

 

 

也可以windows裝curl包後,在命令列輸入上述命令測試

      

       arp_ignore:定義接收到ARP請求時的響應級別     

              0:預設,只用本地配置的有響應地址都給予響應      

              1:僅僅在目標IP是本地地址,並且是配置在請求進來的介面上的時候才給予響應

                     (僅在請求的目標地址配置請求到達的介面上的時候,才給予響應)

       arp_announce:定義將自己的地址向外通告時的級別      

              0:預設,表示使用配置在任何介面的任何地址向外通告      

              1:儘量僅向目標網路通告與其網路匹配的地址      

              2:僅向與本地介面上地址匹配的網路進行通告      

 

 

tun隧道模式

 

       lvs-server:

       ifconfig tunl0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.0 up

       route add -host 192.168.254.250 dev tunl0

       ipvsadm -A -t 192.168.254.250:80 -s rr

       ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18 -i

       ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19 -i

 

 

       real server:

       ifconfig tunl0 192.168.254.250 netmask 255.255.255.255 broadcast 192.168.254.250 up

       route add -host 192.168.254.250 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

 

       0:不開啟源地址校驗。

       1:開啟嚴格的反向路徑校驗。對每個進來的資料包,校驗其反向路徑是否是最佳路徑。

              如果反向路徑不是最佳路徑,則直接丟棄該資料包。

       2:開啟鬆散的反向路徑校驗。對每個進來的資料包,校驗其源地址是否可達,即反向路徑是否能通(通過任意網口),

              如果反向路徑不同,則直接丟棄該資料包。