天天看點

負載均衡----LVS

LVS的三種工作模式

LVS-NAT:

LVS-NAT方式的思路很簡單,它利用排程伺服器實施網絡層資料欺騙,它把用戶端發送到排程伺服器的資料IP包的目标位址進行了替換。

LVS-DR:

這個方法的思路是實施資料鍊路層資料欺騙,修改網絡幀資料的Mac位址。

LVS-TUN:

這個方法是為了突破LVS-DR同一網段内的限制所提出來的。它不做任何欺騙,而是光明正大的交流,在網絡層進行了二次包裝

各種模式的優缺點

VS/NAT的優缺點

<1>優點:

對後端的作業系統沒有要求;

隻需要一個IP位址配置在排程器上,伺服器組可以用私有IP位址;

支援端口映射;

<2>缺點:

請求和響應都需要通過LB,伸縮能力有限(一般後面能連接配接10台左右伺服器)

需要伺服器和LB在同一個區域網路中;

需要将伺服器的預設網關設定為LB;

VS/TUN的優缺點

<1>優點:

不需要排程應答封包,負載能力強;

伺服器和排程器可以不在同一個VLAN中;

支援廣域負載均衡;

<2>缺點:

所有的伺服器必須支援“IP Tunneling”協定,需安裝核心子產品,安裝複雜;

建立IP隧道的開銷大;

伺服器需要聯通外網,風險較大;

不支援端口映射;

VS/DR的優缺點

<1>優點:

與TUN相比,沒有IP隧道的開銷,性能較高;

<2>缺點:

要求LB和伺服器都有一塊網卡連在同一個實體網段中;

不支援端口映射;

使用場景

VS/NAT:小并發的實驗性應用、mysql叢集;

VS/TUN:廣域網負載;

VS/DR:大衆方式;

 LVS的排程算法有十種,其中靜态算法4種,動态算法6種。

靜态算法:不考慮後端伺服器的連接配接情況和負載情況,隻根據算法進行排程。

1.RR(輪叫排程  round robin)

        排程器通過”輪叫”排程算法将外部請求按順序輪流配置設定到叢集中的真實伺服器上,它均等地對待每一台伺服器,而不管伺服器上實際的連接配接數和系統負載。

2.WRR(權重輪叫排程 Weight RR)

        排程器通過“權重輪叫”排程算法根據真實伺服器的不同處理能力來排程通路請求。這樣可以保證處理能力強的伺服器處理更多的通路流量。排程器可以自動問詢真實伺服器的負載情況,并動态地調整其權值。

3.DH 目标位址散列排程(Destination  Hash)

        根據請求的目标IP位址,作為散列鍵(HashKey)從靜态配置設定的散清單找出對應的伺服器,若該伺服器是可用的且未超載,将請求發送到該伺服器,否則傳回空。

4.SH 源位址散列排程(Source Hash)

         源位址散列”排程算法根據請求的源IP位址,作為散列鍵(HashKey)從靜态配置設定的散清單找出對應的伺服器,若該伺服器是可用的且未超載,将請求發送到該伺服器,否則傳回空。

動态算法:前端的排程器會根據後端真實伺服器的實際連接配接情況來配置設定請求

1.LC 最少連結

        排程器通過”最少連接配接”排程算法動态地将網絡請求排程到已建立的連結數最少的伺服器上。如果叢集系統的真實伺服器具有相近的系統性能,采用”最小連接配接”排程算法可以較好地均衡負載。

2.WLC 權重最少連結

        在叢集系統中的伺服器性能差異較大的情況下,排程器采用“權重最少連結”排程算法優化負載均衡性能,具有較高權值的伺服器将承受較大比例的活動連接配接負載。排程器可以自動問詢真實伺服器的負載情況,并動态地調整其權值。

3.SED 最短延遲排程(Shortest Expected Delay)

        在WLC上改進,因為非活躍連結對伺服器造成的負載并不高,是以此算法不再考慮非活動狀态,使用Overhead =(活躍連結數+1)/權重。得出數值最小的接受下一個前端發來的請求。

4..NQ 永不排隊/最少隊列排程(Never Queue Scheduling NQ)

        無需隊列,如果有 realserver=0的伺服器,則直接把前端的請求發給他,而不經過sed算法。這樣就保證了不會有伺服器是空間的。假如一台伺服器有很多非活動連結,假如這些連結是dns通過udp建立起來的,那實質上他其實是沒什麼負載的,但是在NQ下面則是不會将請求發往該伺服器,這樣有可能會造成資源的浪費。而假如這些連結是通過http建立起來的,就要考慮非活動連結對伺服器帶來的壓力。

5.. LBLC:基于局部性的最少連結(locality-Based Least Connections)

        目前主要用于Cache叢集系統。該算法根據請求的目标IP位址找出該目标IP位址最近使用的伺服器,若該伺服器是可用的且沒有超載,則将請求發往該伺服器,若伺服器不存在或超載,則按照最少連結原則選出一台連接配接數最少的伺服器,并将請求發往給它。

