LVS虛擬服務(wù)器
Linux Virtual Server(LVS)是針對 Linux內(nèi)核開發(fā)的一個(gè)負(fù)載均衡項(xiàng)目,由我國的章文嵩博土在1998年5月創(chuàng)建,官方站點(diǎn)位于http://www.linuxvirtualserver.org/.
LVS實(shí)際上相當(dāng)于基于IP地址的虛擬化應(yīng)用,為基于IP地址和內(nèi)容請求分發(fā)的負(fù)載均衡提出了一種高效的解決方法。
LVS現(xiàn)在已成為Linux內(nèi)核的一部分,默認(rèn)編譯為ip_vs模塊,必要時(shí)能夠自動調(diào)用。
LVS的負(fù)載調(diào)度算法
針對不同的網(wǎng)絡(luò)服務(wù)和配置需要,LVS調(diào)度器提供多種不同的負(fù)載調(diào)度算法,其中最常用的四種算法包括輪詢、加權(quán)輪詢、最少連接和加權(quán)最少連接。
輪詢( RoundRobin):將收到的訪問請求按照順序輪流分配給群集中的各節(jié)點(diǎn)(真實(shí)服務(wù)器)。
加權(quán)輪詢( WeightedRoundRobin):根據(jù)真實(shí)服務(wù)器的處理能力輪流分配收到的訪問請求,調(diào)度器可以自動查詢各節(jié)點(diǎn)的負(fù)載情況,并動態(tài)調(diào)整其權(quán)重。這樣可以保證處理能力強(qiáng)的服務(wù)器承擔(dān)更多的訪問流量。
最少連接( LeastConnections):根據(jù)真實(shí)服務(wù)器已建立的連接數(shù)進(jìn)行分配,將收到的訪問請求優(yōu)先分配給連接數(shù)最少的節(jié)點(diǎn)。
加權(quán)最少連接(WeightedLeastConnections):在服務(wù)器節(jié)點(diǎn)的性能差異較大的情況下,可以為真實(shí)服務(wù)器自動調(diào)整權(quán)重,權(quán)重較高的節(jié)點(diǎn)將承擔(dān)更大比例的活動連接負(fù)載。
使用ipvsadm管理工具
ipvsadm是在負(fù)載調(diào)度器上使用的LVS群集管理工具,通過調(diào)用ip_vs模塊添加、刪除服務(wù)器節(jié)點(diǎn),以及查看群集的運(yùn)行狀態(tài)。在CentOS6系統(tǒng)中,需要手動安裝ipvsadm軟件包。在centos7中直接安裝就可以。
地址轉(zhuǎn)換模式
地址轉(zhuǎn)換( NetworkAddressTranslation)簡稱NAT模式,類似于防火墻的私有網(wǎng)絡(luò)結(jié)構(gòu),負(fù)載調(diào)度器作為所有服務(wù)器節(jié)點(diǎn)的網(wǎng)關(guān),即作為客戶機(jī)的訪問入口,也是各節(jié)點(diǎn)回應(yīng)客戶機(jī)的訪問出口。服務(wù)器節(jié)點(diǎn)使用私有IP地址,與負(fù)載調(diào)度器位于同一個(gè)物理網(wǎng)絡(luò),安全性要優(yōu)于其他兩種方式。
圖解
說明:節(jié)點(diǎn)服務(wù)器作用在私網(wǎng),而客戶端作用在公網(wǎng),此時(shí)LVS就作為網(wǎng)關(guān),節(jié)點(diǎn)服務(wù)器反饋信息給客戶端時(shí),會經(jīng)過LVS。
實(shí)驗(yàn)環(huán)境
角色 | 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 |
步驟
在兩臺節(jié)點(diǎn)服務(wù)器上搭建httpd服務(wù)
# yum install httpd -y # systemctl stop firewalld.service # setenforce 0
在NFS服務(wù)器上搭建NFS服務(wù)
- 安裝服務(wù)
# rpm -q nfs-utils # rpm -q rpcbind //看是否安裝,服務(wù)已安裝
- 編輯配置文件
# vim /etc/exports /usr/share *(ro,sync) /opt/benet 192.168.100.0/24(rw,sync)//創(chuàng)建目錄benet,192.168.100.0網(wǎng)段的可以進(jìn)行讀寫和同步操作 /opt/accp 192.168.100.0/24(rw,sync)//創(chuàng)建目錄accp,192.168.100.0網(wǎng)段的可以進(jìn)行讀寫和同步操作
- 創(chuàng)建目錄并賦予權(quán)限
# mkdir /opt/benet /opt/accp # chmod 777 /opt/benet /opt/accp
- 開啟nfs服務(wù)并發(fā)布共享
# systemctl start nfs.service # exportfs -rv //發(fā)布共享
節(jié)點(diǎn)服務(wù)器掛載nfs服務(wù)器的共享文件
- apache1將/opt/benet掛載到站點(diǎn)目錄下
# 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掛載到站點(diǎn)目錄下
# 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服務(wù)器(注意是雙網(wǎng)卡)
- 安裝ipvsadm管理工具
# yum install ipvsadm -y
- 加載內(nèi)核模塊
# modprobe ip_vs
- 設(shè)置路由轉(zhuǎn)發(fā)(因?yàn)槭请p網(wǎng)卡)
# vim /etc/sysctl.conf 末尾添加:net.ipv4.ip_forward = 1 # sysctl -p //立即生效
- 防火墻設(shè)置
iptables -F # iptables -t nat -F # iptables -L //清空所有規(guī)則 # iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -o ens36 -j SNAT --to-source 12.0.0.1 //設(shè)置SNAT轉(zhuǎn)發(fā),將所有192.168.100.0段的都轉(zhuǎn)換為12.0.0.1,然后進(jìn)行訪問client
- 開啟ipvsadm
# systemctl start ipvsadm.service 注:此時(shí)開啟可能會出現(xiàn)問題 # ipvsadm --save > /etc/sysconfig/ipvsadm //輸入該行即可
- 編寫可執(zhí)行的腳本
# 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 //清除內(nèi)核虛擬服務(wù)器表中的所有記錄// -A:添加虛擬服務(wù)器 -s:指定調(diào)度算法 rr:輪詢算法 -a:添加真實(shí)服務(wù)器 -t:指定外網(wǎng)網(wǎng)關(guān)及TCP端口 -r:指定節(jié)點(diǎn)服務(wù)器的地址及TCP端口 -m:使用NAT集群模式
打開一臺win7進(jìn)行檢測
注:當(dāng)兩次連續(xù)訪問12.0.0.1時(shí),可能一時(shí)間切換不過來,顯示的還是原來的界面,這時(shí)候就必須清除緩存,才能看到兩個(gè)不同的界面。當(dāng)然了,如果這時(shí)關(guān)掉其中一臺節(jié)點(diǎn)服務(wù)器的httpd服務(wù),那么再去訪問12.0.0.1時(shí),顯示的就是另一臺的網(wǎng)頁界面啦。