1. 程式人生 > >超詳細LVS負載均衡群集-DR模式

超詳細LVS負載均衡群集-DR模式

開啟路由轉發 分享圖片 服務 conf 測試 網段 mage network cat

工作原理

當大量用戶訪問web群集時,所有的訪問請求均發到LVS負載均衡器的外網接口,LVS負載均衡器將用戶的訪問請求進行分流。分別發給Web服務器池中的不同節點,Web服務器節點收到用戶的訪問請求以後,通過各自Internet的出口,將回訪數據直接發送給對應的用戶,而不需要經過LVS負載均衡器

詳細LVS介紹可以查看我之前寫的帖子

http://blog.51cto.com/11905606/2164075

實驗環境

主機 操作系統 IP地址
負載調度器 CentOS 7.4 x86_64 192.168.100.71
Web節點服務器 01 CentOS 7.4 x86_64 192.168.100.73
Web節點服務器 02 CentOS 7.4 x86_64 192.168.100.74
Client端 CentOS 7.4 x86_64 192.168.100.72

搭建步驟

一、部署LVS_DR

1、編輯sysctl配置文件

[root@localhost ~]# vim /etc/sysctl.conf

添加以下參數:

net.ipv4.ip_forward=1 #開啟路由轉發功能
net.ipv4.conf.all.send_redirects = 0 #以下三處設定響應關閉重定向功能
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@localhost ~]# sysctl -p #重新讀取配置文件

2、配置調度器虛擬IP地址

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0 #創建虛擬子接口網卡配置文件
[root@localhost network-scripts]# vim ifcfg-ens33:0 #編輯虛擬網卡配置文件

添加以下參數:

DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.255

BROADCAST=192.168.100.100 #廣播地址

[root@localhost ~]# ifup ens33:0 #啟動虛擬網卡
[root@localhost ~]# ifconfig ens33:0
技術分享圖片

2、加載ip_vs模塊,安裝ipvsadm工具

[root@localhost ~]# yum -y install ipvsadm #安裝ipvs工具

[root@localhost ~]# modprobe ip_vs #加載內核模塊
[root@localhost ~]# cat /proc/net/ip_vs
技術分享圖片

[root@localhost ~]# route add -host 192.168.40.100 dev ens33:0 #添加路由

3、配置調度器負載分配策略

[root@localhost ~]# ipvsadm -C #先將之前定義的規則全部清除掉
[root@localhost ~]# ipvsadm -A -t 192.168.40.100:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.40.100:80 -r 192.168.40.73 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.40.100:80 -r 192.168.40.74 -g -w 1

ipvsadm工具參數說明:

-A:添加虛擬服務器
-a:表示添加真實服務器
-d:刪除某一個節點
-t:指定VIP地址及TCP端口(虛擬服務器)
-r:指定RIP地址及TCP端口(真實服務器)
-s:指定負載調度算法
-m:NAT群集模式
-g:DR模式
-i:TUN模式
-w:設置權重(權重為0時表示暫停節點) 即優先級

[root@localhost ~]# ipvsadm -L -n
技術分享圖片

[root@localhost ~]# ipvsadm --save > /etc/sysconfig/ipvsadm #保存已修改的分配策略

[root@localhost ~]# systemctl start ipvsadm.service #啟動服務

二、配置節點01服務器

1、配置虛擬IP地址

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0

添加以下參數:

DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
BROADCAST=192.168.100.100
ONBOOT=yes

[root@localhost network-scripts]# ifup lo:0
[root@localhost ~]# ifconfig lo:0
技術分享圖片

2、調整響應參數

[root@localhost ~]# vim /etc/sysctl.conf
#添加以下參數:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

解析:

arp_announce定義arp通告的限制級別:

0 #默認的,通常本地任意地址,配置在任意接口上的地址
1 #當本地地址有多個IP地址時,只通告跟本地IP直接連接的IP和MAC
2? #盡可能使用能夠匹配到ARP 請求的最佳地址。

arp_ignore在響應arp請求的時候,使用的不同的模型:

0? #無論從哪個接口上進來的,只要目標地址是本機任意地址,都給予響應
1? #如果目標地址跟請求進來的接口在同一處,就給予響應
2 #只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內?

[root@localhost ~]# sysctl -p #重新讀取配置文件

3、配置Web服務

[root@localhost ~]# yum -y install httpd #安裝Web服務
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf #修改主配置文件

編輯以下參數:

ServerName www.bt.com:80
Listen 80

[root@localhost ~]# systemctl start httpd.service #啟動服務
[root@localhost ~]# cd /var/www/html/ #進入站點目錄
[root@localhost html]# echo "this is Release Server01 AAAAAAAAAA" > index.html #編輯默認首頁

三、配置節點02服務器

1、配置虛擬IP地址

配置與02服務器相同。略……

2、調整響應參數

配置與02服務器相同。略……

3、配置Web服務

[root@localhost ~]# yum -y install httpd #安裝Web服務
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf #修改主配置文件

編輯以下參數:

ServerName www.cloud.com:80
Listen 80

[root@localhost ~]# systemctl start httpd.service #啟動服務
[root@localhost ~]# cd /var/www/html/ #進入站點目錄
[root@localhost html]# echo "this is Release Server02 BBBBBBBBBB" > index.html #編輯默認首頁

四、測試群集

技術分享圖片

超詳細LVS負載均衡群集-DR模式