1. 程式人生 > >centos7上實現LVS負載均衡群集之NAT轉換模式

centos7上實現LVS負載均衡群集之NAT轉換模式

基於ip地址 ted 應用 立即生效 iptable 顯示 反饋 輪詢 模式

LVS虛擬服務器

Linux Virtual Server(LVS)是針對 Linux內核開發的一個負載均衡項目,由我國
的章文嵩博土在1998年5月創建,官方站點位於http://www.linuxvirtualserver.org/.

LVS實際上相當於基於IP地址的虛擬化應用,為基於IP地址和內容請求分發的負載均衡提出了一種高效的解決方法。

LVS現在已成為Linux內核的一部分,默認編譯為ip_vs模塊,必要時能夠自動調用。

LVS的負載調度算法

針對不同的網絡服務和配置需要,LVS調度器提供多種不同的負載調度算法,其中最常用的四種算法包括輪詢、加權輪詢、最少連接和加權最少連接。

輪詢( RoundRobin):將收到的訪問請求按照順序輪流分配給群集中的各節

點(真實服務器)。

加權輪詢( WeightedRoundRobin):根據真實服務器的處理能力輪流分配收到的訪問請求,調度器可以自動查詢各節點的負載情況,並動態調整其權重。這樣可以保證處理能力強的服務器承擔更多的訪問流量。

最少連接( LeastConnections):根據真實服務器已建立的連接數進行分配,將收到的訪問請求優先分配給連接數最少的節點。

加權最少連接(WeightedLeastConnections):在服務器節點的性能差異較大的情況下,可以為真實服務器自動調整權重,權重較高的節點將承擔更大比例的活動連接負載。

使用ipvsadm管理工具

ipvsadm是在負載調度器上使用的LVS群集管理工具,通過調用ip_vs模塊添加、刪除服務器節點,以及查看群集的運行狀態。在Centos6系統中,需要手動安裝ipvsadm軟件包。在centos7中直接安裝就可以。

地址轉換模式

地址轉換( NetworkAddressTranslation)簡稱NAT模式,類似於防火墻的私有網絡結構,負載調度器作為所有服務器節點的網關,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口。服務器節點使用私有IP地址,與負載調度器位於同一個物理網絡,安全性要優於其他兩種方式。

圖解

技術分享圖片
說明:節點服務器作用在私網,而客戶端作用在公網,此時LVS就作為網關,節點服務器反饋信息給客戶端時,會經過LVS。

實驗環境

角色 IP
LVS 192.168.100.1 / 12.0.0.1
apache1 192.168.100.110
apache2 192.168.100.120
NFS 192.168.100.130

步驟

在兩臺節點服務器上搭建httpd服務

# yum install httpd -y
# systemctl stop firewalld.service
# setenforce 0

在NFS服務器上搭建NFS服務

  • 安裝服務
    # rpm -q nfs-utils
    # rpm -q rpcbind   //看是否安裝,服務已安裝
  • 編輯配置文件
    # vim /etc/exports
    /usr/share *(ro,sync)
    /opt/benet 192.168.100.0/24(rw,sync)//創建目錄benet,192.168.100.0網段的可以進行讀寫和同步操作
    /opt/accp 192.168.100.0/24(rw,sync)//創建目錄accp,192.168.100.0網段的可以進行讀寫和同步操作
  • 創建目錄並賦予權限
    # mkdir /opt/benet /opt/accp
    # chmod 777  /opt/benet /opt/accp
  • 開啟nfs服務並發布共享
    # systemctl start nfs.service
    # exportfs -rv  //發布共享

    技術分享圖片

    節點服務器掛載nfs服務器的共享文件

  • apache1將/opt/benet掛載到站點目錄下
    # showmount -e 192.168.100.130  //查看共享文件
    # mount.nfs 192.168.100.130:/opt/benet /var/www/html  //掛載
    # cd /var/www/html/
    # echo "this is benet" > index.html
    # systemctl start httpd.service 

    技術分享圖片

  • apache2將/opt/accp掛載到站點目錄下
    # showmount -e 192.168.100.130  //查看共享文件
    # mount.nfs 192.168.100.130:/opt/accp /var/www/html  //掛載
    # echo "this is accp" > index.html
    # systemctl start httpd.service 

    技術分享圖片
    技術分享圖片

    LVS服務器(註意是雙網卡)

  • 安裝ipvsadm管理工具
    # yum install ipvsadm -y
  • 加載內核模塊
    # modprobe ip_vs
  • 設置路由轉發(因為是雙網卡)
    # vim /etc/sysctl.conf
    末尾添加:net.ipv4.ip_forward = 1
    # sysctl -p  //立即生效

    技術分享圖片

  • 防火墻設置
    iptables -F  
    # iptables -t nat -F
    # iptables -L
    //清空所有規則
    # iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -o ens36 -j SNAT --to-source 12.0.0.1   //設置SNAT轉發,將所有192.168.100.0段的都轉換為12.0.0.1,然後進行訪問client

    技術分享圖片

  • 開啟ipvsadm
    # systemctl start ipvsadm.service
    註:此時開啟可能會出現問題
    # ipvsadm --save  > /etc/sysconfig/ipvsadm  //輸入該行即可

    技術分享圖片

  • 編寫可執行的腳本
    # cd /opt
    # vi net.sh
    #!/bin/bash
    ipvsadm -C
    ipvsadm -A -t 12.0.0.1:80 -s rr
    ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.110:80 -m
    ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.120:80 -m
    ipvsadm
    # chmod +x net.sh
    # ./net.sh
    解釋如下:
    ipvsadm -C //清除內核虛擬服務器表中的所有記錄//
    -A:添加虛擬服務器
    -s:指定調度算法
    rr:輪詢算法
    -a:添加真實服務器
    -t:指定外網網關及TCP端口
    -r:指定節點服務器的地址及TCP端口
    -m:使用NAT集群模式

    技術分享圖片
    技術分享圖片
    打開一臺win7進行檢測
    技術分享圖片
    技術分享圖片
    註:當兩次連續訪問12.0.0.1時,可能一時間切換不過來,顯示的還是原來的界面,這時候就必須清除緩存,才能看到兩個不同的界面。當然了,如果這時關掉其中一臺節點服務器的httpd服務,那麽再去訪問12.0.0.1時,顯示的就是另一臺的網頁界面啦。

centos7上實現LVS負載均衡群集之NAT轉換模式