linux之集群(負載均衡,高可用,高性能)和LVS集群,調度算法


集群

集群(cluster)也稱為群集,表示一群的意思,在服務器領域表示大量的服務器的集合體。

將各個主機組成集群,形成一個系統協調工作,其可擴展性、可用性、容量、性能都會有大規模的提升

1.)企業級集群分類:LB  HA  HP  負載均衡實現方式和集群工作層次划分

1)負載均衡集群LB,Load Balance)並發訪問量

2)高可用集群HA,High Availability)什么地方都可用,在任何時候都可以

3)高性能集群HP,High Performance)把很多機器集合在一起, 性能增強

 

1、負載均衡集群(LB)

提高應用系統的響應能力、盡可能處理更多的訪問請求、減少延遲為目標,獲得高並發、高負載(LB)的整體能力LB負載分配依賴於主節點的算法,將來自客戶機訪問請求分擔給多個服務器節點。

2、高可用集群(HA)

提高應用系統的可靠性、盡可能減少終端宕機時間為目標確保服務的連續性,達到高可用(HA)的容錯效果,例“故障切換”“雙擊熱備”“多機熱備”等都屬於高可用群集技術。HA工作方式包括雙工主從兩種模式雙工所有節點同時在線主從則只有主節點在線,但當出現故障時從才切換為主節點。

3、高性能集群(HP)

以提高應用系統的CPU運算速度、擴展硬件資源和分析能力為目標,獲得相當於大型、超級計算機的高性能運算HPC,High performance computing)能力。如“雲計算”“網格計算”。高性能群集依賴於“分布式運算”、並行計算:通過專用硬件和軟件將多個服務器CPU、內存等資源整合在一起,實現大型、大型、超級計算機才具備的計算能力。

 

 

負載均衡集群實現方式

1)硬件方式:F5、A10、Citrix、NetScaler、array、梭子魚、綠盟

2)軟件方式:LVS、haproxy、nginx

 

 

負載均衡集群工作的層次划分

傳輸層:LVS,haproxy

應用層:haproxy、nginx、ats

 

2.)LVS集群

LVS(Linux Virtual Server)即Linux虛擬服務器,是由章文嵩博士主導的開源負載均衡項目,已經被集成到Linux內核模塊中。該項目在Linux內核中實現了基於IP的數據請求負載均衡調度方案,其體系結構如下圖1所示,互聯網用戶從外部訪問公司的外部負載均衡服務器,用戶的Web請求會發送給LVS調度器,調度器根據預設的算法決定將該請求發送給后端的某台Web服務器。根據LVS工作模式的不同,真實服務器會選擇不同的方式將用戶需要的數據發送到用戶。LVS工作模式分為NAT模式、TUN模式、以及DR模式。

 

1)LVS(Linux Virtual Server)工作在傳輸層基於TCP和UDP進行調度工作。

 

2)工作方式:根據目標IP和端口轉發到后端主機集群服務器池)中某一台主機(如何轉發請求,基於某種特定的算法

 

3)LVS基於netfilter進行設計的但是由於LVS有自己的會話表,可能會與iptables中會話表產生沖突導致了二者無法完美並行。這樣的后果就是會喪失部分安全功能。LVS運行時關閉iptabs

 

4)LVS由ipvsadm和ipvs   兩個部分組成

ipvsadm是用戶命令工具,用於管理LVS集群服務     ipvs是LVS的內核功能模塊。

 

查看系統內核是否編譯了LVS,以及支持的功能

grep -i 'IPVS' /boot/config-3.10.0-XXX.el7.x86_64

通常ipvs模塊在Linux內核中被自動裝載,若沒有被裝載,執行modprobe ip_vs進行裝載,然后cat /proc/net/ip_vs 查看是否裝載成功。

 

安裝ipvsadm

yum install ipvsadm –y

 

LVS架構各個組成部分名詞:

調度器director ,DIP          負載均衡器 ip

RSreal server,RIP    真實提供服務的服務器     ip

CIPclient IP客戶端的ip

VIPDirector Virutal IP調度器的  連接外網 虛擬ip

