成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

LVS負載均衡(一)

caohaoyu / 507人閱讀

摘要:常用的負載均衡開源軟件有,商業(yè)的硬件負載均衡設備。使用可以達到的技術目標是通過達到的負載均衡技術和操作系統(tǒng)實現(xiàn)一個高性能高可用的服務器集群,它具有良好的可靠性可擴展性和可操作性。指的是前端負載均衡器節(jié)點。。

博文參考

http://www.jianshu.com/p/8a61de3f8be9
http://itnihao.blog.51cto.com/1741976/752472

負載均衡集群是 load balance 集群的簡寫,翻譯成中文就是負載均衡集群。常用的負載均衡開源軟件有nginx、lvs、haproxy,商業(yè)的硬件負載均衡設備F5、Netscale。這里主要是學習 LVS 并對其進行了詳細的總結記錄。

負載均衡LVS基本介紹

LB集群的架構和原理很簡單,就是當用戶的請求過來時,會直接分發(fā)到Director Server上,然后它把用戶的請求根據(jù)設置好的調度算法,智能均衡地分發(fā)到后端真正服務器(real server)上。為了避免不同機器上用戶請求得到的數(shù)據(jù)不一樣,需要用到了共享存儲,這樣保證所有用戶請求的數(shù)據(jù)是一樣的。

LVS是 Linux Virtual Server 的簡稱,也就是Linux虛擬服務器。這是一個由章文嵩博士發(fā)起的一個開源項目,它的現(xiàn)在 LVS 已經(jīng)是 Linux 內(nèi)核標準的一部分。使用 LVS 可以達到的技術目標是:通過 LVS 達到的負載均衡技術和 Linux 操作系統(tǒng)實現(xiàn)一個高性能高可用的 Linux 服務器集群,它具有良好的可靠性、可擴展性和可操作性。從而以低廉的成本實現(xiàn)最優(yōu)的性能。LVS 是一個實現(xiàn)負載均衡集群的開源軟件項目,LVS架構從邏輯上可分為調度層、Server集群層和共享存儲。

官方網(wǎng)是 http://www.linuxvirtualserver...

LVS的基本工作原理

當用戶向負載均衡調度器(Director Server)發(fā)起請求,調度器將請求發(fā)往至內(nèi)核空間

PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數(shù)據(jù)包發(fā)往INPUT鏈

IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那么此時IPVS會強行修改數(shù)據(jù)包里的目標IP地址及端口,并將新的數(shù)據(jù)包發(fā)往POSTROUTING鏈

POSTROUTING鏈接收數(shù)據(jù)包后發(fā)現(xiàn)目標IP地址剛好是自己的后端服務器,那么此時通過選路,將數(shù)據(jù)包最終發(fā)送給后端的服務器

LVS的組成

LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。

ipvs(ip virtual server):一段代碼工作在內(nèi)核空間,叫ipvs,是真正生效實現(xiàn)調度的代碼。

ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,負責為ipvs內(nèi)核框架編寫規(guī)則,定義誰是集群服務,而誰是后端真實的服務器(Real Server)

LVS相關術語

DS:Director Server。指的是前端負載均衡器節(jié)點。

RS:Real Server。后端真實的工作服務器。

VIP:向外部直接面向用戶請求,作為用戶請求的目標的IP地址。

DIP:Director Server IP,主要用于和內(nèi)部主機通訊的IP地址。

RIP:Real Server IP,后端服務器的IP地址。

6 CIP:Client IP,訪問客戶端的IP地址。


下邊是三種工作模式的原理和特點總結。


LVS/NAT原理和特點


重點理解NAT方式的實現(xiàn)原理和數(shù)據(jù)包的改變。

(a). 當用戶請求到達Director Server,此時請求的數(shù)據(jù)報文會先到內(nèi)核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP

(b). PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標IP是本機,將數(shù)據(jù)包送至INPUT鏈

(c). IPVS比對數(shù)據(jù)包請求的服務是否為集群服務,若是,修改數(shù)據(jù)包的目標IP地址為后端服務器IP,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP

(d). POSTROUTING鏈通過選路,將數(shù)據(jù)包發(fā)送給Real Server

(e). Real Server比對發(fā)現(xiàn)目標為自己的IP,開始構建響應報文發(fā)回給Director Server。 此時報文的源IP為RIP,目標IP為CIP

