該實驗環境中所用到的軟件包是 :ipvsadm
lvs只有調度功能,不帶健康檢查,nginx既有調度也有代理功能
部署LVS-DR跟LVS-NAT不同的是:LVS-DR客戶端發出請求後,由後端WEB服務器直接轉發數據給客戶端client (同網段之間的轉發),而LVS-NAT是通過nat轉換傳送給調度器,再由調度器轉發給客戶客戶端(調度器和後端WEB服務器之間是不同網段,所以需要nat)
CIP是客戶端的IP地址; 192.168.4.10
VIP是對客戶端提供服務的IP地址;192.168.4.15(VIP必須配置在虛擬接口)
RIP是後端服務器的真實IP地址;192.168.4.100,192.168.4.200
DIP是調度器與後端服務器通信的IP地址 192.168.4.5
配置實驗網絡環境
一:設置Proxy代理服務器的VIP和DIP
注意:爲了防止衝突,VIP必須要配置在網卡的虛擬接口!!!
配置VIP:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0 //(eth0:0是新加的備份的網卡配置文件)
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.4.15 VIP的地址,
PREFIX=24
重啓網絡
# systemctl restart network
查看
ifconfig eth0:0
配置DIP: 將eth0的地址設置爲192.168.4.5 (是調度器與後端服務器通信的IP地址)
二.設置後端服務器web1,web2的網絡
1,給web1 web2設置RIP分別爲:192.168.4.100,192.168.4.200
2 配置VIP ,以web1爲例
# vim /etc/sysconfig/network-scripts/ifcfg-lo:0 (新增加的網卡必須是 lo:0 ,表示只有自己知道)
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0
3. web2的vip配置和web1一樣 (可以直接將web1的配置文件傳送給web2)
4.防止地址衝突的問題:
這裏因爲web1也配置與代理一樣的VIP地址,默認肯定會出現地址衝突;以web1爲例,web2也需要做如下操作
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.4.15的數據包,只有調度器會響應,其他主機都不做任何響應,這樣防止地址衝突的問題。
[root@web1 ~]# vim /etc/sysctl.conf #手動寫入如下4行內容 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 #當有arp廣播問誰是192.168.4.15時,本機忽略該ARP廣播,不做任何迴應 #本機不要向外宣告自己的lo迴環地址是192.168.4.15 [root@web1 ~]# sysctl -p //能使以上的配置文件立即生效
最後重啓web1和web2的網絡,設置防火牆與SELinux
- [root@web1 ~]# systemctl restart network
- [root@web1 ~]# ifconfig
- [root@web1 ~]# systemctl stop firewalld
- [root@web1 ~]# setenforce 0
三.在Proxy代理服務器安裝ipvsadm軟件包:
- [root@proxy ~]# yum -y install ipvsadm
創建新的 集羣服務器規則
- [root@proxy ~]# ipvsadm -A -t 192.168.4.15:80 -s wrr
添加真實服務器( -g 參數設置LVS工作模式爲DR模式,-w 設置權重)
- [root@proxy ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g -w 1
- [root@proxy ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -g -w 1
- [root@proxy ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm //保存配置
客戶端測試:
#curl http://192.168.4.15 (會輪詢顯示web1和web2的網頁內容)
[root@client ~]# curl http://192.168.4.15
192.168.2.100
[root@client ~]# curl http://192.168.4.15
192.168.2.200