LVS 負載均衡服務器搭建

1、介紹

LVS的英文全稱是Linux Virtual Server,即Linux虛擬服務器。由章文嵩博士主導開發的開源負載均衡項目,從2.6內核開始已經被集成到linux內核模塊中了。linux

2、LVS負載均衡調度算法

1. 輪詢 rr

調度器經過「輪叫」調度算法將外部請求按順序輪流分配到集羣中的真實服務器(Real Server)上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。算法

2. 加權輪詢 wrr

調度器經過「加權輪叫」調度算法根據真實服務器(Real Server)的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器能處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。服務器

3. 最小鏈接 lc

調度器經過「最少鏈接」調度算法動態地將請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器(Real Server)具備相近的系統性能,採用「最小鏈接」調度算法能夠較好地均衡負載。負載均衡

4. 加權最小鏈接 wlc

在集羣系統中的服務器性能差別較大的狀況下,調度器採用「加權最少連接」調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。服務器的缺省權值爲1,系統管理員能夠動態地設置服務器的權限。tcp

5. 基於局部的最小鏈接 lblc

基於局部性的最少連接」調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用「最少連接」 的原則選出一個可用的服務器,將請求發送到該服務器。ide

6. 帶複製的基於局部性最少連接 lblcr

帶複製的基於局部性最少連接」調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是它要維護從一個目標 IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務器組,按「最小鏈接」原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按「最小鏈接」原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的程度。性能

7. 目標地址散列 dh

目標地址散列」調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。優化

8. 源地址散列 sh

源地址散列」調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。操作系統

3、ipvsadm命令介紹

用法
ipvsadm     選項  服務器地址   -s  算法
ipvsadm     選項  服務器地址   -r  真是服務器地址     [工做模式]  [權重]

選項
    A               添加一個虛擬服務器
    E               編輯一個虛擬服務器
    D               刪除一個虛擬服務器
    C               清空虛擬服務器列表
    R               從標準輸入中還原虛擬服務器規則
    S               將虛擬服務器規則保存至標準輸出
    a                添加一個真實服務器
    e                編輯一個真實服務器
    d                刪除一個真實服務器
    l/L            查看分發列表
    t                 使用tcp協議
    u                使用udp協議
    s                指定算法
    r                設置真實服務器的IP地址和端口信息
    g                DR模式
    i                 tun模式
    m               nat模式
    w               設置真實服務器的權重
    c                查看鏈接狀態,須要配合L使用
    n                以數字形式輸出

4、部署LVS NAT集羣

1. 工做原理

當用戶請求到達director以後,director將請求報文的目標地址(即VIP)改爲選定的realserver地址,同時將報文的目標端口也改爲選定的realserver的相應端口,最後將報文請求發送到指定的realserver。在服務器端獲得數據後,realserver將數據返給director,而director將報文的源地址和源端口改爲VIP和相應端口,而後把數據發送給用戶,完成整個負載調度過程。code

2. 環境說明

操做系統 IP地址 角色
CentOS7 dip:172.16.120.100 vip:172.16.1.100 LVS
CentOS7 rip:172.16.120.101 RS1
CentOS7 rip:172.16.120.102 RS2

3. RS配置

配置IP地址,網關指向LVS主機

4. LVS配置

#開啓轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
#安裝軟件
yum install -y ipvsadm
#添加分發規則
ipvsadm -A -t 172.16.1.100:80 -s rr
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.101:80 -m
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.102:80 -m

5、部署LVS DR集羣

1. 工做原理

當用戶請求到達director以後,director將請求報文中的源MAC地址修改成DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,將請求發送到指定mac的realserver,而realserver將響應直接返回給客戶端,不通過director。這個方式是三種調度中性能最好的,也是咱們生產環境中使用最多的。

2. 環境說明

操做系統 IP地址 角色
CentOS7 dip:172.16.120.100 vip:172.16.1.100 LVS
CentOS7 rip:172.16.120.101 lo:0:172.16.1.100 RS1
CentOS7 rip:172.16.120.102 lo:0:172.16.1.100 RS2

3. RS配置

#設置VIP
ifconfig lo:0 172.16.1.100 netmask 255.255.255.255 up
#修改內核參數
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

4. LVS配置

#配置VIP
ip addr add 172.16.1.100/24 dev eth0:0
#添加分發規則
ipvsadm -A -t 172.16.1.100:80 -s rr
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.101:80 -g
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.102:80 -g

6、部署LVS TUN集羣

1. 工做原理

當用戶請求到達director以後,director進行IP Tunnel封裝,即在原有的包頭加上IP Tunnel的包頭而後發送出去。realserver服務器得根據IP Tunnel包頭信息收到請求包,而後解開IP Tunnel包頭信息,獲得客戶的請求包並進行響應處理。而realserver將響應直接返回給客戶端,不通過director。

2. 環境說明

操做系統 IP地址 角色
CentOS7 dip:172.16.120.100 vip:172.16.1.100 LVS
CentOS7 rip:172.16.120.101 tunl0:172.16.1.100 RS1
CentOS7 rip:172.16.120.102 tunl0:172.16.1.100 RS2

3. RS配置

#添加隧道
modprobe ipip
ip link set up tunl0
#配置VIP
ifconfig tunl0 172.16.1.100 netmask 255.255.255.255 up
#修改內核參數
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

4. LVS配置

#修改內核參數
echo 1 > /proc/sys/net/ipv4/ip_forward
#添加分發規則
ipvsadm -A -t 172.16.1.100:80 -s rr
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.101:80 -i
ipvsadm -a -t 172.16.1.100:80 -r 172.16.120.102:80 -i

補充:

arp_ignore 控制系統在收到外部的arp請求時,如何響應。經常使用的取值主要有0,1,2,3~8較少用到:

0:響應任意網卡上接收到的對本機IP地址的arp請求(包括環回網卡上的地址),而無論該目的IP是否在接收網卡上。

1:只響應目的IP地址爲接收網卡上的本地地址的arp請求。

2:只響應目的IP地址爲接收網卡上的本地地址的arp請求,而且arp請求的源IP必須和接收網卡同網段。

arp_announce 控制系統在對外發送arp請求時,如何選擇arp請求數據包的源IP地址。經常使用的取值有0,1,2。

0:容許使用任意網卡上的IP地址做爲arp請求的源IP

1:儘可能避免使用不屬於該發送網卡子網的本地地址做爲發送arp請求的源IP地址。

2:忽略IP數據包的源IP地址,選擇該發送網卡上最合適的本地地址做爲arp請求的源IP地址。
rp_filter 參數用於控制系統是否開啓對數據包源地址的校驗
0:關閉反向路由校驗
1:開啓嚴格的反向路由校驗。對每一個進來的數據包,校驗其反向路由是不是最佳路由。若是反向路由不是最佳路由,則直接丟棄該數據包。

2:開啓鬆散的反向路由校驗。對每一個進來的數據包,校驗其源地址是否可達,即反向路由是否能通(經過任意網口),若是反向路徑不通,則直接丟棄該數據包。

相關文章
相關標籤/搜索