Ubuntu + LVS 搭建四層,實現自訂協議的負載平衡

來源:互聯網
上載者:User

一,概述:

實驗環境都是Ubuntu 14,核心已經有lvs模組

負載機器:10.10.2.176 (該機器需要安裝ipvsadm),需要在該機上建立一個virtual server,其ip是10.10.2.177

真實伺服器1:10.10.2.190

真實伺服器2:10.10.2.191

真實伺服器3:10.10.2.192


當請求通過virtual server時,會直接轉寄到真實機器上進行處理


二,步驟

1,在10.10.2.176機器上,安裝ipvsadm:

sudo apt-get install ipvsadm

2,在10.10.2.176機器上,編寫如下指令碼,進行配置,指令碼為wsdc_lvs.sh:

#!/bin/bash# FOR SERVER PORTAL #vip=10.10.2.177rs1=10.10.2.190rs2=10.10.2.191rs3=10.10.2.192/sbin/ifconfig eth0:0 $vip netmask 255.255.255.0 broadcast $vip/sbin/route add -host $vip dev eth0:0echo "1">/proc/sys/net/ipv4/ip_forward/sbin/ipvsadm -C#/sbin/ipvsadm -A -t $vip:80 -s rr#/sbin/ipvsadm -A -t $vip:8080 -s rr/sbin/ipvsadm -A -t $vip:8111 -s rr/sbin/ipvsadm -a -t $vip:8111 -r $rs1:8111 -g/sbin/ipvsadm -a -t $vip:8111 -r $rs2:8111 -g/sbin/ipvsadm -a -t $vip:8111 -r $rs3:8111 -gipvsadm

3,在10.10.2.176機器上回合組態指令碼

sudo chmod a+x wsdc_lvs.shsudo ./wsdc_lvs.sh

4,在三台真實伺服器上,編寫如下指令碼:

#!/bin/bashvip=10.10.2.177/sbin/ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip/sbin/route add -host $vip dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce/sbin/sysctl -p

sudo chmod a+x wsdc_lvs.shsudo ./wsdc_lvs.sh

三,測試

自己編寫基於自訂協議的程式,進行測試即可。


四、附錄

附錄 lvs參數簡介
部分參數如下:man ipvsadm可以全部看到。
-A, --add-service    Add  a  virtual service
-E, --edit-service    Edit a virtual service
-D, --delete-service        Delete a virtual service
-C, --clear      Clear the virtual server table.
-R, --restore
-S, --save
-a, --add-server      Add a real server to a virtual service
-e, --edit-server      Edit a real server in a virtual service
-d, --delete-server   Remove a real server from a virtual service
-L, -l, --list     List  the  virtual  server  table  if no argument is specified
-t, --tcp-service      Use TCP service.
-u, --udp-service    Use UDP service


-s 指定服務採用的演算法,常用的演算法參數如下:


    rr   輪叫(Round Robin)
    調度器通過"輪叫"調度演算法將外部請求按順序輪流分配到叢集中的真實伺服器上,它均等地對待每一台服務 器,而不管伺服器上實際的串連數和系統負載。
    wrr   加權輪叫(Weighted Round Robin)
    調度器通過"加權輪叫"調度演算法根據真實伺服器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的伺服器處理更多的訪問流量。調度器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。
    lc   最少連結(Least Connections)
    調度器通過"最少串連"調度演算法動態地將網路請求調度到已建立的連結數最少的伺服器上。如果叢集系統的真實伺服器具有相近的系統效能,採用"最小串連"調度演算法可以較好地均衡負載。
    wlc   加權最少連結(Weighted Least Connections)
    在叢集系統中的伺服器效能差異較大的情況下,調度器採用"加權最少連結"調度演算法最佳化負載平衡效能,具有較高權值的伺服器將承受較大比例的活動串連負載。調度器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。
    lblc   基於局部性的最少連結(Locality-Based Least Connections)
    "基於局部性的最少連結" 調度演算法是針對目標IP地址的負載平衡,目前主要用於Cache叢集系統。該演算法根據請求的目標IP地址找出該目標IP地址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求發送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用"最少連結"的原則選出一個可用的伺服器,將請求發送到該伺服器。
    lblcr   帶複製的基於局部性最少連結(Locality-Based Least Connections with Replication)
    "帶複製的基於局部性最少連結"調度演算法也是針對目標IP地址的負載平衡,目前主要用於Cache叢集系統。它與LBLC演算法的不同之處是它要維護從一個目標IP地址到一組伺服器的映射,而LBLC演算法維護從一個目標IP地址到一台伺服器的映射。該演算法根據請求的目標IP地址找出該目標IP地址對應的伺服器組,按"最小串連"原則從伺服器組中選出一台伺服器,若伺服器沒有超載,將請求發送到該伺服器,若伺服器超載;則按"最小串連"原則從這個叢集中選出一台伺服器,將該伺服器加入到伺服器組中,將請求發送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的程度。
    dh   目標地址散列(Destination Hashing)
    "目標地址散列"調度演算法根據請求的目標IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。
    sh   源地址散列(Source Hashing)
    "源地址散列"調度演算法根據請求的源IP地址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求發送到該伺服器,否則返回空。 


-a 表示往一個服務內增加一個real server
-r 指定real server的IP地址
-w 表示權重
-g 表示使用DR方式,-m表示NAT方式,-i表示tunneling方式。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.