1. 程式人生 > >LVS負載均衡群集的實現

LVS負載均衡群集的實現


 1、群集的型別

①負載均衡群集(Load Balancer):提高應用系統的響應能力,減少延遲,獲得高併發、高負載;負載的分配依賴於主節點的分流演算法,將客戶機的請求分擔給多個節點伺服器

②高可用群集(High Available):提高應用系統的可靠性,減少中斷時間,達到高可用性;

HA包括雙工、主從兩種工作模式,雙工即所有節點可同時線上,主從即只有主節點線上

③高效能運算群集(High Performance Computer):提高運算速度、擴充套件硬體資源和分析能力;HPC的高效能依賴於分散式運算、平行計算,將多個資源整合在一起

2、負載均衡的分層結構

①負載排程器:群集唯一入口,對外提供群集

IP地址(虛擬IPVirtual  IP

②伺服器池:提供應用服務的伺服器的集合,每個節點具有獨立的RIP(真實IPReal  IP

③共享儲存:為所有節點提供穩定、一致的檔案存取服務,使用NAS裝置或NFS伺服器

3、負載均衡的工作模式

①地址轉換模式(NAT):負載排程器作為所有節點的閘道器,既是客戶機訪問的入口,也是節點回應客戶機的出口,各節點使用私有IP地址,安全性高

IP隧道模式(TUN):負載排程器僅作為客戶機訪問的入口,各節點通過各自的Internet連接回應客戶機,不再經過負載排程器,各節點使用獨立公網IP地址,分散在不同位置

③直接路由模式(

DR):與TUN模式類似,負載排程器僅作為客戶機訪問的入口,各節點通過各自的Internet連接回應客戶機,各節點使用獨立公網IP地址,但各節點並非分散在各地,而是與排程器位於同一個物理網路

4LVS虛擬伺服器

Linux Virtual Server是針對Linux核心的負載均衡解決方案,由我國的章文嵩博士建立

主要負載排程演算法:

①輪詢(Round Robin):將收到的訪問請求按順序輪流分配給群集中的各節點,均等對待

②加權輪詢(Weighted Round Robin):根據伺服器的處理能力輪流分配收到的訪問請求

③最少連線(Least Connections):根據伺服器已建立連線數分配,優先分配給連線數少的

④加權最少連線(Weighted Least Connections):自動調整權重,適應於節點效能差異較大

5NFS共享儲存服務

Network File System是基於TCP/IP傳輸的網路檔案系統協議,通過NFS協議,客戶機可以像訪問本地目錄一樣訪問遠端伺服器上的共享資源。

NFS服務依賴於RPCRemote Process Call)機制,以完成遠端到本地的對映過程,在RHEL6中需要安裝nfs-utilsrpcbind軟體包來提供NFS共享服務,其中nfs-utils用於NFS共享釋出和訪問,rpcbind用於RPC支援

 

實驗一:構建LVS-NAT負載均衡群集

實驗環境:一臺win2003、四臺RHEL6

Snip20190101_1.png

 

一、基本配置

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-utilsrpcbind軟體包

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負載均衡群集

 

Snip20190101_2.png

DR模式的負載均衡群集中由於入站、出站資料被分別處理,所以LVS負載排程器和各節點伺服器都需要配置有VIP地址,以便響應對整個群集的訪問;而共享儲存設定一般會放在內部網路中

 

一、基本配置

配置各Linux主機名、關閉iptables

二、配置負載排程器

1、為eth0eth1eth0: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-utilsrpcbind軟體包

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、為eth0eth1lo: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     -----檢視負載連線情況


講師介紹.jpg