lvs+DR

lvs

一:lvs概述

LVS是linux內核的一部分,因此性能高

linux虛擬服務器(即分發器或調度器director);

他不是真正提供服務,但他接受客戶的訪問,爲整個集羣提供一個唯一的入口。虛擬服務器再和真實服務器通信(read server)。

它真正提供服務,集羣中每個real server可以是一臺物理主機,也可以是虛擬機。

lvs相關術語(必記):

DS(或DR):Director  server調度服務器。指的是前端負載均衡器節點。

RS:(real server)後端真實的工作服務器。

vip:virtual  IP虛擬ip。是指向外部直接面用戶請求,作爲用戶請求的目標的ip地址(外網ip地址)。

dip: Director  server ip調度服務器ip,主要用於和內部主機通訊的ip地址。(內網ip地址)

Rip:(real server ip)後端服務器的ip地址。

Cip:client ip,客戶端的ip。

注意:LVS調度器需要有2塊網卡,一塊是對外(wan口)的網卡,一塊是對內(lan口)的網卡

二、LVS三種模式
VS/NAT: 網絡地址轉換模式, 進站/出站的數據流量經過分發器。NAT模式是通過修改客戶請求數據包中的端口號、IP地址來實現負載均衡。
VS/DR : 直接路由模式,只有進站的數據流量經過分發器(數據鏈路層負載均衡,因爲他修改的是目的mac地址)
VS/TUN: 隧道模式,只有進站的數據流量經過分發器

三、lvs基本工作原理

1.當用戶請求到達Director server,請求的數據報文會先到內核空間的PREROUTING鏈。此時報文的源ip爲cip,目標ip爲vip。

2.PREROUTING檢查發現數據包的目標ip是本機,將數據包送至input鏈

3.ipvs比對數據包請求的服務是否爲集羣服務,修改數據包的目標ip地址爲後端服務器ip,然後將數據吧發送至postrouting鏈。

4.postrouting鏈通過路由選路,將數據包發送給Real Server

5.Real Server對比發現目標爲自己的ip開始構建響應報文回給Director Server。此時報文的源ip爲RIP,目標ip爲cip

6.Director Server在響應客戶端前,此時會將源ip地址修改爲自己的ip地址,然後響應給客戶端。此時報文的源ip爲vip,目標ip爲cip。

 

1.LVS-NAT模型 特性

1).RS應該使用私有ip地址,RS的網關必須指向DIP

2)DIP和RIP必須在同一個網段內

3)請求和響應報文都需經過DIrector  Server,高負載場景中,Director Server易成爲性能瓶頸

4)支持端口映射

5)RS可以使用任意操作系統

6)缺陷:對Director Server壓力會比較大,請求和響應都需經過director server

 

實驗

準備real server的http服務

在node12、node13上做:

要讓虛擬機上沒有安裝nginx

yum  -y  install  httpd  curl

systemctl restart httpd

echo  node12.com > /var/www/html/index.html

13就是echo  node13.com > /var/www/html/index.html

curl  127.0.0.1 做本地測試

route  -n 或 netstat  -r查看路由表信息

route  del  dafault  gw  192.168.11.2 臨時刪除默認網關

route  add  default  gw  192.168.11.11臨時設置默認網關

vim  /etc/syscomfig/network-scripts/ifcfg-ens33中修改網關

route  -n

          LVS負載均衡器配置(node11)

在node11上做的

lsof  -i:80 && nginx  -s  quit

curl  192.168.11.12   &&curl  192.168.11.13  必須確保能訪問到此服務器的網站

添加一塊新的nat類型的虛擬網卡

將虛擬網卡ens37的ip設置爲192.168.10.11

在網絡適配器下添加一塊nat網卡

cd  /etc/sysconfig/network-scripts/

cp  -av   ifcfg-ens33   ifcfg-ens37

刪除兩塊網卡的gateway網關

route  -n

route  del  default   gw  192.168.11.2

route  del  default   gw  192.168.10.2

配置lvs負載均衡集羣列表:

ipvsadm  -Ln

