負載均衡集群(LBC)
1.負載均衡集群的概述
所有節點的作業內容一致,做的都是同一件事,互相分擔節點服務器的壓力,如訪問量,單臺節點的訪問量不能夠很好的滿足客戶端的訪問,這個時候,我們就可以增加服務器的數量來解決這個問題,這樣就可以很好的提高用戶訪問的效率
2.集群中各節點的特點
每臺服務器分擔集群節點的壓力、作業目標明確、作業內容一致、提供的是作業效率
3.LVS負載均衡集群的分類
| 模式 | 作業原理 |
|---|---|
| LVS-DR模式 | 又叫直接路由模式,客戶端發送一個包含VIP地址的請求到負載調度器上,負載調度器根據演算法提交給內網真實服務器處理,然后內網真實服務器直接回傳給客戶端,唯一的好處就是回傳的資料包不經過負載調度器,減輕了負載調度器的壓力 |
| LVS-NAT模式 | 客戶端請求負載調度器,負載調度器根據NAT地址轉換功能,將請求發送給內網真實服務器去處理,真實服務處理了之后回傳負載調度器,再由負載調度器回傳給客戶端,整個程序都要經過負載調度器,極大的增加負載調度器的壓力 |
LVS-DR模式的搭建
準備作業
1.準備三臺centos 7 的作業系統
2.一臺為LVS負載調度器、兩臺為httpd服務器
3.LVS負載調度器上存在兩張網卡,一張內網網卡,主要連接兩臺httpd服務器的,一張外網,主要和外網進行通信
3.兩臺httpd服務器存在于內網當中
關閉防火墻、selinux以及網卡守護行程
[root@lvs-dr ~]# systemctl stop firewalld
[root@lvs-dr ~]# systemctl disable firewalld
[root@lvs-dr ~]# vi /etc/selinux/config
......
SELINUX=disabled
......
[root@lvs-dr ~]# setenforce 0
[root@lvs-dr ~]# systemctl stop NetworkManager //關閉網卡守護行程
[root@lvs-dr ~]# systemctl disable NetworkManager
注:所有系統均有執行以上操作
Lvs-dr 負載調度器的配置
[root@lvs-dr ~]# vi /etc/sysctl.conf //編輯這個檔案
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@lvs-dr ~]# sysctl -p //執行這個生效
[root@lvs-dr ~]# yum install -y ipvsadm //安裝ipvsadm軟體
[root@lvs-dr ~]# modprobe ip_vs //把ipvsadm加載到內核當中去
[root@lvs-dr ~]# ipvsadm -Ln //查看當前ipvsadm的狀態
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@lvs-dr ~]# cd /etc/sysconfig/network-scripts/ //進入網卡組態檔所在的目錄
[root@lvs-dr network-scripts]# cp -r ifcfg-ens33 ifcfg-ens33:0 //復制內網網卡作為子網卡
[root@lvs-dr network-scripts]# vi ifcfg-ens33:0 //編輯這張網卡,修改如下的內容
IPADDR=192.168.1.150 //修改IP地址
NAME="ens33:0" //修改名稱
#UUID="76ac6300-c65f-4cae-baa5-ca12c5bdcde0" //注釋這一行
DEVICE="ens33:0"
[root@lvs-dr network-scripts]# systemctl restart network //然后重啟網卡即可
[root@lvs-dr network-scripts]# ip a //使用這個命令就可以查看得到我們配置的效果了
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d8:b0:c3 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.1.150/24 brd 192.168.1.255 scope global secondary ens33:0
以上操作完成以后,我們就可以添加集群以及主機了
[root@lvs-dr ~]# ipvsadm -A -t 192.168.1.150:80 -s rr //創建一個集群
[root@lvs-dr ~]# ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.20:80 -g //為集群添加主機
[root@lvs-dr ~]# ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.30:80 -g
[root@lvs-dr ~]# ipvsadm -ln //查看添加的狀態
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.150:80 rr
-> 192.168.1.20:80 Route 1 0 0
-> 192.168.1.30:80 Route 1 0 0
注:-A 創建一個集群 -t 指定VIP 地址 -s 指定演算法 rr 代表輪詢 -a 添加主機 -g 代表 lvs-dr 模式
優化操作
[root@lvs-dr ~]# ipvsadm -Sn //保存配置
-A -t 192.168.1.150:80 -s rr
-a -t 192.168.1.150:80 -r 192.168.1.20:80 -g -w 1
-a -t 192.168.1.150:80 -r 192.168.1.30:80 -g -w 1
[root@lvs-dr ~]# echo "ipvsadm -Sn" >> /etc/sysconfig/ipvsadm //將輸出的內容保存到一個檔案當中
[root@lvs-dr ~]# ipvsadm -C //清除當前ipvsadm的所有配置
[root@lvs-dr ~]# ipvsadm-restore < /etc/sysconfig/ipvsadm //重新加載配置
[root@lvs-dr ~]# echo "ipvsadm-restore < /etc/sysconfig/ipvsadm" >> /etc/rc.local //加入到開機自啟
[root@lvs-dr ~]# ipvsadm -Ln --stats //查看狀態
IP Virtual Server version 1.2.1 (size=4096)
[root@lvs-dr ~]#
[root@lvs-dr ~]# ipvsadm -Sn
-A -t 192.168.1.150:80 -s rr
-a -t 192.168.1.150:80 -r 192.168.1.20:80 -g -w 1
-a -t 192.168.1.150:80 -r 192.168.1.30:80 -g -w 1
httpd服務器的配置
[root@server1 ~]# yum install -y httpd //下載httpd服務器
[root@server1 ~]# systemctl start httpd
[root@server1 ~]# systemctl enable httpd
[root@server1 ~]# echo "this is server 1" >> /var/www/html/index.html
[root@server1 ~]# curl localhost
this is server 1
注:兩臺httpdserver 都要執行以上操作,唯一不同的就是網頁的內容,盡量讓他們不一樣,雖然在真實環境下所有真實服務器的內容都是一致,為了實作實驗的效果,只好將他們設定為不一樣
以上操作完成以后,在來執行以下操作(兩臺httpd服務器操作一致)
[root@server1 ~]# cd /etc/sysconfig/network-scripts/ //進入網卡組態檔
[root@server1 network-scripts]# cp -r ifcfg-lo ifcfg-lo:0 //復制回環網卡增加一個子網卡
[root@server1 network-scripts]# vi ifcfg-lo:0 //修改這個網卡,修改如下內容
DEVICE=lo:0
IPADDR=192.168.1.150
NETMASK=255.255.255.255
為了訪問IP地址方式沖突我們進行修改arp的相應級別操作
[root@server1 network-scripts]# 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
[root@server1 network-scripts]# sysctl -p //執行這個生效
[root@server1 ~]# systemctl restart network //重啟網卡操作
[root@server1 ~]# ip a //查看配置是否生效
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.1.150/32 brd 192.168.1.150 scope global lo:0
valid_lft forever preferred_lft forever
然后我們添加一條路由(當來自192.168.1.150的資料都交給lo:0網卡去處理)
[root@server1 ~]# route add -host 192.168.1.150 dev lo:0
[root@server1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.1.150 0.0.0.0 255.255.255.255 UH 0 0 0 lo
[root@server1 ~]# echo "route add -host 192.168.1.150 dev lo:0" >> /etc/rc.local //寫入到開機自動
驗證測驗
第一次訪問

當我們不斷點擊重繪按鈕時(就會在兩個服務器之間來回切換)

負載調度器上查看分擔的量
[root@lvs-dr ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.1.150:80 6 191 0 52055 0
-> 192.168.1.20:80 3 121 0 34211 0
-> 192.168.1.30:80 3 70 0 17844 0
以上就是LVS-DR 模式的構建
LVS-NAT模式的搭建
我們基于以上的主機來創建,因為我之前拍攝的有快照,所有這里就直接恢復然后進行操作了
lvs-nat 負載調度器的配置
[root@lvs-nat ~]# vi /etc/sysctl.conf //編輯這個檔案
net.ipv4.ip_forward = 1 //開啟路由轉發功能
[root@lvs-nat ~]# sysctl -p
[root@lvs-nat ~]# yum install -y ipvsadm //安裝ipvsadm
[root@lvs-nat ~]# ipvsadm -A -t 10.1.1.10:80 -s rr //創建集群并且添加主機
[root@lvs-nat ~]# ipvsadm -a -t 10.1.1.10:80 -r 192.168.1.20:80 -m
[root@lvs-nat ~]# ipvsadm -a -t 10.1.1.10:80 -r 192.168.1.30:80 -m
[root@lvs-nat ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.1.1.10:80 rr
-> 192.168.1.20:80 Masq 1 0 0
-> 192.168.1.30:80 Masq 1 0 0
注:這里的集群對外的IP地址為負載調度器上外網卡的IP地址
優化操作 和LVS-DR模式的一致,這里就不寫了
httpd服務器的配置 (兩臺服務器的操作一致)
[root@server2 ~]# yum install -y httpd
[root@server2 ~]# systemctl start httpd
[root@server2 ~]# echo "this is server 1" >> /var/www/html/index.html
[root@server2 ~]# curl localhost
this is server 1
這里還是一樣,兩臺服務器的內容一致,主要好區分效果
然后我們為兩臺服務器添加網關,網關指向負載調度器上內網網卡的IP地址
[root@server2 ~]# echo "GATEWAY=192.168.1.10" >>/etc/sysconfig/network-scripts/ifcfg-ens33
[root@server2 ~]# systemctl restart network
瀏覽器上測驗
第一次訪問

第二次訪問(不斷重繪頁面)

至此,負載均衡集群的兩種模式就此搭建完成,如有錯誤,歡迎指出改正
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/164401.html
標籤:其他
