一、lvs-nat模式
1.1、環境介紹
本實驗用三台虛擬機完成,一台虛擬機模擬lvs調度器,兩塊網卡,一塊模擬公網一塊模擬私網,公網地址192.168.0.201/24,私網地址192.168.4.130/24,另外兩台虛擬機分別模擬一台后端web服務器。IP地址分別為192.168.4.128/24,192.168.4.129/24,兩台web服務器通過私網地址和調度服務器連接,此例一權重輪訓方式為例。通過訪問192.168.0.201達到輪訓兩台web服務器。如果兩台web服務器的資源是一樣的就可以達到web服務器的負載均衡。
1.2、環境准備
兩台web服務器起web服務,配置默認首頁,首頁內容分別為兩者的IP地址。這里不詳細介紹。
配置三台服務器的IP地址。
配置命令:
lvs服務器:
1 nmcli connection modi ens34 ipv4.method manual ipv4.addresses 192.168.4.130/24 ipv4.gateway 192.168.4.2 ipv4.dns 114.114.114.114 connection.autoconnect yes 2 nmcli connection up ens34 3 nmcli connection modi ens33 ipv4.method manual ipv4.addresses 192.168.0.201/24 ipv4.gateway 192.168.4.2 ipv4.dns 114.114.114.114 connection.autoconnect yes 4 nmcli connection up ens33
web服務器:
1 nmcli connection modi ens34 ipv4.method manual ipv4.addresses 192.168.4.128/24 ipv4.gateway 192.168.4.130 ipv4.dns 114.114.114.114 connection.autoconnect yes #這里網關必須是lvs服務器內網的IP地址 2 nmcli connection up ens34
1 nmcli connection modi ens34 ipv4.method manual ipv4.addresses 192.168.4.129/24 ipv4.gateway 192.168.4.130 ipv4.dns 114.114.114.114 connection.autoconnect yes #這里網關必須是lvs服務器內網的IP地址 2 nmcli connection up ens34
1.3、配置lvs調度服務器
1.3.1、安裝ipvsadm工具
lvs是linux內置的功能模塊,是集成在內核中的,但是需要ipvsadm工具來傳遞命令給內核才能使用。
命令:
1 yum -y install ipvsadm
1.3.2、配置調度器
[root@client ~]# ipvsadm -A -t 192.168.0.201:80 -s wrr [root@client ~]# 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.0.201:80 wrr [root@client ~]# ipvsadm -a -t 192.168.0.201:80 -r 192.168.4.128 -w 2 -m [root@client ~]# ipvsadm -a -t 192.168.0.201:80 -r 192.168.4.129 -w 1 -m [root@client ~]# 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.0.201:80 wrr -> 192.168.4.128:80 Masq 2 0 0
-> 192.168.4.129:80 Masq 1 0 0 [root@client ~]#
1.3.3、測試負載均衡
測試成功,兩台web服務器通過訪問192.168.0.201,實際訪問的是192.168.4.128和192.168.4.129,且是加權輪訓,128的權重是2,訪問時輪訓2次后,訪問另一台web,所以才出現上述結果。
二、LVS-DR負載均衡部署
2.1、實驗背景
使用LVS實現DR模式的集群調度服務器,為用戶提供Web服務:
- 客戶端IP地址為192.168.0.6
- LVS調度器VIP地址為192.168.0.202
- LVS調度器DIP地址設置為192.168.0.201
- 真實Web服務器地址分別為192.168.0.19、192.168.0.127
- 使用加權輪詢調度算法,web1的權重為1,web2的權重為2
說明:
CIP是客戶端的IP地址;
VIP是對客戶端提供服務的IP地址;
RIP是后端服務器的真實IP地址;
DIP是調度器與后端服務器通信的IP地址(VIP必須配置在虛擬接口)。
2.2、方案
使用4台虛擬機,1台作為客戶端、1台作為Director調度器、2台作為Real Server,拓撲結構如圖-2所示。實驗拓撲結構主機配置細節如表-4所示。
2.3、配置步驟
實現此案例需要按照如下步驟進行。
說明:
CIP是客戶端的IP地址;
VIP是對客戶端提供服務的IP地址;
RIP是后端服務器的真實IP地址;
DIP是調度器與后端服務器通信的IP地址(VIP必須配置在虛擬接口)。
步驟一:配置實驗網絡環境
2.3.1、設置LVS代理服務器的VIP和DIP
注意:為了防止沖突,VIP必須要配置在網卡的虛擬接口。
重啟網卡,但是重啟網卡后可能不生效,需要將另一個網卡管理程序關掉(一般在rhel7和centos7以上的版本中會出現這種情況)
命令:
2.3.2、設置Web1服務器網絡參數
1 nmcli connect modif ens33 ipv4.method manual ipv4.address 192.168.0.19/24 ipv4.gateway 192.168.0.1 ipv4.dns 114.114.114.114 connection.autoconnect yes 2 nmcli connect up ens3
接下來給web1配置VIP地址。
注意:這里的子網掩碼必須是32(也就是全255),網絡地址與IP地址一樣,廣播地址與IP地址也一樣。
配置完web1的VIP后先不急着重啟網卡,因為直接重啟會發生地址沖突的情況,因為同一個網絡中存在多個VIP,會造成網絡中地址沖突。
防止地址沖突的問題:
這里因為web1也配置與代理一樣的VIP地址,默認肯定會出現地址沖突;
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.0.202的數據包,只有調度器會響應,其他主機都不做任何響應,這樣防止地址沖突的問題。
1 vim /etc/sysctl.conf 2 #手動寫入如下4行內容 3 net.ipv4.conf.all.arp_ignore = 1
4 net.ipv4.conf.lo.arp_ignore = 1
5 net.ipv4.conf.lo.arp_announce = 2
6 net.ipv4.conf.all.arp_announce = 2
7 #當有arp廣播問誰是192.168.4.15時,本機忽略該ARP廣播,不做任何回應 8 #本機不要向外宣告自己的lo回環地址是192.168.4.15
9 sysctl -p #這條命令會讓/etc/sysctl.conf立即生效,或者直接重啟服務器
重啟網卡后查看網卡,會發現出現一個虛擬網卡ens33:0
2.3.3、設置Web2服務器網絡參數
配置步驟和配置web1的步驟一樣,只需要把RIP的地址改為192.168.0.127.這里不做詳細介紹,按照web1 的配置步驟就可以。
2.4、配置后端的web服務器
httpd,安裝配置啟服務,這里不做介紹,2台web服務器的主頁分別是192.168.4.128和192.168.4.129.
2.5、LVS調度器安裝軟件並部署LVS-DR模式調度器
2.5.1、安裝軟件(如果已經安裝,此步驟可以忽略)
2.5.2、清理之前實驗的規則,創建新的集群服務器規則
1 [root@proxy ~]# ipvsadm -C #清空所有規則 2 [root@proxy ~]# ipvsadm -A -t 192.168.0.202:80 -s wrr
2.5.3、添加真實服務器(-g參數設置LVS工作模式為DR模式,-w設置權重)
[root@proxy ~]# ipvsadm -a -t 192.168.0.202:80 -r 192.168.0.19 -g -w 1 [root@proxy ~]# ipvsadm -a -t 192.168.0.202:80 -r 192.168.0.127 -g -w 2
2.5.4、查看規則列表,並保存規則
1 [root@client network-scripts]# ipvsadm -e -t 192.168.0.202:80 -r 192.168.0.127 -w 2 -g 2 [root@client network-scripts]# ipvsadm -Ln 3 IP Virtual Server version 1.2.1 (size=4096) 4 Prot LocalAddress:Port Scheduler Flags 5 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 6 TCP 192.168.0.202:80 rr 7 -> 192.168.0.19:80 Route 1 0 0
8 -> 192.168.0.127:80 Route 2 0 0
9 [root@client network-scripts]#
2.6、客戶端測試
在客戶端192.168.0.6上使用curl命令反復連接http://192.168.0.202,查看訪問的頁面是否會輪詢到不同的后端真實服務器。