DIPDirector IP調度器的 真實ip

 

LVS結構類型

1)lvs-nat

2)lvs-dr(direct routing)

3)lvs-tun

 

1.NAT模式:   (LVS調度器即網關)

用戶通過DNS解析到負載均衡設備上外網地址LVS外網IP又稱VIPVirtual IP Address),用戶將請求發送至VIP,LVS根據預設的算法選擇后端的一台真實服務器,通過NAT的方式 修改 目標IP與port)將數據請求包轉發給真實服務器    --修改目標ip  DNAT

真實的服務器將響應數據包  返回給LVS調度器,調度器在得到響應的數據包后通過NAT的方式修改源ip   port)將響應數據包發送回用戶。--修改源地址ip  SNAT

 

注意事項:①:RS應該和DIP都使用私網地址,並且RS網關須指向內網的ip地址DIP

       ②:請求和響應報文都要基於director轉發

       ③:director支持端口映射

2.DR模式也叫直接路由模式,

LVS接收入站請求  (VIP端口等待連接)以及根據算法選出真實服務器,由后端真實服務器負責響應請求。DR模式要求調度器(DIP)與后端服務器在同一個局域網內    VIP地址在調度器與后端所有的真實服務器間共享   回應 客戶端時會返回 調度器VIP  真實服務器的ip對外不可見   所以 把真實服務器的的源地址改為                                調度器對外可見的VIP    真實服務器發送數據給客戶端

 

(因為真實服務器  給客戶端回應數據包時   需要設置IP為VIP地址目標IP為客戶端IP  這樣客戶端訪問的是調度器的VIP地址,回應的源地址也是VIP地址)。

由於多台計算機設置相同的VIP地址,所以要求調度器的VIP地址是對外可見的真實服務器的VIP對外是不可見的)

因此要求真實服務器的VIP地址必須配置在Non-ARP回環地址的網絡設備上,不會向外廣播自己的MAC及對應的IP地址。

調度器根據算法在選出真實服務器后,在不修改數據報文的情況下,將數據幀的MAC地址修改為選出的真實服務器的MAC地址,將該數據幀發給真實服務器。

 

負載均衡器  通過 交換機  和后台機器來

注意事項:

①:保證前端路由器將目標IP為VIP的請求報文發送給director

          ②:RS跟director必須在同一物理網絡中

          ③:請求報文經由director調度,但響應報文一定不能經過director

          ④:不支持端口映射

          ⑤:RS網關不能指向director

3.tun模式: 

數據發給調度器, 把選出的真實服務器 IP地址和端口   封裝添加到報頭  把數據包轉發給 后台真實服務器  (所以要求服務器公網ip 來溝通)  一般在局域網架設集群

 

IP隧道(IP tunning)是一種數據包封裝技術,可將原數據包封裝並添加新的報頭(包括新的源地址及端口、目標地址及端口),

實現將一個發往  目標為調度器VIP地址的數據包封裝(修改目標地址為選擇出來的真實服務器的IP地址及對應端口),之后通過隧道轉發給后端的真實服務器Real Server),

LVS(TUN)模式要求真實服務器可以直接與外部網絡連接,真實服務器在收到請求數據包后直接給客戶端主機響應數據。

 

注意事項:DIP、RIP、VIP全是公網地址

          ②RS的網關不能指向DIP

          ③請求報文必須由director調度,響應報文必須不能經過director

          ④不支持端口映射

          ⑤RS的OS必須支持隧道功能

 

 

3.調度算法(lvs scheduler)

負載均衡集群進行調度,如何挑選后端RS進行調度?--->基於調度算法

靜態方法根據算法  本身進行調度

RR(輪詢)WRR(加權輪詢)SH(源地址hash,實現session保持)、DH(目的地址hash)    

動態方法:根據算法  以及各個RS的當前負載狀態   進行調度

LC(最小連接數)、WLC(加權最小連接)、SED(最短期望延遲)、NQ(永不排隊)、LBLC、LBLCR

 

 

 

1)rr:輪詢 rr 算法就是將外部請求順序輪流分配到集群中node 上,但不考慮每台node 的負載情況。

