負載均衡之lvs

2021-07-05 11:11:56 字數 4420 閱讀 7741

集群(cluster):將一組計算機軟/硬體連線起來,高度緊密的協作完成計算工作,其中的單個計算機通常稱為節點。負載均衡集群(load balancing):通過負載均衡器,將負載盡可能平均分攤處理。

lvs(linux virtul server)linux虛擬服務,分為三層結構:

排程器:上面的虛擬ip面向客戶端,將請求傳送到真實伺服器上。

伺服器:真正的伺服器,上面可以啟很多伺服器(web,mail,ftp)。

共享儲存:給伺服器提供共享儲存,是伺服器擁有相同的內容。

lvs與iptables/netfilter類似,工作在input鏈上,當客戶端請求集群伺服器時,lvs會強制修改報文,將報文發往postrouting,再**到節點伺服器處理。兩個模組:

ipvsadm 管理集群的命令工具;

ipvs 在核心上具體操作;在2.4.23前的核心上沒有。

三種模式:

nat 位址轉換

1、節點必須與排程器在同一網路

2、節點上的ip為私有ip,僅用於各節點和排程器之間通訊(用組播通訊)

3、排程器在客戶端和伺服器之間,負責所有通訊進出

4、節點需將閘道器指向排程器

5、排程器支援埠對映(將80埠改為節點上的8080)

6、節點可以是任意型別作業系統,只要能提供服務

7、併發高是,排程器是瓶頸

dr(direct routing一般用在生產環境中)

1、節點要和排程器在同一物理網路(根據mac**)

2、節點上可以是公網ip(便於遠端管理和監控)

3、排程器只負責入站請求,響應報文由節點直接發給客戶端

4、節點閘道器不指向排程器

5、不支援埠對映

工作原理:

排程器dr和真實伺服器rs上都有一塊網絡卡都有vip,但是,當客戶端請求發到路由器時,路由會事先設定靜態路由直接指向dr,或讓rs拒絕接受arp請求。dr接收到後,根據演算法將請求負載在一台rs上,dr會將請求的目標mac改為那個rs的mac,而其他報頭不會改變,rs收到後,檢視目標ip和mac都是自己,所以就會解封裝、處理、直接回應給客戶端,再不經過dr。

dr模式下rs兩個核心引數:

arp_ignore:定義接受arp請求時響應級別(eth0:222.24.24.67、eth1:192.168.1.1)

1:eth0接收到的是對192.168.1.1的查詢,只會回應eth1的mac,而不回應eth0的mac。[請求什麼說什麼,不管是從哪個介面請求]

2:只有本介面收到請求本介面上mac時才響應,不會響應不是請求本介面mac的。(只有與222.24.24.67同網段的,向eth0請求222.24.24.67的mac,才會回應,同理eth1,)[請求的和被請求的要在同一網段]

3:不回應該網路內的arp,只對設定的回應。

4~7:保留未用。

8:不回應任何arp請求。

arp_announce:將自己的位址向外通告的級別。

1:當請求時本網路內主機時,盡量不通告。

一般arp_ignore=1、arp_announce=2

tun(隧道模式)

1、節點可以跨網際網路

2、節點ip是公網ip

3、排程器負責入站請求

4、節點閘道器不指向排程器

5、不支援埠對映

工作原理:

伺服器可能在不同的地方,相距比較遠。在原來的ip報文再封裝乙個ip,源ip為dip,目標ip為rip,rs收到後解封裝後會看見原來的ip封裝。

支援的排程演算法:

1、rr(round robin)「輪叫」:按順序將請求輪流均等的分配到各節點。

2、wrr(wighted round robin)「加權輪叫」:根據伺服器的處理能力來排程請求,(多能多勞)

3、sh(source hashing)將請求的源ip位址,作為雜湊鍵從靜態分配的雜湊表,找出對應的伺服器,用於session繫結。

4、dh (destination hashing)將請求的目標位址,作為雜湊鍵從靜態分配的雜湊表,找出對應的伺服器

5、lc(least connections)最少鏈結,動態地將網路請求排程到已建立的鏈結數最少的伺服器上

6、wlc(weighted least connections)加權最少鏈結,具有較高權值的伺服器將承受較多的活動連線負載,排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值(lvs預設用該演算法)

7、sed 最短期望延遲 wlc的改進版,權重大的伺服器事先被挑中,(active+1)*256/weight,權重大的伺服器有很多的時候,權重小的伺服器可能乙個都沒有。

