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時間一致
網絡環境:
說明:客戶端經過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方式,會解決這個問題。