LVS模式之nat

LVS簡介html

    LVS:Linux Virtual Server,簡譯Linux虛擬服務器,一個虛擬的服務器集羣系統,也能夠說是負載調度器,是中國國內最先出現的自由軟件項目之一。系統擴展的方式有兩種:Scale UP(向上加強)和Scale Out(向外擴展)。簡單的說向上加強就是升級硬件,i5不夠買i7,硬件終究有瓶頸的,因此向外擴展的可行性比較大。向外擴展有多種方式,增長設備、調度分配,Cluster。nginx


什麼是Cluster?算法

    Cluster就是集羣,爲解決某個特定問題將多臺計算機組合起來造成的單個系統。vim


Linux Cluster類型centos

    LB:負載均衡bash

    HA:高可用服務器

    HPC:高性能網絡


LB Cluster的實現負載均衡

    通常來講實現方式有軟件實現和硬件實現。硬件的實現就是須要比較昂貴的設備,好比:F5,A10。LVS屬於軟件的實現負載均衡,除了lvs還有nginx,haproxy等等不少實現方式。這裏咱們只着重介紹lvs。根據工做的協議層次不一樣,又可分爲傳輸層和應用層兩種。lvs是工做在傳輸層上,不支持應用層,這也是它的不足之處。curl


LVS工做原理:

    專門用來作lvs的咱們稱之爲VS(Virtual Server),後面接真正提供服務的RS(Real Server)。VS根據請求報文的目標IP和目標協議及端口將其調度轉發至某RS,根據調度算法來挑選RS。


lvs集羣的類型:

        lvs-nat:修改請求報文的目標IP,多目標IP的DNAT

        lvs-dr:操縱封裝新的MAC地址

        lvs-tun:在原請求IP報文以外新加一個IP首部

        lvs-fullnat:修改請求報文的源和目標IP


LVS/NAT的實現

    前提:關閉防火牆、SELINUX,date時間一致

    網絡環境:

       9f42e382e7dd8c62a1a9a367ff85cc7e.png-wh_

    說明:客戶端經過vs訪問後面的http服務,實現nat的調度。

    

    client配置

]#route add  default gw 172.18.32.112         <===添加默認路由,指定爲vs的VIP

    RS1配置

]#yum install -y httpd
]#vim /var/www/html/index.html
server RS1
]#service httpd start                         <===啓動http服務,centos7爲ststemctl start httpd
]#route add  default gw 192.168.32.112

    RS2配置   

]#yum install -y httpd
]#vim /var/www/html/index.html
server RS2
]#service httpd start  
]#route add  default gw 192.168.32.112

    VS配置

]#yum install -y ipvsadm                       <===ipvsadm是lvs的管理工具,後面有介紹
]#ipvsadm -A -t 172.18.32.112:80 -s rr         <===添加地址和端口進行調度 -s 指定調度算法
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.9 -m          <===添加須要調度的後臺服務器 -m 表明natl類型
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.111 -m
]#echo 1 > /proc/sys/net/ipv4/ip_forward                     <===開啓轉發,臨時生效
]#vim /etc/sysctl.conf                                       <===永久生效
net.ipv4.ip_forward=1
]#ipvsadm -Ln                                                <===查看列表
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.18.32.112:80 wrr
  -> 192.168.32.9:80              Masq    3      0          0         
  -> 192.168.32.111:80            Masq    1      0          0

    測試

]#for i in {1..10};do curl 172.18.32.112;done
server RS1
server RS2
server RS1
server RS2
server RS1
server RS2
server RS1
server RS2
server RS1
server RS2

    也能夠試試其餘算法  

]#ipvsadm -C
]#ipvsadm -A -t 172.18.32.112:80 -s wrr
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.9 -m -w 3
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.111 -m -w 1

    測試

]#for i in {1..10};do curl 172.18.32.112;done
server RS1
server RS2
server RS2
server RS2
server RS1
server RS2
server RS2
server RS2
server RS1
server RS2

寫了這麼多,是否是還對具體調度的實現不是很理解呢?根據上面的拓撲圖給你們解釋一下:當CLIENT訪問我公司網站時,咱們把公網地址配置在VS上爲VIP,同時也配置了鏈接內網的DIP。第一次地址從CIP-->VIP,VS根據算法進行替換VIP,這時候變成CIP-->RIP,RS收到進行響應的時候是RIP-->CIP,到達VS進行替換變成VIP-->CIP,這樣CLIENT收到響應報文。由於響應報文也從VS回去,這就形成了VS負載比較大,因此RS不能太多,有侷限性。後面咱們介紹另一種方式LVS/DR方式,會解決這個問題。

相關文章
相關標籤/搜索