ipvsadm  -C  清空ipvs集羣配置信息

ipvsadm  -A  -t  192.168.10.11:80  -s  rr

ipvsadm  -a  -t  192.168.10.11:80  -r  192.168.11.12:80  -m

ipvsadm  -a  -t  192.168.10.11:80  -r  192.168.11.13:80  -m

ipvsadm  -Ln

查看並臨時開啓路由轉發功能

cat  /proc/sys/net/ipv4/ip_forward

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

------------------------------------------------------------------

開啓永久路由轉發

vim  /etc/syscrl.conf

net.ipv4.ip_forward=1

立即生效:

sysctl  -p

cat  /proc/sys/net/ipv4/ip_forward

 

在vmware虛擬機網絡編輯器上

將子網ip改爲192.168.10.1

筆記本物理機的vmnat8虛擬網卡ip和網關信息必須跟此處相同

在網卡中加入網關192.168.10.11

然後做測試

命令選項解釋:[藍字爲常用選項]
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增加一臺新的虛擬服務器(VIP)。
-E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。
-D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。
-C --clear 清除內核虛擬服務器表中的所有記錄
-R --restore 恢復虛擬服務器規則
-S --save 保存虛擬服務器規則,備份輸出爲-R 選項可讀的格式
-a --add-server 在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器記錄(RIP)。也就是在一個虛擬服務器中增加一臺新的真實服務器
-e --edit-server 編輯一條虛擬服務器記錄中的某條真實服務器記錄
-d --delete-server 刪除一條虛擬服務器記錄中的某條真實服務器記錄
-L|-l --list 顯示內核虛擬服務器表
-Z --zero 虛擬服務表計數器清零(清空當前的連接數量等)
--set tcp tcpfin udp 設置連接超時值
--start-daemon 啓動同步守護進程。他後面可以是master 或backup,用來說明LVS Router 是master 或是backup。在這個功能上也可以採用keepalived 的VRRP 功能。
--stop-daemon 停止同步守護進程
-h --help 顯示幫助信息
-p --persistent [timeout] 持久穩固的服務(持久性連接)。這個選項的意思是來自同一個客戶的多次請求,將被同一臺真實的服務器處理。timeout 的默認值爲360 秒。
-t --tcp-service service-address 說明虛擬服務器提供的是tcp 的服務[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark 說明是經過iptables 標記過的服務類型。
-u --udp-service service-address 說明虛擬服務器提供的是udp 的服務[vip:port] or [real-server-ip:port]
-s --scheduler scheduler 使用的調度算法,有這樣幾個選項 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是: wlc.
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真實的服務器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式爲DR直接路由模式(也是LVS 默認的模式)
-i --ipip 指定LVS 的工作模式爲隧道模式
-m --masquerading 指定LVS 的工作模式爲NAT 模式
-w --weight weight 真實服務器的權值
--mcast-interface interface 指定組播的同步接口
-c --connection 顯示LVS 目前的連接 如:ipvsadm -L -c
--timeout 顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon 顯示同步守護進程狀態
--stats 顯示統計信息
--rate 顯示速率信息
--sort 對虛擬服務器和真實服務器排序輸出
-n --numeric 輸出IP地址和端口的數字形式

 

LVS-DR

數據鏈路層負載均衡

顧名思義,數據鏈路層負載均衡是指在通信協議的數據鏈路層修改mac地址進行負載均衡。
這種數據傳輸方式又稱作三角傳輸模式,負載均衡數據分發過程中不修改IP地址,只修改目的mac地址,通過配置真實物理服務器集羣所有機器虛擬IP和負載均衡服務器IP地址一致,從而達到不修改數據包的源地址和目的地址就可以進行數據分發的目的,由於實際處理請求的真實物理服務器IP和數據請求目的IP一致,不需要通過負載均衡服務器進行地址轉換,可將相應數據包直接返回給用戶瀏覽器,避免負載均衡服務器網卡帶寬成爲瓶頸。這種負載均衡方式又稱作直接路由方式(DR)。

使用三角傳輸模式的鏈路層負載均衡時目前大型網站使用最廣的一種負載均衡手段。在linux平臺上最好的鏈路層負載均衡開源產品是LVS(linux virtual server)

 

1.當用戶請求到達Director Server,請求的數據會先到內核空間的pereouting鏈。此時報文的源ip爲cip,目標ip爲vip。

2.Prerouting檢查發現數據包的目標ip是本機,將數據包發送至input鏈。

3.ipvs比對數據包請求的服務是否爲集羣服務,若是,將請求報文中的源mac地址修改爲dip的mac地址,將目標mac地址修改爲rip的mac地址,那麼此時數據包將會發送至real server。

4.由於DS和rs在同一個網絡中,所以是通過二層來傳輸。Postrouting鏈檢查目標mac地址爲rip的mac地址,那麼數據包將會發送至real server。

5.rs發現請求報文的mac地址是自己的mac地址,就接收此報文。處理完成之後,將響應報文通過eth0網卡然後向外發出。此時的源ip地址爲vip,目標ip爲cip。

6.響應報文最終送達至客戶端

 

1.Lvs-DR模型的特性

1.保證前端路由將目標地址爲vip報文發給director server,而不是rs

2.rs可以使用私有地址;也可以是公網地址,如果使用公網地址,此時可以通過互聯網對rip進行直接訪問

3.rs跟Director server必須在同一個物理網絡中

4.所有的請求報文經由Director Server,但響應報文必須不能進過Director Server

5.不支持地址轉換,也不支持端口映射,因爲DR模型是工作在二層的,二層只處理數據包中的mac地址

6.rs可以是大多數常見的操作系統

7.rs的網關覺不允許指向DIr(因爲我們不允許他經過director)

8.RS上的lo接口配置vip的ip地址

 

3. 過程及解決方案:
1). 客戶端要找vip訪問80端口,因爲是在同一個網段,所以發arp廣播找vip的mac地址通信
2). 因爲有RS上也有vip,我們不能直接讓RS上的vip迴應客戶端的廣播,所以設置內核參數arp_ignore的內容爲1
將arp_ignore 設置爲1,意味着當別人的arp請求過來的時候,如果接收的設備上面沒有這個ip,就不做出響應. 
默認是0,只要這臺機器上面任何一個設備上面有這個ip,就響應arp請求,併發送mac地址