(f). Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP

LVS-NAT模型的特性
RS應該使用私有地址,RS的網(wǎng)關必須指向DIP

DIP和RIP必須在同一個網(wǎng)段內(nèi)

請求和響應報文都需要經(jīng)過Director Server,高負載場景中,Director Server易成為性能瓶頸

支持端口映射

RS可以使用任意操作系統(tǒng)

缺陷:對Director Server壓力會比較大,請求和響應都需經(jīng)過director server
LVS/DR原理和特點 重將請求報文的目標MAC地址設定為挑選出的RS的MAC地址

(a) 當用戶請求到達Director Server,此時請求的數(shù)據(jù)報文會先到內(nèi)核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP

(b) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標IP是本機,將數(shù)據(jù)包送至INPUT鏈

(c) IPVS比對數(shù)據(jù)包請求的服務是否為集群服務,若是,將請求報文中的源MAC地址修改為DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址

(d) 由于DS和RS在同一個網(wǎng)絡中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標MAC地址為RIP的MAC地址,那么此時數(shù)據(jù)包將會發(fā)至Real Server。

(e) RS發(fā)現(xiàn)請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之后,將響應報文通過lo接口傳送給eth0網(wǎng)卡然后向外發(fā)出。 此時的源IP地址為VIP,目標IP為CIP

(f) 響應報文最終送達至客戶端

LVS-DR模型的特性


特點1:
保證前端路由將目標地址為VIP報文統(tǒng)統(tǒng)發(fā)給Director Server,而不是RS

RS可以使用私有地址;也可以是公網(wǎng)地址,如果使用公網(wǎng)地址,此時可以通過互聯(lián)網(wǎng)對RIP進行直接訪問

RS跟Director Server必須在同一個物理網(wǎng)絡中

所有的請求報文經(jīng)由Director Server,但響應報文必須不能進過Director Server

不支持地址轉換,也不支持端口映射

RS可以是大多數(shù)常見的操作系統(tǒng)

RS的網(wǎng)關絕不允許指向DIP(因為我們不允許他經(jīng)過director)

RS上的lo接口配置VIP的IP地址

缺陷:RS和DS必須在同一機房中
特點1的解決方案:
在前端路由器做靜態(tài)地址路由綁定,將對于VIP的地址僅路由到Director Server

存在問題:用戶未必有路由操作權限,因為有可能是運營商提供的,所以這個方法未必實用

arptables:在arp的層次上實現(xiàn)在ARP解析時做防火墻規(guī)則,過濾RS響應ARP請求。這是由iptables提供的

修改RS上內(nèi)核參數(shù)(arp_ignore和arp_announce)將RS上的VIP配置在lo接口的別名上,并限制其不能響應對VIP地址解析請求。
LVS/Tun原理和特點


在原有的IP報文外再次封裝多一層IP首部,內(nèi)部IP首部(源地址為CIP,目標IIP為VIP),外層IP首部(源地址為DIP,目標IP為RIP)

(a) 當用戶請求到達Director Server,此時請求的數(shù)據(jù)報文會先到內(nèi)核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP 。

(b) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標IP是本機,將數(shù)據(jù)包送至INPUT鏈

(c) IPVS比對數(shù)據(jù)包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IP為RIP。然后發(fā)至POSTROUTING鏈。 此時源IP為DIP,目標IP為RIP

(d) POSTROUTING鏈根據(jù)最新封裝的IP報文,將數(shù)據(jù)包發(fā)至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。 此時源IP為DIP,目標IP為RIP

(e) RS接收到報文后發(fā)現(xiàn)是自己的IP地址,就將報文接收下來,拆除掉最外層的IP后,會發(fā)現(xiàn)里面還有一層IP首部,而且目標是自己的lo接口VIP,那么此時RS開始處理此請求,處理完成之后,通過lo接口送給eth0網(wǎng)卡,然后向外傳遞。 此時的源IP地址為VIP,目標IP為CIP

(f) 響應報文最終送達至客戶端

LVS-Tun模型特性
RIP、VIP、DIP全是公網(wǎng)地址

RS的網(wǎng)關不會也不可能指向DIP

所有的請求報文經(jīng)由Director Server,但響應報文必須不能進過Director Server

不支持端口映射

RS的系統(tǒng)必須支持隧道

其實企業(yè)中最常用的是 DR 實現(xiàn)方式,而 NAT 配置上比較簡單和方便,后邊實踐中會總結 DR 和 NAT 具體使用配置過程。

VS的八種調度算法 輪叫調度 rr

這種算法是最簡單的,就是按依次循環(huán)的方式將請求調度到不同的服務器上,該算法最大的特點就是簡單。輪詢算法假設所有的服務器處理請求的能力都是一樣的,調度器會將所有的請求平均分配給每個真實服務器,不管后端 RS 配置和處理能力,非常均衡地分發(fā)下去。

加權輪叫 wrr

這種算法比 rr 的算法多了一個權重的概念,可以給 RS 設置權重,權重越高,那么分發(fā)的請求數(shù)越多,權重的取值范圍 0 – 100。主要是對rr算法的一種優(yōu)化和補充, LVS 會考慮每臺服務器的性能,并給每臺服務器添加要給權值,如果服務器A的權值為1,服務器B的權值為2,則調度到服務器B的請求會是服務器A的2倍。權值越高的服務器,處理的請求越多。

最少鏈接 lc

這個算法會根據(jù)后端 RS 的連接數(shù)來決定把請求分發(fā)給誰,比如 RS1 連接數(shù)比 RS2 連接數(shù)少,那么請求就優(yōu)先發(fā)給 RS1

加權最少鏈接 wlc

這個算法比 lc 多了一個權重的概念。

基于局部性的最少連接調度算法 lblc

這個算法是請求數(shù)據(jù)包的目標 IP 地址的一種調度算法,該算法先根據(jù)請求的目標 IP 地址尋找最近的該目標 IP 地址所有使用的服務器,如果這臺服務器依然可用,并且有能力處理該請求,調度器會盡量選擇相同的服務器,否則會繼續(xù)選擇其它可行的服務器

復雜的基于局部性最少的連接算法 lblcr

記錄的不是要給目標 IP 與一臺服務器之間的連接記錄,它會維護一個目標 IP 到一組服務器之間的映射關系,防止單點服務器負載過高。

目標地址散列調度算法 dh

該算法是根據(jù)目標 IP 地址通過散列函數(shù)將目標 IP 與服務器建立映射關系,出現(xiàn)服務器不可用或負載過高的情況下,發(fā)往該目標 IP 的請求會固定發(fā)給該服務器。

源地址散列調度算法 sh

與目標地址散列調度算法類似,但它是根據(jù)源地址散列算法進行靜態(tài)分配固定的服務器資源。

實踐LVS的NAT模式 實驗環(huán)境

三臺服務器,一臺作為 director,兩臺作為 real server,director 有一個外網(wǎng)網(wǎng)卡(172.16.254.200) 和一個內(nèi)網(wǎng)ip(192.168.0.8),兩個 real server 上只有內(nèi)網(wǎng) ip (192.168.0.18) 和 (192.168.0.28),并且需要把兩個 real server 的內(nèi)網(wǎng)網(wǎng)關設置為 director 的內(nèi)網(wǎng) ip(192.168.0.8)

安裝和配置
兩個 real server 上都安裝 nginx 服務

# yum install -y nginx

 

Director 上安裝 ipvsadm

# yum install -y ipvsadm

Director 上編輯 nat 實現(xiàn)腳本

# vim /usr/local/sbin/lvs_nat.sh

# 編輯寫入如下內(nèi)容:

#! /bin/bash

# director服務器上開啟路由轉發(fā)功能:

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

 #關閉 icmp 的重定向

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/eth0/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

#director設置 nat 防火墻

iptables -t nat -F

iptables -t nat -X

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

# director設置 ipvsadm

IPVSADM="/sbin/ipvsadm"

$IPVSADM -C

$IPVSADM -A -t 172.16.254.200:80 -s wrr

$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.18:80 -m -w 1

$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.28:80 -m -w 1

保存后,在 Director 上直接運行這個腳本就可以完成 lvs/nat 的配置

/bin/bash /usr/local/sbin/lvs_nat.sh

查看ipvsadm設置的規(guī)則

ipvsadm -ln
測試LVS的效果

通過瀏覽器測試2臺機器上的web內(nèi)容 http://172.16.254.200 。為了區(qū)分開,我們可以把 nginx 的默認頁修改一下:

在 RS1 上執(zhí)行

# echo "rs1rs1" >/usr/share/nginx/html/index.html

 

在 RS2 上執(zhí)行

# echo "rs2rs2" >/usr/share/nginx/html/index.html

注意,切記一定要在兩臺 RS 上設置網(wǎng)關的 IP 為 director 的內(nèi)網(wǎng) IP。

實踐LVS的DR模式 實驗環(huán)境

三臺機器:

Director節(jié)點:  (eth0 192.168.0.8  vip eth0:0 192.168.0.38)

Real server1: (eth0 192.168.0.18 vip lo:0 192.168.0.38)

Real server2: (eth0 192.168.0.28 vip lo:0 192.168.0.38)
安裝
兩個 real server 上都安裝 nginx 服務

# yum install -y nginx

 

Director 上安裝 ipvsadm

# yum install -y ipvsadm
Director 上配置腳本
# vim /usr/local/sbin/lvs_dr.sh

#! /bin/bash

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

ipv=/sbin/ipvsadm

vip=192.168.0.38

rs1=192.168.0.18

rs2=192.168.0.28

ifconfig eth0:0 down

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip dev eth0:0

$ipv -C

$ipv -A -t $vip:80 -s wrr

$ipv -a -t $vip:80 -r $rs1:80 -g -w 3

$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

執(zhí)行腳本:

# bash /usr/local/sbin/lvs_dr.sh
在2臺 rs 上配置腳本:
# vim /usr/local/sbin/lvs_dr_rs.sh

#! /bin/bash

vip=192.168.0.38

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

rs 上分別執(zhí)行腳本:

bash /usr/local/sbin/lvs_dr_rs.sh
實驗測試

測試方式同上,瀏覽器訪問 http://192.168.0.38

注意:在 DR 模式下,2臺 rs 節(jié)點的 gateway 不需要設置成 dir 節(jié)點的 IP 。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/40757.html

相關文章

  • 【整理總結】負載均衡淺析

    摘要:負載均衡算法輪詢,加權輪詢。參考三負載均衡負載均衡由服務提供廠商提供。之后,集群內(nèi)再采用其他的負載均衡方案。參考五負載均衡工作在層,它會與分別建立連接,需要維護這兩個連接的狀態(tài)。 運營研發(fā)團隊 施洪寶 一. 基礎知識 1.1 基礎 什么是負載均衡? 當單機提供的并發(fā)量不能滿足需求時,我們需要多臺服務器同時服務。當客戶請求到達時,如何為客戶選擇最合適的服務器?這個問題就是負載均衡問題。...

    idealcn 評論0 收藏0
  • 深入淺出 LVS 負載均衡系列():NAT、FULLNAT 模型原理

    摘要:本系列按照負載均衡器對數(shù)據(jù)包的處理方式分類,從計算機間通信的角度出發(fā),淺談模型的實現(xiàn)原理。將請求分攤給多臺服務器的行為,就稱之為負載均衡。真實服務器返回的數(shù)據(jù)包的下一個目的地必須是負載均衡器。LVS(Linux Virtual Server)是一個虛擬服務器集群系統(tǒng)。工作在 OSI 模型的傳輸層,即四層負載均衡。LVS 本身實現(xiàn)了 NAT、DR、TUN 模型,這些模型僅做數(shù)據(jù)包的轉發(fā),而不會...

    Tecode 評論0 收藏0
  • 深入淺出 LVS 負載均衡系列():NAT、FULLNAT 模型原理

    摘要:本系列按照負載均衡器對數(shù)據(jù)包的處理方式分類,從計算機間通信的角度出發(fā),淺談模型的實現(xiàn)原理。將請求分攤給多臺服務器的行為,就稱之為負載均衡。真實服務器返回的數(shù)據(jù)包的下一個目的地必須是負載均衡器。LVS(Linux Virtual Server)是一個虛擬服務器集群系統(tǒng)。工作在 OSI 模型的傳輸層,即四層負載均衡。LVS 本身實現(xiàn)了 NAT、DR、TUN 模型,這些模型僅做數(shù)據(jù)包的轉發(fā),而不會...

    Tecode 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<