![LVS-NAT模式簡單搭建](http://p2.ttnews.xyz/loading.gif)
前言
LVS作為一款優秀的負載均衡軟件,一直受到很多企業的青睞,雖然性能比不上價格昂貴的負載均衡硬件,但對於大部分的業務場景,LVS還是能出色地勝任的。
LVS工作在網絡的第四層,內核的tcp/ip棧上,這也決定了它在所有負載均衡軟件中性能是最好的。
LVS主要由兩部分組成,一個是工作在用戶空間的ipvsadm,另一個是工作在內核上的ipvs。ipvsadm主要負載管理集群服務,包括添加、刪除、修改集群服務、對數據包進行監控等,真正起到負載均衡的是ipvs。ipvs主要監聽在INPUT鉤子函數中,一旦發現用戶請求的是集群服務,ipvs會將數據包forward到POSTROUTING的鉤子函數上,然後轉發給後端的realserver.
安裝
LVS的幾個重要角色和術語:
- 前端調度器(Director):主要負責將用戶的請求轉發到後端的realserver。
- 後端服務器(realserver):運行用戶服務器的服務器,如httpd,tomcat等。
- VIP:可以理解為對外的ip,用戶就是根據這個ip訪問集群服務。
- DIP:一般為Director的內網ip。
- RIP:一般為realserver的內網ip。
LVS主要的工作模式有:NAT(地址轉換),DR(直接路由),TUN(ip隧道技術)。下面主要簡單搭建下基於NAT模式的LVS集群,暫時不包括高可用功能。
整個資源的分配主要為:
客戶端(windows) ip:192.168.1.104
VIP:192.168.1.108
DIP:192.168.10.10
RIP1:192.168.10.11,運行httpd服務
RIP2:192.168.10.12,運行httpd服務
1、配置好資源
對於Director來說,在vmware中添加多一塊網卡eth1,並在/etc/sysconfig/network-scripts/ifcfg-eth1,配置ip為192.168.10.10
對於realserver來說,同樣是將eth0的ip修改為上述對應的ip。
重啟網卡
service network restart
2、安裝httpd服務。
為了簡便點,此處直接以rpm方式安裝
分別在192.168.10.11和192.168.10.12中執行httpd的安裝
yum install -y httpd
設置開機自啟動
chkconfig httpd on
httpd默認的頁面文件在/var/www/html下。
在192.168.10.11中添加首頁文件
touch /var/www/html/index.html && echo "192.168.10.11" > /var/www/html/index.html
在192.168.10.12中添加首頁文件
touch /var/www/html/index.html && echo "192.168.10.12" > /var/www/html/index.html
3、將realserver中的網關指向DIP
由於在nat模式下,進出數據包都要經過director,所以realserver的網關必須要指向director的DIP。
在192.168.10.11中執行:
添加默認的網關
route add default gw 192.168.10.10
route -n結果如下:
![LVS-NAT模式簡單搭建](http://p2.ttnews.xyz/loading.gif)
在192.168.10.12中執行同樣的操作。
4、配置LVS集群服務
首先安裝ipvsadm
yum install -y ipvsadm
配置集群服務
ipvsadm -A -t 192.168.1.108:80 -s rr
此處暫時使用輪詢調度算法
添加realserver
ipvsadm -a -t 192.168.1.108:80 -r 192.168.10.11 -m
ipvsadm -a -t 192.168.1.108:80 -r 192.168.10.12 -m
打開內核ip_forward功能
echo "1" > /proc/sys/net/ipv4/ip_forward
至此,整個LVS-NAT集群就簡單搭建完成了。
查看realserver列表:
ipvsadm -L -n
測試
在瀏覽器上訪問VIP:http://192.168.1.108
再次刷新
多次做刷新操作,會看到每次請求都會在兩個realserver中交替訪問。至此,LVS-NAT的簡單搭建就此完成。
總結
LVS-NAT由於進出數據包都經過director,在一些高併發場景下,director容易成為整個集群系統的瓶頸,因此在生產環境中不建議使用此模式,一般都會使用DR模式。另外一個健壯的分佈式集群系統還需要提供高可用HA的能力,常見的ha軟件有keepalive、heartbeat、corosync等,後續有空再逐一討論,喜歡點個關注,謝謝。
閱讀更多 木星上的程序員 的文章