歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> Linux系統(五)負載均衡LVS集群之DR模式,lvsdr

Linux系統(五)負載均衡LVS集群之DR模式,lvsdr

日期:2017/3/3 17:21:29   编辑:學習Linux

Linux系統(五)負載均衡LVS集群之DR模式,lvsdr


熱度5 評論 85 www.BkJia.Com 網友分享於: 2017-02-28 04:02:34 浏覽數17568次

Linux系統(五)負載均衡LVS集群之DR模式,lvsdr


序言

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地址)技術,所有服務器都必須在同一個物力網段中。

LVS/DR模式搭建詳細演練

首先我先上我的整體搭建機器的架構圖上來,以便更直觀的搭建與理解。

首先配置分發器這台機器,操作很簡單,跟著做就可以啦。

  • 添加eth0:1網絡接口
[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
  • 編輯由拷貝而來的ifcfg-eth0:1,需要注意的是必須把mac地址與eth0的保持一致。
[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"    
  • 配置ipvsadm負載算法,如果你不知道ipvsadm是什麼,請看我的博客:Linux系統(四)LVS集群負載均衡NAT模式 裡面有對他的詳細介紹。
[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
  • 配置復制而來的回環接口配置文件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
  • 這樣一來,我們從圖中可以看到有3個ip地址都為172.18.8.6,那麼你在客戶端輸入172.18.8.6:80來訪問web服務器的時候,那台機器響應呢?這裡就需要以下2個配置,使訪問172.18.8.6這個ip的請求只在分發器這台機器上處理。這兩個配置在稍後會做講解。
[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
  • 開啟web服務器,我這裡用的是nginx作為web服務器使用演練。
[root@localhost network-scripts]# /usr/sbin/nginx
  • 另外一台Real Server如上操作一遍,即可。
  • 測試,切記測試萬萬不要在分發起上請求172.18.8.6,這裡是行不通的,你要去其他機器上測,我在如圖的150機器上測試效果如下。

直接聯通realserver,沒問題,如下。

訪問分發器ip,做到啦輪詢效果,如下。

理解arp_ignore與arp_announce參數詳細

arp響應限制arp_ignore:

  • 0 - (默認值): 回應任何網絡接口上對任何本地IP地址的arp查詢請求
  • 1 - 只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
  • 2 -只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內
  • 3 - 不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應
  • 4-7 - 保留未使用
  • 8 -不回應所有(本地地址)的arp查詢

arp響應限制arp_announce:對網絡接口上,本地IP地址的發出的,ARP回應,作出相應級別的限制: 確定不同程度的限制,宣布對來自本地源IP地址發出Arp請求的接口

  • 0 - (默認) 在任意網絡接口(eth0,eth1,lo)上的任何本地地址
  • 1 -盡量避免不在該網絡接口子網段的本地地址做出arp回應. 當發起ARP請求的源IP地址是被設置應該經由路由達到此網絡接口的時候很有用.此時會檢查來訪IP是否為所有接口上的子網段內ip之一.如果改來訪IP不屬於各個網絡接口上的子網段內,那麼將采用級別2的方式來進行處理.
  • 2 - 對查詢目標使用最適當的本地地址.在此模式下將忽略這個IP數據包的源地址並嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標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

Copyright © Linux教程網 All Rights Reserved