DR模式是lvs集群中三種負載均衡模式的其中一種,那麼上一篇中我寫啦關於NAT模式的搭建與原理,為什麼還要有DR模式與IP隧道模式呢?
首先我們來看3張圖。LVS/NAT模式如下圖:
LVS/IP隧道模式,如下圖:
LVS/DR模式,如下圖。
上面三張圖來自:http://www.linuxvirtualserver.org/zh/lvs3.html ,此文也正式是官方詳細描述LVS集群中實現的三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR)的工作原理,以及它們的優缺點的文章,推薦大家要詳細看看。
這裡我簡述總結下他們的路由方式以及做一個區別:
VS/NAT模式:客戶機-->請求分發服務器-->Real Server-->請求分發服務器--->客戶機。
VS/DR模式:客戶機-->請求分發服務器-->Real Server-->客戶機。
VS/TUN模式:客戶機-->請求分發服務器-->Real Server-->客戶機。
由此可以看出,NAT模式的請求分發服務器會成為這個模式的瓶頸所在,因為所有請求與響應走要經過他轉發。那麼IP隧道模式與DR模式的區別在於,DR模式與IP隧道模式相比,DR模式沒有IP封裝的開銷,但由於采用物理層(修改MAC地址)技術,所有服務器都必須在同一個物力網段中。
首先我先上我的整體搭建機器的架構圖上來,以便更直觀的搭建與理解。
首先配置分發器這台機器,操作很簡單,跟著做就可以啦。
[root@localhost network-scripts]# ifconfig eth0:1 172.18.8.6 netmask 255.255.255.255 --此接口只是臨時生效,下面需要配置的是永久生效 [root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1
[root@localhost network-scripts]# cat ifcfg-eth0:1 TYPE="Ethernet" BOOTPROTO="static" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" NAME="eth0:1" DEVICE="eth0:1" ONBOOT="yes" IPADDR="172.18.8.6" NETMASK="225.225.225.0" HWADDR="00:0c:29:af:ff:3a"
[root@localhost network-scripts]# ipvsadm -A -t 172.18.8.6:80 -s rr [root@localhost network-scripts]# ipvsadm -a -t 172.18.8.6:80 -r 172.18.8.5 -g [root@localhost network-scripts]# ipvsadm -a -t 172.18.8.6:80 -r 172.18.8.4 -g
到此,分發器這台機器就配置完成啦。
然後配置Real Server
[root@localhost ~]# ifconfig lo:1 172.18.8.6 netmask 255.255.255.255 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:1
[root@localhost network-scripts]# cat ifcfg-lo:1 CE=lo:1 IPADDR=272.18.8.6 NETMASK=255.255.255.255 # If you're having problems with gated making 127.0.0.0/8 a martian, # # you can change this to something else (255.255.255.255, for example) ONBOOT=yes NAME=loopback
[root@localhost network-scripts]# echo "1">"/proc/sys/net/ipv4/conf/eno16777736/arp_ignore" [root@localhost network-scripts]# echo "2">"/proc/sys/net/ipv4/conf/eno16777736/arp_announce" [root@localhost network-scripts]# cat /etc/sysctl.conf # System default settings live in /usr/lib/sysctl.d/00-system.conf. # To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file # # For more information, see sysctl.conf(5) and sysctl.d(5). net.ipv4.conf.eno16777736.arp_ignore=1 net.ipv4.conf.eno16777736.arp_announce=2
[root@localhost network-scripts]# /usr/sbin/nginx
直接聯通realserver,沒問題,如下。
訪問分發器ip,做到啦輪詢效果,如下。
arp響應限制arp_ignore:
arp響應限制arp_announce:對網絡接口上,本地IP地址的發出的,ARP回應,作出相應級別的限制: 確定不同程度的限制,宣布對來自本地源IP地址發出Arp請求的接口
在dr模式中我們的realserver配置arp_ignore為1:意思是不是eno16777736所在ip的請求,我不與應答。arp_announce為2:意思是我不對外公布我有出來eno16777736所在ip之外的任何ip,避免主動宣告ip使arp廣播包發送過來,做出應答。
接下來是大家最喜歡的總結內容啦,內容有二,如下:
1、希望能關注我其他的文章。
2、博客裡面有沒有很清楚的說明白,或者你有更好的方式,那麼歡迎加入左上方的2個交流群,我們一起學習探討。
http://www.bkjia.com/Linuxjc/1196039.htmlwww.bkjia.comtruehttp://www.bkjia.com/Linuxjc/1196039.html