LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群系統(tǒng)。
本項(xiàng)目在1998年5月由章文嵩博士成立,是中國國內(nèi)最早出現(xiàn)的自由軟件項(xiàng)目之一
可伸縮網(wǎng)絡(luò)服務(wù)的幾種結(jié)構(gòu),它們都需要一個(gè)前端的負(fù)載調(diào)度器(或者多個(gè)進(jìn)行主從備份)。
我們先分析實(shí)現(xiàn)虛擬網(wǎng)絡(luò)服務(wù)的主要技術(shù),指出IP負(fù)載均衡技術(shù)是在負(fù)載調(diào)度器的實(shí)現(xiàn)技術(shù)中效率最高的。
在已有的IP負(fù)載均衡技術(shù)中,主要有通過網(wǎng)絡(luò)地址轉(zhuǎn)換(Network?Address?Translation)將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器,
我們稱之為VS/NAT技術(shù)(Virtual?Server?via?Network?Address?Translation)。在分析VS/NAT的缺點(diǎn)和網(wǎng)絡(luò)服務(wù)的非對(duì)稱性的基礎(chǔ)上,
我們提出了通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器的方法VS/TUN(Virtual?Server?via?IP?Tunneling),和通過直接路由實(shí)現(xiàn)
虛擬服務(wù)器的方法VS/DR(Virtual?Server?via?Direct?Routing),它們可以極大地提高系統(tǒng)的伸縮性。
VS/NAT、VS/TUN和VS/DR技術(shù)是LVS集群中實(shí)現(xiàn)的三種IP負(fù)載均衡技術(shù)。
-------------------------
LBC? ? ? 負(fù)載均衡群集
HA?????高可用群集
HPC????高性能運(yùn)算群集
1、結(jié)構(gòu)
負(fù)載調(diào)度器:分配用戶請求,提供服務(wù)器池內(nèi)的主機(jī)健康狀態(tài)檢查
服務(wù)器池:真正處理用戶請求的多臺(tái)主機(jī)組成的集群。
共享存儲(chǔ):通過網(wǎng)絡(luò)提供數(shù)據(jù)給服務(wù)器池中的節(jié)點(diǎn)主機(jī)
2、工作模式
NAT:地址轉(zhuǎn)換
TUN:隧道模式
DR:路由模式
3、調(diào)度算法:
輪詢
加權(quán)輪詢
最少連接
加權(quán)最少連接
加權(quán):分配用戶請求之前,檢測目標(biāo)主機(jī)的性能是否達(dá)到瓶頸。
實(shí)驗(yàn)環(huán)境:
兩臺(tái)Web-Server,一臺(tái)負(fù)載調(diào)度器(Director),一臺(tái)NFS共享服務(wù)器(可在web節(jié)點(diǎn)實(shí)現(xiàn))
網(wǎng)絡(luò)配置:
VIP(Virtual IP):192.168.66.1/24
web-node1:192.168.66.145/24
web-node2:192.168.66.146/24
NFS-Server:192.168.66.150/24
公網(wǎng)IP:172.31.26.16/24
搭建VS/NAT步驟:
1、配置內(nèi)網(wǎng)主機(jī) ? ? ? ?-- (所有內(nèi)網(wǎng)機(jī)都指向網(wǎng)關(guān))
a、配置共享存儲(chǔ)服務(wù)器
vim?/etc/exports
/share192.168.66.0/24(ro,sync) ? ? ? ?--哪個(gè)網(wǎng)段ip可以訪問該共享(只讀,實(shí)時(shí)同步)
servie?rpcbind?restart
service??nfs?restart
showmount192.168.66.100 ? ? ? ? ? ? ? ?-- 查看共享
b、配置服務(wù)器池節(jié)點(diǎn)主機(jī)
cd?/var/www/html
mount?-t?nfs 共享存儲(chǔ)IP:共享目錄?/var/www/html
service?httpd?start
第二臺(tái)手動(dòng)創(chuàng)建首頁文件進(jìn)行測試
2、配置負(fù)載調(diào)度器
查詢內(nèi)核是否支持
modprobe?ip_vs
cat?/proc/net/ip_vs
安裝ipvsadm軟件
rpm?-ivh?ipvsadm
查看版本
ipvsadm?-v
開啟IPv4路由轉(zhuǎn)發(fā)
vim?/etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl?-p
配置防火墻
iptables?-t?nat?-A?POSTROUTING?-o 外網(wǎng)接口名 -s 內(nèi)網(wǎng)網(wǎng)段?-j?SNAT?--to-source 外網(wǎng)IP地址
ipvsadm?-A?-t 外網(wǎng)IP:80 -s?rr ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-- ?-A代表添加負(fù)載調(diào)度器;-s代表使用的算法;rr代表輪詢
ipvsadm?-a?-t?外網(wǎng)IP:80 -r 網(wǎng)站節(jié)點(diǎn)1:80 -m ? ? ? ? ? ? ? ? ?-- ?-m代表NAT模式
ipvsadm?-a?-t 外網(wǎng)IP:80 -r 網(wǎng)站節(jié)點(diǎn)2:80 -m
查看所配置的信息
ipvsadm?-Ln
保存并設(shè)置自啟
service?ipvsadm?save
chkconfig?ipvsadm?on
3、測試
訪問負(fù)載調(diào)度器的外網(wǎng)卡IP,重復(fù)刷新可看到效果。
搭建VS/DR步驟:
1、負(fù)載調(diào)度器配置:
service?NetworkManager?stop
配置虛擬IP:
cd?/etc/sysconfig/network-scripts/
cp?ifcfg-eth0 ifcfg-eth0:0
vim?ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=虛擬IP
ifup?eth0:0
配置內(nèi)核參數(shù),使其不發(fā)廣播包,以免造成ip沖突
vim?/etc/sysctl.conf
net.ipv4.conf.all.send_redirects?=?0
net.ipv4.conf.default.send_redirects?=?0
net.ipv4.conf.eth0.send_redirects?=?0
sysctl?-p
modprobe?ip_vs
cat?/proc/net/ip_vs
安裝并配置ipvsadm
rpm?-ivh?ipvsadm
ipvsadm?-v
ipvsadm?-A?-t 虛擬IP:80 -s?rr ? ? ? ? ? ? ? ? ? ? ? ? ? ? -- ?-A代表添加負(fù)載調(diào)度器;-s代表使用的算法;rr代表輪詢
ipvsadm?-a?-t 虛擬IP:80 -r 網(wǎng)站節(jié)點(diǎn)1:80 -g ? ? ? -- ?-g代表DB模式
ipvsadm?-a?-t 虛擬IP:80 -r 網(wǎng)站節(jié)點(diǎn)2:80 -g
ipvsadm?-Ln
service?ipvsadm?save
chkconfig?ipvsadm?on
2、網(wǎng)站服務(wù)器1配置:
service?NetworkManager?stop
拷貝并配置虛擬IP
cd?/etc/sysconfig/network-scripts/
cp?ifcfg-loifcfg-lo:0
DEVICE=lo:0
IPADDR=虛擬IP
NETMASK=255.255.255.255
修改內(nèi)核參數(shù),防止ip沖突
vim?/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore?=?1
net.ipv4.conf.all.arp_announce?=?2
net.ipv4.conf.default.arp_ignore?=?1
net.ipv4.conf.default.arp_announce?=?2
net.ipv4.conf.lo.arp_ignore?=?1
net.ipv4.conf.lo.arp_announce?=?2
sysctl?-p
指一條路由,代表所有要訪問該虛擬ip的主機(jī)都通過lo:0網(wǎng)卡訪問
route?add?-host 虛擬IP dev lo:0
mount?-t?nfs 共享存儲(chǔ):共享目錄 /var/www/html
service?httpd?start
3、網(wǎng)站節(jié)點(diǎn)2配置:
service?NetworkManager?stop
拷貝并配置虛擬IP
cd?/etc/sysconfig/network-scripts/
cp?ifcfg-lo ifcfg-lo:0
DEVICE=lo:0
IPADDR=虛擬IP
NETMASK=255.255.255.255
修改內(nèi)核參數(shù),防止ip沖突
vim?/etc/sysctl.conf
net.ipv4.conf.all.arp_ignore?=?1
net.ipv4.conf.all.arp_announce?=?2
net.ipv4.conf.default.arp_ignore?=?1
net.ipv4.conf.default.arp_announce?=?2
net.ipv4.conf.lo.arp_ignore?=?1
net.ipv4.conf.lo.arp_announce?=?2
sysctl?-p
指一條路由,代表所有要訪問該虛擬ip的主機(jī)都通過lo:0網(wǎng)卡訪問
route?add?-host 虛擬IP dev lo:0
vim?/var/www/html/index.html
"hello world"
service?httpd?start
4、共享存儲(chǔ)配置:
共享存儲(chǔ)
vim/etc/exports
/share內(nèi)網(wǎng)網(wǎng)段(ro,sync)
servie?rpcbind?restart
service??nfs?restart