2)wrr:加權輪詢 wrr 算法在rr 算法的基礎上會考察每台node的負載情況,並嘗試讓負較輕的node 承擔更多請求。  權重 能者多勞     node真實服務器 也叫節點

3)lc:最少連接算法可以讓LVS 嘗試把新的請求交給當前連接數最少的node ,直到此node 連接數不再屬於最少為止。

4)wlc:加權最少連接 wlc 算法也有權重的干預。LVS 會根據每台node的權重並綜合連接數控制轉發行為。     連接數   權重

5)lblc:局部最少連接算法會加上針對源請求IP地址的路由估算,並嘗試把請求發送到與源請求IP路由最近的node 上。此種方法一般用於遠程或者是大規模的集群組。

來數據請求  調度器 計算路由 發送給   距離最短的 服務器節點(一個節點)

6)lblcr:帶有復制的局部最少連接算法 lblcr 算法是在lblc 算法的基礎上增加了一個node 列表,先依據lblc 算法計算出與源請求IP地址最近的一組node ,然后再決定把請求發送到最近一組中的最近的一台node 。

來數據請求  調度器 計算路由 發送給   最短的 一組 服務器節點  然后發送給最近的 一個服務器節點

若此node沒有超載則將請求轉發給這台node, 如果超載則依據”最少連接”原則找到最少連接的node並將此node 加入集群組中。並將請求轉給此node。

7)dh:目標地址  散列算法,相當於隨機。 

8)sh:原地址    散列算法,相當於隨機。

 

4.LB負載均衡集群的操作方法(LVS)

在一個ipvs主機中可以定義多個集群服務,一個集群服務中一個director至少應該能調度一個RS

ipvsadm用法

管理LVS集群服務新增和修改集群

 

ipvsadm -A |E  -t|u  service-address  -s scheduler調度算法       service-addressip地址加端口  

-A 添加      -E 修改      -t 指定tcp     -u 指定udp     -s:指定調度算法

 

service-address的形式:

如果是tcp為 -t ip:port

如果是udp為 -u ip:port

scheduler:調度算法,默認是wlc

例如:

ipvsadm -A -t 192.168.10.10:80 -s rr  

添加VIP為192.168.10.10的集群服務,基於TCP協議,端口為80,調度算法為輪詢

10.10對外可見的ip地址  調度器的虛擬IP地址  VIP     (集群對外提供服務ip端口)

 

ipvsadm -E -t 192.168.10.88:80 -s wrr  

修改VIP為192.168.10.88集群的調度算法為加權輪詢

 

刪除集群

ipvsadm -D -t|u|f service-address      (-D 刪除)

例如:

ipvsadm -D -t 192.168.10.88:80  

刪除VIP為173.16.16.88,並且端口為80的集群

 

ipvsadm -C清空所有集群規則:

 

 

管理服務器池中的RS

添加和修改

ipvsadm -a|e  -t|u|  service-address  -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]

-a:添加可調度的服務器節點   

-e:修改添加的服務器節點

-t :  tcp

-u :  udp

-r:指定節點服務器IP地址(RIP)

-g:使用DR模型   直連路由的方式  

-i:TUN模型   

-m:NAT模型  默認是DR模型

-w:權重

例如:

ipvsadm -a -t 192.168.10.88:80 -r 192.168.20.10 -m -w 1   

添加服務器池中的RS服務器192.168.20.10,被192.168.10.88調度,-r使用NAT模型,-w權重為1

 

ipvsadm -a -t 192.168.10.88:80 -r 192.168.20.20 -m -w 2   

添加服務器池中的 RS服務器192.168.20.20,被192.168.10.88調度, -r使用NAT模型,-w權重為2

 

刪除RS節點

ipvsadm -d -t|u|f service-address -r server-address

    例如:

ipvsadm -d -t 192.168.10.88 -r 192.168.20.10

 

查看LVS配置的相關節點和規則

ipvsadm -L   [-n]   [--stats]   [--rate]