6. LBLCR:帶複制的基于局部性最少連接配接(Locality-Based Least Connections with Replication)

        目前主要用于Cache叢集系統。與LBLC不同的是,LBLCR是将目标位址與伺服器組建立關系,根據最小連結原則選出伺服器,假如沒有超載,則把請求發往給該伺服器。假如超載,則再在伺服器叢集中根據最小連結原則選出伺服器,并将請求發往給該伺服器。

LVS/DR模式配置方式

關閉selinux

setenforce  0

防火牆開放端口

firewall-cmd  --add-port=80/tcp  --permanent

firewall-cmd  --reload

配置排程伺服器

加載ip_vs子產品

modprobe ip_vs    

檢視相關資訊

cat /proc/net/ip_vs

安裝ipvsadm

yum  -y  install  ipvsadm

在負載均衡伺服器上轉發編輯腳本

#!/bin/bash

#

ifconfig ens33:0 172.16.1.189 broadcast 172.16.1.189 netmask 255.255.255.255 up #添加虛拟位址的接口

route add -host 172.16.1.189 dev ens33:0                                                                    #給ens33:0添加路由

ipvsadm -C                                                                                                                     #清除核心虛拟伺服器表中的所有記錄

ipvsadm -A -t 172.16.1.189:80 -s wlc                                                                             #建立虛拟伺服器

ipvsadm -a -t 172.16.1.189:80 -r 172.16.1.11:80 -g                                                       #添加伺服器節點

ipvsadm -a -t 172.16.1.189:80 -r 172.16.1.12:80 -g                                                       #添加伺服器節點

ipvsadm -a -t 172.16.1.189:80 -r 172.16.1.13:80 -g                                                       #添加伺服器節點

ipvsadm -Ln                                                                                                                    #檢視節點狀态,加個“-n”将以數字形式顯示位址、端口資訊

//選項注釋:

"-A"表示添加虛拟伺服器,

"-a"表示添加真實伺服器

"-t"用來指定VIP位址及TCP端口

"-r"用來指定RIP位址及TCP端口

"-s"用來指定負載排程算法——rr(輪詢)、wrr(權重輪詢)、lc(最少連接配接)、wlc(權重最少連接配接)

"-m"表示使用NAT群集模式("-g"是DR模式,"-i"是TUN模式)

檢視網卡是否已建立虛拟接口

ifconfig

在節點機器上編輯轉發腳本

#!/bin/bash

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

ifconfig lo:0 172.16.1.189 broadcast 172.16.1.189 netmask 255.255.255.255 up          #在lo上配置虛拟接口

route add -host 172.16.1.189 dev lo:0                                                                             #配置虛拟接口的路由

sysctl -p &>/dev/null

檢視網卡是否已經建立虛拟接口

Ifconfig

測試

在除了LVS叢集的機器上通路,切記不可在LVS環境本地進行測試,會通路不到。例如這裡的一台排程器和三台後端伺服器都不能作為測試環境。

for n in `seq 10000`;do curl 172.16.1.189:/test/;sleep 1;done

得出下圖證明負載已經正常運作

負載均衡----LVS

LVS/NAT模式配置方式

搭建環境

為了防止selinux和iptables對實驗的影響,我們在實驗之前先将所有selinux政策臨時調為0,将iptables服務關閉

  • 排程器:VIP192.168.1.89/24   DIP172.16.1.89/24
  • 節點rs1:192.168.1.89/24, 網關指向排程器DIP172.16.1.7/24
  • 節點rs2:192.168.1.89/24, 網關指向排程器DIP172.16.1.8/24
  • 節點rs3:192.168.1.89/24, 網關指向排程器DIP172.16.1.9/24

由于排程器上需要轉發請求,是以需要在核心中開啟轉發功能:

在排程器上,執行如下步驟

vim /etc/sysctl.conf               #修改這一行,将0改為1,表示開啟轉發功能

net.ipv4.ip_forward = 1

sysctl -p                                 #讀取配置檔案,顯示以下内容證明修改成功

net.ipv4.ip_forward = 1

添加排程器

在排程器上,執行以下步驟

yum -y install ipvsadm     #安裝ipvaadm工具

添加節點

在排程器上,執行以下步驟

ipvsadm -A -t 192.168.1.89:80 -s rr   #設定排程器,排程算法為rr(輪詢)

ipvsadm -a -t 192.168.1.89:80 -r 172.16.1.7:80 -m

ipvsadm -a -t 192.168.1.89:80 -r 172.16.1.8:80 -m

ipvsadm -a -t 192.168.1.89:80 -r 172.16.1.9:80 -m

檢視狀态

ipvsadm -Ln

P Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.89:80 rr

  -> 172.16.1.7:80                Masq    1      0          2         

  -> 172.16.1.8:80                Masq    1      0          2         

  -> 172.16.1.9:80                Masq    1      0          3  

測試

curl   192.168.1.89 

轉載于:https://www.cnblogs.com/QicongLiang/p/9830336.html