實驗介紹:LVS負載均衡DR工做模式 php
工做原理:linux
DR和REAL SERVER都是用同一個IP對外服務。但只有DR對ARP請求進行響應,全部REAL SERVER對自己這個IP的ARP請求保持靜默。也就是說,網關會把對這個服務IP的請求所有定向給DR,而DR收到數據包後根據調度算法,找出對應的REAL SERVER,把目的MAC地址改成REAL SERVER的MAC併發給這臺REAL SERVER。這時REAL SERVER收到這個數據包,則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端。因爲DR要對二層包頭進行改換,因此DR和REAL SERVER之間必須在一個廣播域,也能夠理解爲在同一臺交換機上。nginx
實驗開始算法
實驗工具:三臺虛擬主機( vs172.17.250.156 rs1 172.17.250.207 rs2 172.17.250.107)vim
實驗步驟服務器
注意防火牆和selinux的關閉網絡
1、 配置VIP到本地網卡別名併發
[root@lkbq ~]# yum install ipvsadm -y 安裝LVS管理軟件
[root@lkbq ~]# ifconfig eth0:0 172.17.250.165 broadcast 172.17.250.165 netmask 255.255.255.255 up 配置VIP到本地網卡eth0:0,並只廣播本身 [root@lkbq ~]# route add -host 172.17.250.165 dev eth0:0 配置VIP路由 [root@lkbq ~]# ipvsadm -A -t 172.17.250.165:80 -s wrr [root@lkbq ~]# ipvsadm -a -t 172.17.250.165:80 -r 172.17.250.107 -g -w 1 [root@lkbq ~]# ipvsadm -a -t 172.17.250.165:80 -r 172.17.250.207 -g -w 1
[root@lkbq ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1 開啓路由轉發
-A在服務器列表中新添加一條新的虛擬服務器記錄負載均衡
-t表示爲tcp服務tcp
-s使用的調度算法
-a在服務器表中添加一條新的真實主機記錄
-r真實服務器地址
-m指定LVS工做模式爲NAT模式
-g指定LVS工做模式爲直接路由模式(LVS默認的模式)
-w真實服務器的權值
2、RS操做
[root@kbq1 ~]# ifconfig lo:0 172.17.250.165 broadcast 172.17.250.165 netmask 255.255.255.255 up 配置VIP到本地迴環網卡lo上,並只廣播本身 [root@kbq1 ~]# route add -host 172.17.250.165 lo:0 配置本地迴環網卡路由 [root@kbq1 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 1只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求 [root@kbq1 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 2對查詢目標使用最適當的本地地址,在此模式下將忽略這個IP數據包的源地址並嘗試選擇與能與該地址通訊的本地地址 [root@kbq1 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 1僅在請求的目標IP配置在本地主機的接收到請求報文的接口上,纔給予迴應 [root@kbq1 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce 2必須避免將接口信息向非本網絡進行通告
[root@kbql ~]# systemctl start nginx php-fpm mariadb 開啓服務
3、測試效果以下
實驗完成,有什麼問題多多提問哦~~