3). 當DR的vip收到這個廣播之後,迴應mac地址,然後得到客戶端發來的80端口請求,再通過lvs分發到一個RS
4). 那麼DR如何分發到一個RS?
dip發出arp廣播詢問RS的ip地址所對應的mac地址,然後發出一個目標ip爲RS_vip,目標mac爲RS_eth0_mac的包到RS
5). RS必須要使用vip把迴應包發出去(這樣client收到之後一看源地址是vip,他就會相信這是正確的地址發來的包)
6). 那麼怎樣讓RS使用lo的vip而不使用eth0?
設置arp_announce文件的內容爲2, 2的意思是使用本機最好的本地IP地址把迴應包發出去
7). 最後怎麼算是最好的本地IP地址?
同一個網段下,使用可變長度子網掩碼最長的IP地址被認爲是好IP,因爲他更精確

vs/dr模式配置

在rel  server上做的  node12

yum  -y   install   httpd

systemclt  restart  httpd

vim   /aa/lo.sh 腳本如下

chmod -v +x lo.sh

.  /aa/lo.sh

然後再傳給13的ip

 

director調度器

在11上做的

給網卡臨時設置vip地址

yum  -y  install  ipvsadm

-w  權重  -g指定LVS 的工作模式爲DR直接路由模式(也是LVS 默認的模式)
ipvsadm  -sn > /etc/sysconfig/ipvsadm   備份

curl  192.168.11.12

curl  192.168.11.13

訪問測試(win7/win10上做):
打開mobaxterm軟件,點窗口上的+加號來開啓一個cmd命令行界面,執行5次如下命令,看顯示的網頁信息有何不同
curl 192.168.11.100

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章