LVS介紹、LVS調度算法、LVS NAT模式搭建

一:LVS介紹和LVS調度算法

LB 集羣的架構以下圖,原理也很簡答,就是當用戶的請求過來時,會直接發到分發器
(Director Server)上,而後它把用戶的請求根據預先設置好的算法,智能均衡地分發到後
端的真正服務器(real server)上。若是不一樣的機器,可能用戶請求到的數據不同,爲了
避免這樣的狀況發生,因此用到了共享存儲,這樣保證全部用戶請求的數據是同樣的。 html

LVS 是一個實現負載均衡集羣的開源軟件項目,LVS 架構從邏輯上可分爲調度層
(Director)、server集羣層(Real server)和共享存儲。LVS 從實現上分爲下面三種模式。
(1)NAT(調度器將請求的目標 ip 即 vip地址改成Real server的ip, 返回的數據包也
通過調度器,調度器再把源地址修改成vip)。 nginx

(2)TUN(調度器將請求來的數據包封裝加密經過 ip 隧道轉發到後端的 real server上,
而real server會直接把數據返回給客戶端,而再也不通過調度器)。
(3)DR(調度器將請求來的數據包的目標mac地址改成real server的mac 地址,返回
的時候也不通過調度器,直接返回給客戶端)。
參考資料 http://www.it165.net/admin/html/201401/2248.html web

其中DIP(driector ip)爲分發器的 IP,NAT模式下它必須爲公網IP,要對外服務。VIP(virtual ip)爲虛擬IP,用在TUN 和DR 模式中,需
要同時配置在分發器和後端真實服務器上。RIP(Real IP)爲後端真實服務器的IP,在TUN和DR 模式中,RIP 爲公網 IP。
要想把用戶的請求調度給後端的 RS,是須要通過調度算法來實現的,那麼關於 LVS 的調度算法,都有哪些?
輪詢 Round-Robin rr
加權輪詢 Weight Round-Robin wrr
最小鏈接 Least-Connection lc
加權最小鏈接 Weight Least-Connection wlc
基於局部性的最小鏈接 Locality-Based Least Connections lblc
帶複製的基於局部性最小鏈接 Locality-Based Least Connections with Replication lblcr
目標地址散列調度 Destination Hashing dh
源地址散列調度 Source Hashing sh算法

二:LVS NAT模式搭建

(1)環境說明
三臺服務器一臺做爲 director, 兩臺做爲real server,Director 有一個外網 ip
(192.168.31.166) 和一個內網 ip(192.168.21.166), 兩個real server上只有內網
ip(192.168.21.100)和(192.168.21.101) 而且須要把兩個 real server的內網網關設置爲 director
的內網ip(192.168.21.166)。
(2)安裝和配置
兩個real server 上都安裝 nginx服務
#yum install -y nginx
Director上安裝ipvsadm
#yum install -y ipvsadm
Direcotr 上編輯nat實現腳本
#vim /usr/local/sbin/lvs_nat.sh
寫入以下內容:
#! /bin/bash
#director 服務器上開啓路由轉發功能:
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 vim

#director 設置nat防火牆
iptables -t nat –F
iptables -t nat –X
iptables -t nat -A POSTROUTING -s 192.168.21.0/24 -j MASQUERADE
#director設置ipvsadm
IPVSADM='/sbin/ipvsadm'
$IPVSADM –C
$IPVSADM -A -t 192.168.31.166:80 -s lc -p 300
$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.100:80 -m -w 1
$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.101:80 -m -w 1
保存後,在Director上直接運行這個腳本就能夠完成lvs/nat的配置了。
#/bin/bash /usr/local/sbin/lvs_nat.sh 後端

(3)測試
經過瀏覽器測試兩臺機器上的 web內容http://192.168.31.166。爲了區分開,咱們能夠
把nginx的默認頁修改一下:
在 RS1 上執行
#echo "rs1rs1" >/usr/share/nginx/html/index.html
在 rs2 上執行
#echo "rs2rs2" >/usr/share/nginx/html/index.html
注意,切記必定要在兩臺RS上設置網關的IP 爲 director的內網IP。 瀏覽器

相關文章
相關標籤/搜索