LVS負載均衡群集的實現
1、群集的型別
①負載均衡群集(Load Balancer):提高應用系統的響應能力,減少延遲,獲得高併發、高負載;負載的分配依賴於主節點的分流演算法,將客戶機的請求分擔給多個節點伺服器
②高可用群集(High Available):提高應用系統的可靠性,減少中斷時間,達到高可用性;
HA包括雙工、主從兩種工作模式,雙工即所有節點可同時線上,主從即只有主節點線上
③高效能運算群集(High Performance Computer):提高運算速度、擴充套件硬體資源和分析能力;HPC的高效能依賴於分散式運算、平行計算,將多個資源整合在一起
2、負載均衡的分層結構
①負載排程器:群集唯一入口,對外提供群集
②伺服器池:提供應用服務的伺服器的集合,每個節點具有獨立的RIP(真實IP,Real IP)
③共享儲存:為所有節點提供穩定、一致的檔案存取服務,使用NAS裝置或NFS伺服器
3、負載均衡的工作模式
①地址轉換模式(NAT):負載排程器作為所有節點的閘道器,既是客戶機訪問的入口,也是節點回應客戶機的出口,各節點使用私有IP地址,安全性高
②IP隧道模式(TUN):負載排程器僅作為客戶機訪問的入口,各節點通過各自的Internet連接回應客戶機,不再經過負載排程器,各節點使用獨立公網IP地址,分散在不同位置
③直接路由模式(
4、LVS虛擬伺服器
Linux Virtual Server是針對Linux核心的負載均衡解決方案,由我國的章文嵩博士建立
主要負載排程演算法:
①輪詢(Round Robin):將收到的訪問請求按順序輪流分配給群集中的各節點,均等對待
②加權輪詢(Weighted Round Robin):根據伺服器的處理能力輪流分配收到的訪問請求
③最少連線(Least Connections):根據伺服器已建立連線數分配,優先分配給連線數少的
④加權最少連線(Weighted Least Connections):自動調整權重,適應於節點效能差異較大
5、NFS共享儲存服務
①Network File System是基於TCP/IP傳輸的網路檔案系統協議,通過NFS協議,客戶機可以像訪問本地目錄一樣訪問遠端伺服器上的共享資源。
②NFS服務依賴於RPC(Remote Process Call)機制,以完成遠端到本地的對映過程,在RHEL6中需要安裝nfs-utils、rpcbind軟體包來提供NFS共享服務,其中nfs-utils用於NFS共享釋出和訪問,rpcbind用於RPC支援
實驗一:構建LVS-NAT負載均衡群集
實驗環境:一臺win2003、四臺RHEL6
一、基本配置
1、配置各Linux主機名
vi /etc/sysconfig/network
HOSTNAME=lvs.benet.com
vi /etc/hosts
192.168.7.254 lvs.benet.com
2、配置IP地址、閘道器、關閉iptables
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.16.172
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.7.254
NETMASK=255.255.255.0
GATEWAY=192.168.7.254
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot --------其他虛擬機器配置與之類似
注:①在區域網中或互聯中,linux的主機名不能相同
②VMWare克隆或複製Linux虛擬機器後可能會導致找不到eth0網絡卡等問題,可通過刪除 /etc/udev/rules.d/70-persistent-net.rules檔案解決,需重啟系統
③如果各虛擬機器網絡卡MAC地址相同,可在ifcfg-eth0檔案中新增
MACADDR=22:22:22:22:22:22配置項,以指定不同的MAC地址
④內部的節點伺服器需要指定閘道器,可新增配置項GATEWAY=192.168.7.254
二、配置負載排程器
1、配置SNAT轉發規則
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl –p
iptables –F
iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -o eth0 -j SNAT --to-source 172.16.16.172
iptables-save > /etc/sysconfig/iptables
2、載入模組、安裝LVS群集管理工具
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install vsftpd -----通過FTP配置yum倉庫,方便安裝軟體包
vi /etc/vsftpd/vsftpd.conf
anon_root=/mnt/iso
service vsftpd start
chkconfig --level 35 vsftpd on
rpm -ivh /mnt/iso/Packages/ipvsadm-1.25-9.el6.i686.rpm
3、建立虛擬伺服器、新增web節點、儲存負載分配策略
service ipvsadm stop -----清除原有策略
ipvsadm -A -t 172.16.16.172:80 -s rr
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m -w 1
ipvsadm -Ln
service ipvsadm save -----儲存策略
chkconfig ipvsadm on
注:
①ipvsadm命令用於管理LVS群集,通過呼叫ip_vs模組來新增、刪除伺服器節點,以及檢視群集的執行狀態,需要手工安裝ipvsadm-1.25-9.el6.i686.rpm軟體包
②常用選項:
-A 新增虛擬伺服器
-t 指定VIP地址及埠號
-s 指定負載排程演算法,輪詢rr、加權輪詢wrr、最少連線lc、加權最少連線wlc
-a 新增節點伺服器
-d 刪除伺服器節點,如ipvsadm -d -t 172.16.16.172:80 -r 192.168.7.21:80
-r 指定各節點RIP地址及埠號
-m 使用NAT群集模式
-g 使用DR群集模式
-i 使用TUN群集模式
-w 設定權重,0表示暫停節點
-L 檢視LVS狀態
-n 以數字形式顯示地址、埠等資訊
-c 檢視各節點負載情況
三、配置NFS伺服器
配置yum,方便安裝軟體包
1、安裝ntf-utils、rpcbind軟體包
yum -y install nfs-utils rpcbind
chkconfig rpcbind on
chkconfig nfs on
2、設定共享目錄
mkdir -p /opt/wwwroot
vi /etc/exports
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)
3、啟動服務並檢視釋出的共享目錄
service rpcbind start
service nfs start
netstat -anpt | grep rpcbind -----使用111埠
showmount -e
四、配置節點伺服器
1、安裝rpcbind軟體包以實現訪問NFS共享資源
yum -y install nfs-utils rpcbind
service rpcbind start
chkconfig rpcbind on
showmount -e 192.168.7.250 -----檢視NFS伺服器共享的目錄
注:①如果報錯“clnt_create: RPC: Program not registered”,可能是未修改各Linux主機名或伺服器的nfs服務未執行
②如果報錯“clnt_create: RPC: Port mapper failure - Unable to receive:error....”,可能是被伺服器上iptables防火牆阻止,關閉防火牆即可
2、掛載NFS共享目錄
mkdir -p /var/www/html
mount -t nfs 192.168.7.250:/opt/wwwroot /var/www/html
vi /etc/fstab
192.168.7.250:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0
3、安裝httpd軟體包並建立測試頁面
yum –y install httpd
service httpd start
chkconfig httpd on
echo welcome to web! > /var/www/html/index.html
五、測試LVS群集
在外網主機中訪問http://172.16.16.172進行測試,重新整理時可以看到不同的節點提供的內容
在負載排程器上檢視
ipvsadm -Ln -----檢視節點狀態
ipvsadm –Lnc -----檢視負載連線情況
實驗二:構建LVS-DR負載均衡群集
在DR模式的負載均衡群集中由於入站、出站資料被分別處理,所以LVS負載排程器和各節點伺服器都需要配置有VIP地址,以便響應對整個群集的訪問;而共享儲存設定一般會放在內部網路中
一、基本配置
配置各Linux主機名、關閉iptables等
二、配置負載排程器
1、為eth0、eth1、eth0:0配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.16.254
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.7.254
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=172.16.16.172
NETMASK=255.255.255.0
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot --------重新啟動虛擬機器
2、調整/proc核心引數,關閉重定向響應
由於負載排程器和各節點共用VIP地址,為避免ARP解析異常,故關閉核心的重定向響應
vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
sysctl –p
3、載入模組、安裝LVS群集管理工具
modprobe ip_vs
rpm -ivh /mnt/iso/Packages/ipvsadm-1.25-9.el6.i686.rpm
yum -y install vsftpd -----配置yum倉庫,方便安裝軟體包
vi /etc/vsftpd/vsftpd.conf
anon_root=/mnt
service vsftpd start
chkconfig vsftpd on
4、建立虛擬伺服器、新增web節點、儲存負載分配策略
service ipvsadm stop
ipvsadm -A -t 172.16.16.172:80 -s rr
ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.21:80 -g -w 1
ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.22:80 -g -w 1
service ipvsadm save
chkconfig ipvsadm on
三、配置NFS伺服器
1、為eth0配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.7.250
NETMASK=255.255.255.0
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot
2、安裝ntf-utils、rpcbind軟體包
yum -y install nfs-utils rpcbind
3、設定共享目錄
mkdir -p /opt/wwwroot
vi /etc/exports
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)
4、啟動服務並檢視釋出的共享目錄
service rpcbind start
service nfs start
chkconfig rpcbind on
chkconfig nfs on
netstat -anpt | grep rpcbind -----使用111埠
showmount -e 127.0.0.1
四、配置節點伺服器
1、為eth0、eth1、lo:0配置IP地址,並新增路由記錄
①配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.16.21
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.7.21
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=172.16.16.172 -----此地址僅用作響應資料包的源地址
NETMASK=255.255.255.255 -----子網掩碼必須全為1
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot -------重新啟動虛擬機器,節點2的配置與之類似
②新增VIP本地訪問路由
vi /etc/rc.local
/sbin/route add -host 172.16.16.172 dev lo:0
route add -host 172.16.16.172 dev lo:0
2、調整/proc核心引數,關閉重定向響應
vi /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
3、安裝rpcbind軟體包以實現訪問NFS共享資源
yum -y install nfs-utils rpcbind
service rpcbind start
chkconfig rpcbind on
showmount -e 192.168.7.250
4、掛載NFS共享目錄
mkdir -p /var/www/html
mount 192.168.7.250:/opt/wwwroot /var/www/html
vi /etc/fstab
192.168.7.250:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0
5、安裝httpd軟體包並建立測試頁面
yum –y install httpd
echo welcome to web! > /var/www/html/index.html
service httpd start
chkconfig httpd on
五、測試LVS群集
在外網主機中訪問http://172.16.16.172進行測試,重新整理時可以看到不同的節點提供的內容
在負載排程器上檢視
ipvsadm -Ln -----檢視節點狀態
ipvsadm -Lnc -----檢視負載連線情況