動態監控訪問數量   watch [-n #]    "ipvsadm -L -n"

-n:不反解    

-c:顯示當前的連接  

--stats 顯示統計數據    

--rate:統計速率

 

5.實驗配置LVS-NAT模型

1.四台機器 一台客戶端,一台LVS調度服務端 兩台內網 LVS配置兩塊網卡,做路由

准備LVS調度服務器,為設置NAT模型,需准備兩塊網卡,例如ens33、ens37

ip 地址為192.168.10.100  和   192.168.20.100

 

准備兩台被調度節點web服務器,網關需指向LVS的director

ip地址為192.168.20.10   和192.168.20.20

 

2.開啟LVS調度服務器的路由轉發功能

確定LVS調度服務器director的轉發功能開啟,並清空所有防火牆規則(ipvs和iptables不能兼容)

echo “1” > /proc/sys/net/ipv4/ip_forward

 

或者開啟永久路由轉發

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

 

3.在兩台內網服務端寫入測試網頁

在兩台節點上部署web服務器,在網頁根路徑寫入不同的網頁內容,方便結果驗證

 

 

 

 

 

 

 

 

 

 

 

 

 

4.在director上部署ipvs規則

ipvsadm -A -t 192.168.10.100:80 -s rr

ipvsadm -a -t 192.168.10.100:80 -r 192.168.20.100 -m

ipvsadm -a -t 192.168.10.100:80 -r 192.168.20.200 -m

 

 

 

 

 

5.瀏覽器訪問驗證調度效果  保存ipvs規則

 

使ipvs規則永久有效,進行保存

ipvsadm -S -n > /etc/sysconfig/ipvsadm-config

 

清空ipvs所有規則

ipvsadm -C

 

恢復之前保存好的ipvs規則

ipvsadm -R < /etc/sysconfig/ipvsadm-config

 

cat  /etc/sysconfig/ipvsadm-config | ipvsadm

 

 

 

 

 

6.實驗配置LVS-DR模型

保證前端路由器將目標IP為VIP的請求報文發送給director

使客戶端只能看到 VIP 外網ip     看不到后台的服務器ip

解決方案:修改RS主機內核參數

1內核參數

arp_ignore:是否響應請求    

0表示只要接收請求,一律響應

1表示請求報文從哪個接口進來,響應報文就要從哪個接口出去

 

2內核參數

arp_announce:是否接收通告,參數值  0  1  2     廣播

0表示任何地址都通告 

1表示盡量避免向非本網絡中的接口通告

2總是用最佳本地地址向網絡通告 ens33發起請求 那么就會回應 ens33的IP而不是VIP的ip

 

1.在director上配置客戶端能訪問的VIP,VIP配置在物理網卡的子接口上即可。然后配置VIP的路由

修改客戶端的ip為 20網段  修改ip     

vim /etc/sysconfig/network-scripts/ifcfg-ens33

systemctl restart network

 

 

 

 

 

LVS 負載均衡器設定

ifconfig ens38:0 192.168.20.88 broadcast 192.168.20.88 netmask 255.255.255.255 up

route add -host 192.168.20.88 dev ens38:0增加路由

 

 

Ifconfig

 

 

 

 

Ip  a

 

 

 

 

2.兩台WEB機器設置   RS節點內核參數調整,並配置VIP,VIP的地址配置在自身網卡的回環地址lo子接口上。

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig lo:0 192.168.20.88 netmask 255.255.255.255 broadcast 192.168.20.88 up  --回環地址

 

 

 

 

3.web服務端   RS上配置VIP的路由

route add -host 192.168.20.88 dev lo:0

20.11客戶端

 

 

 

 

4.用別的主機ping  VIP,檢查連通性,並查看arp地址表驗證RS是否未響應。

 

 

 

 

5.配置director的ipvs調度規則

ipvsadm -A -t 192.168.20.88:80 -s rr

ipvsadm -a -t 192.168.20.88:80 -r 192.168.20.100:80 -g

ipvsadm -a -t 192.168.20.88:80 -r 192.168.20.200:80 -g

 

6.瀏覽器驗證LVS-DR集群結果

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM