通過隧道實現虛擬伺服器(VS/TUN)和通過網路地址轉換實現虛擬伺服器(VS/NAT)
一 通過隧道實現虛擬伺服器(VS/TUN):
排程器把請求報文通過IP隧道(相當於ipip或ipsec)轉發至真實伺服器,而真實伺服器將響應處理後直接返回給客戶,這種排程器只處理請求的入站報文,一般網路服務應答資料比請求報文大很多,採用VS/TUN技術後,集群系統的最大吞吐量可以提高10倍。
VS/TUN的體系結構:
通過隧道搭建虛擬伺服器的實現:
1.使用指令modprobe ipip在server1、server2和server3端建立管道tunl0,ip link set up dev tunl0開啟管道裝置。server2和server3作為真實主機,安裝httpd服務並在預設釋出目錄下建立index.html檔案寫入內容用來進行負載均衡的結果測試。
2. ip addr add 172.25.254.100/24 dev tunl0在三臺主機的tunl0管道裝置新增ip172.25.254.100:
3. server2和server3兩臺主機作為真實主機RS,在這兩臺主機端新增arotables策略, /etc/init.d/arptables_jf save儲存策略:
server2端:
server3端:
4. 在三臺伺服器端設定net.ipv4.conf.tunl0.rp_filter為0:
關於rp_filter,這是一個核心引數。如果說rp_filter被啟用,則伺服器在某個介面上接收到了某個資料包,則目的地址為該資料包源地址的返回包必須通過同樣的介面傳送出去,也就是用於返回資料包的路由項的出口介面如果和該介面不一致,則返回的資料包就直接被核心丟棄。此處應該設定這個核心引數為0表示關閉。
5. 在server1這臺虛擬主機端新增ipvsadm策略:
6. 測試:
實現負載均衡:
二 通過網路地址實現虛擬伺服器
通過網路地址轉換將一組伺服器構成一個高效能的,高可用的虛擬伺服器(路由器用的就是NAT)
通過網路地址轉換,排程器LB重寫請求報文的目標地址,根據預設的排程演算法,將請求分派給後端的真實伺服器,真實伺服器的響應報文處理後必須通過排程器,通過排程器時,報文的源地址被重寫,再返回給客戶,完成整個負載排程過程。
VS/NAT的實現:
1. 在伺服器server1端新增兩塊網絡卡eth0和eth1,並配置eth0的ip為172.25.254.1,配置eth1的ip為192.168.17.1.eth0和eth1不在同一個網段。將server1作為虛擬主機VS。
2. 新增兩個虛擬機器server2和server3作為真實主機RS。兩個真實主機的ip分別為172.25.254.2和172.25.254.3。
將172.25.254.1即虛擬主機的ip作為serer2和server3主機的閘道器:
3. 在server2和server3兩個真實主機端安裝httpd服務並開啟,在httpd服務的預設釋出目錄新建index.html檔案,寫入不同的資訊用來測試負載均衡的訪問。之後重啟httpd服務。
4. 在server1端設定net.ipv4.ip_forward為1,來進行ip轉換和資料包的路由轉發。可以使用sysctl -w net.ipv4.ip_forward=1來臨時修改ip_forward值為1,或者編輯/etc/sysctl.conf檔案來永久修改ip_forward值。
5. 在server1端,新增ipvsadm策略:
ipvsadm -l檢視策略:
需要注意的時ipvsadm在新增策略後,不需要重啟服務,否則新增的策略會重新整理,也就是失效。
6. 測試:
在真機端解析192.168.17.1。(真機ip需要與192.168.17.1在同一個網段,或者一張網絡卡新增兩個ip,其中一個在192.168.17網段)
在server1端檢視到負載均衡的效果: