1. 程式人生 > >LVS(Linux Virtual Server)

LVS(Linux Virtual Server)

dash 集群 配置服務 ask span 子網 font _for arp

一、lvs的組成

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

1. ipvs(ip virtual server):一段代碼工作在內核空間,叫ipvs,是真正生效實現調度的代碼。
2. ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,負責為ipvs內核框架編寫規則,定義誰是集群服務,而誰是後端真實的服務器(Real Server)

二、lvs的三種模式

VS/DR

【路由模式】

環境配置:

調度器LB ,RealServer1.RealServer2都改為nat模式

執行命令:

調度器 :

yum install ipvsadm -y
ipvsadm -C
    #添加對外提供的服務ip
    ipvsadm -A -t 192.168.254.250:80 -s rr    #-A為ADD   -t為tcp   -s rr為設置算法為輪叫算法
    
    #添加2臺real_server主機
    ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18:80 -g #-a為add   -t為tcp   -r為realserver   -g為DR路由模式
    ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19
:80 -g #-a為add -t為tcp -r為realserver -g為DR路由模式 #配置網卡的子網口為vip,ip地址為192.168.254.250 ifconfig ens33:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up #添加路由(訪問192.168.254.250都走ens33:0這個網卡) route add -host 192.168.254.250 dev ens33:0
#查看
route -n

RealServer1/RealServer2 :

 #在回環地址的子網口上配置服務ip(vip)
    ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up 
    
    #添加路由
    route add -host 192.168.254.250 dev 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

  

VS/TUN

VS/NAT

【nat模式】

環境配置:

調度器LB :一個橋接模式(192.168.1.120),一個vmnat2(192.168.254.1不設置網關)

RealServer1 :192.168.254.2 192.168.254.1 255.255.255.0

RealServer2 :192.168.254.3 192.168.254.1 255.255.255.0

執行命令:

調度器LB :vim /etc/sysctl.conf(net.ipv4.ip_forward=1) #開啟路由轉發

sysctl -p #生效

yum install ipvsadm -y #下載ipvsadm

ipvsadm -A -t 192.168.31.100:80 -s rr #-A Add server -t tcp -s 算法

ipvsadm -a -t 192.168.31.100:80 -r 192.168.250.2 -m -m nat -t 對外宣稱的ip地址 -r 真實的ip

ipvsadm -a -t 192.168.31.100:80 -r 192.168.250.3 -m

curl 192.168.1.120

三、LVS的八種調度方法

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

2. 加權輪叫 wrr
這種算法比 rr 的算法多了一個權重的概念,可以給 RS 設置權重,權重越高,那麽分發的請求數越多,權重的取值範圍 0 – 100。主要是對rr算法的一種優化和補充, LVS 會考慮每臺服務器的性能,並給每臺服務器添加要給權值,如果服務器A的權值為1,服務器B的權值為2,則調度到服務器B的請求會是服務器A的2倍。權值越高的服務器,處理的請求越多。

3. 最少鏈接 lc
這個算法會根據後端 RS 的連接數來決定把請求分發給誰,比如 RS1 連接數比 RS2 連接數少,那麽請求就優先發給 RS1

4. 加權最少鏈接 wlc
這個算法比 lc 多了一個權重的概念。

5. 基於局部性的最少連接調度算法 lblc
這個算法是請求數據包的目標 IP 地址的一種調度算法,該算法先根據請求的目標 IP 地址尋找最近的該目標 IP 地址所有使用的服務器,如果這臺服務器依然可用,並且有能力處理該請求,調度器會盡量選擇相同的服務器,否則會繼續選擇其它可行的服務器

6. 復雜的基於局部性最少的連接算法 lblcr
記錄的不是要給目標 IP 與一臺服務器之間的連接記錄,它會維護一個目標 IP 到一組服務器之間的映射關系,防止單點服務器負載過高。

7. 目標地址散列調度算法 dh
該算法是根據目標 IP 地址通過散列函數將目標 IP 與服務器建立映射關系,出現服務器不可用或負載過高的情況下,發往該目標 IP 的請求會固定發給該服務器。

8. 源地址散列調度算法 sh
與目標地址散列調度算法類似,但它是根據源地址散列算法進行靜態分配固定的服務器資源。

LVS(Linux Virtual Server)