一、理論概念
DR模式是將ARP請求通過director將報文源和目標MAC地址,發送給RS(real server),RS將響應報文直接發送給client。LVS是
Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集羣系統,
有兩個模塊
•ipvs : 嵌入到linux的內核
•ipvsadm:管理應用程序,需要安裝
二、環境搭建
1.準備了三臺虛擬機。
LVS服務器(DS) --eleven-2 | DIP:192.168.40.33 | VIP:192.168.40.100 |
真實後端服務器(RS)--eleven-3 | RIP:192.168.40.34 | VIP:192.168.40.100 |
真實後端服務器(RS)--eleven-4 | RIP:192.168.40.35 | VIP:192.168.40.100 |
2.LVS服務器配置(eleven-2),依次執行。
1.安裝ipvsadm
# 驗證,確保內核加載了lvs模塊
lsmod |grep ip_vs
# 安裝用戶管理工具
yum install -y ipvsadm
2.配置VIP
所有請求報文會發往LVS服務器(DS),然後DS根據指定算法分發到後端服務器(RS)上,因此DS必須配置VIP地址,VIP是與公網client的通信地址,這樣DS才能接受到請求報文進行分發。
# 在LVS服務器上添加一個地址爲VIP的虛擬網卡eth0:0
命令:ifconfig eth0:0 192.168.40.100 netmask 255.255.255.0
3.配置允許數據包轉發,因爲此時的lvs服務器充當着中間件的角色,接收的請求都會轉發至RS
#配置/proc/sys/net/ipv4/ip_forward,該文件內容爲0,表示禁止數據包轉發,1表示允許,將其修改爲1
echo “1” > /proc/sys/net/ipv4/ip_forward
3.後端服務器配置
1.配置RS的響應級別和通告級別。(每臺RS都要配置)
DR模式只是針對源和目標MAC地址做出修改,源和目標IP還是不變;當請求報文由LVS服務器處理後發送到後端服務器RS上,RS拆封報文時會發現目標MAC是自己的MAC地址,但是目標IP是VIP,與本地IP地址不符合,那麼RS就會認爲不是發給自己的報文,所以此時需要在RS上配置VIP,這樣RS就可以接受目標地址爲VIP的請求報文了。
如果將VIP設置在RS的網卡上,假設有多臺RS並且每臺RS上都配置了VIP,在這個網絡中發出VIP的ARP請求,就有多個RS響應,這樣肯定是不可以;因此就把VIP配置到迴環地址lo網卡上,然後讓lo網卡忽略所有ARP請求,eth0網卡正常響應ARP請求,這樣網絡中就不會收到RS關於VIP的響應;還有一個問題就是當本地網卡響應ARP請求時,也有可能通過lo網卡迴應,然後把VIP作爲ARP請求的源IP通告出去,那麼就必須禁止VIP作爲ARP請求的源IP,這個問題可以通過修改arp_announce參數解決。
由於客戶端發起的請求報文源IP爲CIP,目標IP爲VIP;所以客戶端收到的響應報文源IP必須爲VIP,目標IP必須爲CIP,因此在RS發送的響應報文必須由VIP的lo網卡發出,這就需要在RS上指定一條路由,目標IP爲VIP的數據包使用lo網卡發出,然後經由eth0轉發到網關再到公網客戶端。
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2.配置RS的VIP(每一臺RS都配),注意要先完成上一步驟,避免配置好了RS的vip後被通告出去
# 添加IP地址爲VIP的虛擬網卡lo:8
ifconfig lo:8 192.168.40.100 netmask 255.255.255.255
4.配置負載ipvs規則
1.管理集羣服務
ipvsadm -[A/E/D] -[t|u|f] IP:port -s 規則
-A:新增
-E:修改
-D:刪除
-C:清空ipvs規則
-S:保存規則至某路徑,供下次用時加載。
# ipvsadm -S > /path/to/somefile
-R:加載保存的規則
# ipvsadm -R < /path/form/somefile
-t:TCP協議的集羣
-u:UDP協議的集羣
-f:防火牆標誌
-s: 生命負載分發的算法
rr:輪詢算法
2.管理集羣服務中的RS
規則:ipvsadm -[a/d/e] -[t/u] LVS服務IP:端口 -r RS的IP:端口 -g
-a:新增RS
-d:刪除RS
-e:修改RS
-r:配置RS
-g:配置權重,默認爲1
3.實操:
添加集羣服務
ipvsadm -A -t 192.168.40.100:80 -s rr
添加負載的RS服務
ipvsadm -a -t 192.168.40.100:80 -r 192.168.40.34 –g
ipvsadm -a -t 192.168.40.100:80 -r 192.168.40.35 –g
4.測試
兩臺RS上安裝httpd,新建index文件
yum install httpd -y
進入到此文件夾
/var/www/html
新建文件index.html
vi index.html
輸入內容
from 34:80/35:80
重啓httpd服務
service httpd start
客戶端瀏覽器請求測試
http://192.168.40.100:80