負載均衡集羣介紹、LVS介紹、LVS的調度算法、LVS NAT模式搭建

負載均衡集羣介紹

•主流開源軟件LVS、keepalived、haproxy、nginx等

•其中LVS屬於4層(網絡OSI 7層模型),nginx屬於7層,haproxy既可以認爲是4層,也可以當做7層使用

•keepalived的負載均衡功能其實就是lvs

•lvs這種4層的負載均衡是可以分發除80外的其他端口通信的,比如MySQL的,而nginx僅僅支持http,https,mail,haproxy也支持MySQL這種

•相比較來說,LVS這種4層的更穩定,能承受更多的請求,而nginx這種7層的更加靈活,能實現更多的個性化需求


LVS介紹

•LVS是由國人章文嵩開發

•流行度不亞於apache的httpd,基於TCP/IP做的路由和轉發,穩定性和效率很高

•LVS最新版本基於Linux內核2.6,有好多年不更新了

•LVS有三種常見的模式:NAT、DR、IP Tunnel

•LVS架構中有一個核心角色叫做分發器(Load balance),它用來分發用戶的請求,還有諸多處理用戶請求的服務器(Real Server,簡稱rs)

NAT模式
負載均衡集羣介紹、LVS介紹、LVS的調度算法、LVS NAT模式搭建

•這種模式藉助iptables的nat表來實現

•用戶的請求到分發器後,通過預設的iptables規則,把請求的數據包轉發到後端的rs上去

•rs需要設定網關爲分發器的內網ip

•用戶請求的數據包和返回給用戶的數據包全部經過分發器,所以分發器成爲瓶頸

•在nat模式中,只需要分發器有公網ip即可,所以比較節省公網ip資源

IP Tunnel模式
負載均衡集羣介紹、LVS介紹、LVS的調度算法、LVS NAT模式搭建

•這種模式,需要有一個公共的IP配置在分發器和所有rs上,我們把它叫做vip

•客戶端請求的目標IP爲vip,分發器接收到請求數據包後,會對數據包做一個加工,會把目標IP改爲rs的IP,這樣數據包就到了rs上

•rs接收數據包後,會還原原始數據包,這樣目標IP爲vip,因爲所有rs上配置了這個vip,所以它會認爲是它自己

LVS DR模式

負載均衡集羣介紹、LVS介紹、LVS的調度算法、LVS NAT模式搭建

•這種模式,也需要有一個公共的IP配置在分發器和所有rs上,也就是vip

•和IP Tunnel不同的是,它會把數據包的MAC地址修改爲rs的MAC地址

•rs接收數據包後,會還原原始數據包,這樣目標IP爲vip,因爲所有rs上配置了這個vip,所以它會認爲是它自己

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模式搭建

準備3臺機器
A機器爲分發器,也叫調度器(簡寫爲dir)
A機器 192.168.177.7 外網地址爲192.168.153.55

B機器 192.168.177.100
C機器 192.168.177.200
B機器和C機器的網關需要設置爲192.168.177.7

關閉防火牆,三臺機器執行如下的命令

systemctl stop firewalld
systemc disable firewalld
systemctl start  iptables
iptables -F
service iptables save
setenforce 0

分發器上安裝ipvsdam
yum install -y ipvsdam

分發器上編輯腳本
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
#注意區分網卡名字,我的兩個網卡分別爲ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
#director 設置nat防火牆
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.177.0/24 -j MASQUERADE
#director設置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.153.55:80 -s wlc -p 3
$IPVSADM -a -t 192.168.153.55:80 -r 192.168.177.100:80 -m -w 1
$IPVSADM -a -t 192.168.153.55:80 -r 192.168.177.200:80 -m -w 1

兩臺rs都需要安裝rs,並且設置兩臺rs的主頁,做一個區分,也就是說直接curl兩臺rs的ip時,得到不同的結果
這是我的實驗結果,成功分發
[root@localhost yang]# curl 192.168.153.55
backup backup this is backup.
[root@localhost yang]# curl 192.168.153.55
master master this is master
[root@localhost yang]# curl 192.168.153.55
backup backup this is backup.
[root@localhost yang]# curl 192.168.153.55
master master this is master
[root@localhost yang]# curl 192.168.153.55
backup backup this is backup.

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