8、nqnever queue 永不排隊無需佇列,如果有台 realserver的連線數=0就直接分配過去,不需要在進行sed運算。

9、lblc(locality-based least connections)基於區域性的最少鏈結,針對目標ip位址的負載均衡,目前主要用於cache集群系統。根據請求的目標ip位址找出該目標ip位址最近使用的伺服器,若該伺服器 是可用的,將請求傳送到該伺服器;若伺服器不存在或超載,則用"最少鏈結"的原則選出乙個可用的伺服器,將請求傳送到該伺服器。

10、lblcr(locality-based least connections with replication)帶複製的基於區域性的最少鏈結,它要維護從乙個 目標ip位址到一組伺服器的對映,而lblc演算法維護從乙個目標ip位址到一台伺服器的對映。

基本配置:

安裝ipvsadm

uname -r #檢視核心版本

2.6.18-194.el5

rpm -q kernel-devel #檢視有無核心原始碼

rpm -i kernel-devel-2.6.18-398.el5.i686.rpm

#安裝後會在/usr/src/kernels中有核心源**

ln -s /usr/src/kernels/2.6.18-398.el5-i686/ /usr/src/linux #做軟鏈結

nat

ipvsadm:

格式:ipvsadm -a|e -t|u|f service-address [-s scheduler]

-a 增加集群服務

ipvsadm -a -t 222.24.24.1:80 -s rr #新增乙個集群服務演算法為rr

-e 改服務

-t tcp

-u udp

-f 防火牆標記號

-d刪除服務

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m]

-a新增乙個節點

-r表示節點伺服器的ip

-g dr

-i tun

-m nat

ipvsadm -a -t 222.24.24.1:80 -r 192.168.1.1 -m #新增兩個rs

ipvsadm -a -t 222.24.24.1:80 -r 192.168.1.2:8080 -m

-l/l 檢視

-n表示使用者數字ip表示主機

--rate 檢視速率

--stats 檢視統計

--timeout 顯示超時(tcp tcpfin udp)

-c刪除所有集群服務

-s儲存配置 ipvsadm -s > ipvs.bak

-r載入配置 ipvsadm -r < ipvs.bak

(配置lvs是,節點之間的時間必須是一樣的,誤差不超過1s)

可以和排程器同步時間,ntpdate 222.24.24.1 (222.24.24.1是排程器)

或者修改/etc/ntp.conf

dr 在dr上:

sysctl -w net.ipv4.conf.eth0.arp_announce=2 設定相應arp級別

sysctl -w net.ipv4.conf.all.arp_announce=2

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

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

echo 1 > /proc/sys/net/ipv4/ip_forward 開啟**功能

在rs:

ifconfig lo:0 222.24.24.1 配置vip

lvs持久連線:

ppc(持久埠連線)將來自同一客戶端,對同一集群服務的請求始終定向至此前選定的rs。

pcc(持久客戶端連線)將來自同一客戶端,對所有埠的訪問,都定向到之前選定的乙個rs。

pnmpp(持久防火牆標記連線)將特定埠定義在同一rs,在防火牆prerouting鏈上。

lvs很優秀但是也有缺陷,沒有技術支援,排程也會出現單點故障等等。

負載均衡之LVS

lvs是四層負載均衡器,linux2.4核心以後天然支援 核心的一部分 其網路架構如下所示 備註 lvs對外暴露的公網ip叫做 vip nat模式 nat network address translation 網路位址轉換,即將乙個ip位址轉換為另乙個ip位址的技術,如下圖所示 lvs接收到請求,...

負載均衡之LVS詳解

負載均衡 四層負載均衡 lvs 之前也寫過相關的文章,但是寫的太爛了。自己都不也敢直視。現在有空決定重新全面學習了下lvs.總結出本部落格。好了,其他的不多說了,我們開始吧。一 負載均衡 負載均衡包括如下 1 硬體負載均衡 f5,big ip citrix,netscaler a102 軟體負載均衡...

負載均衡之LVS詳解

負載均衡 四層負載均衡 lvs 之前也寫過相關的文章,但是寫的太爛了。自己都不也敢直視。現在有空決定重新全面學習了下lvs.總結出本部落格。好了,其他的不多說了,我們開始吧。一 負載均衡 負載均衡包括如下 1 硬體負載均衡 f5,big ip citrix,netscaler a102 軟體負載均衡...