LVS負載羣集實驗篇

 

上次提到,LVS(linux虛擬服務)負載羣集有三種模式,NAT模式 IP隧道模式,DR模式。這次就分析一下LVS的NAT模式和DR模式,因爲IP隧道模式不是很常用,也比較麻煩。

NAT模式

環境:

NAT模式 負載調度器既是客戶端訪問服務的唯一入口,也是服務器池中各節點響應客戶端的出口所以要啓用ip轉發功能以及vs_ip模塊 流量的進出轉發不能有阻礙,防火牆要配置。服務器池中就構建web服務了 各個節點要訪問統一的網頁文件(NFS發佈共享)

wps_clip_image-1400

清理一下思路:

調度器收到客戶端的請求後,目標ip是VIP 根據DNAT和ipvsadm策略,把數據包重寫地址,發到服務器中的某一節點服務器。節點服務器回覆給調度器,調度器在更具策略更改數據包地址響應給客戶端。 所以 數據的進出都要經過調度器。

---負載調度器配置:

加載vs_ip模塊並添加到啓動模塊

modprobe  ip_vs

wps_clip_image-25742

---開啓ip轉發功能 vim /etc/sysctl.conf

把“net.ipv4.ip_forward = 0 ”的值給成1  啓用轉發

wps_clip_image-24476

重啓系統或者執行 命令 sysctl -p 生效

wps_clip_image-23342

配置防火牆 允許80的入站 和轉發

wps_clip_image-16695

安裝LVS管理工具ipvsadm

rpm -ivh ipvsadm-1.25-9.el6.i686.rpm

wps_clip_image-26640

ipvsadm 工具的使用

-A 表示添加虛擬服務器 (這裏我就把VIP配置成調度器的外部接口12.12.12.1了)

-t 指定vip(虛擬ip)的地址和端口

-s 指定算法  輪詢(rr),加權輪詢(wrr),最少鏈接(lc),加權最少鏈接(wlc)這是四種最常用的

-p 指定保持時間s

-a 表示添加真實服務器 (服務器池中的節點)

-r 指定RIP(真實ip)的地址和端口

-m 工作模式是NAT

-g 工作模式DR

-i 工作模式 RUN

-w 配置權重 默認值是1 爲0 時表示暫停

創建條目

ipvsadm -A -t 12.12.12.1:80 -s rr

ipvsadm -a -t 12.12.12.1:80 -r 192.168.1.1:80 -m

ipvsadm -a -t 12.12.12.1:80 -r 192.168.1.2:80 -m

保存 service ipvsadm save

wps_clip_image-32540

查看 ipvsadm -L 或 ipvsadm -l

wps_clip_image-5091

查看負載鏈接情況  ipvsadm -lcn   或 -ln   現在爲空

wps_clip_image-4544

負載調度器完成

---NFS共享服務器(RHEL6)

NFS服務依賴於RPC機制,已完成本地的映射過程  所以要安裝nfs-utils 用於發佈共享和訪問 rpcbind用於RPC的支持

rpm -ivh rpcbind-0.2.0-8.el6.i686.rpm

rpm -ivh nfs-utils-lib-1.1.5-1.el6.i686.rpm

rpm -ivh nfs-utils-1.2.2-7.el6.i686.rpm

wps_clip_image-17854

配置共享空間

wps_clip_image-14958

編輯NFS的配置文件 /etc/exports 默認爲空 需要手動添加

/wwwroot/       192.168.1.0/24(rw,sync,no_root_squash)

wps_clip_image-7700

其中客戶機部分可以是主機名 ip地址 網段地址允許用* ? 通配符表示

括號裏的rw 表示讀寫 sync 表示同步寫入 root_squash 表示當客戶及以root身份訪問時賦予本地root權限 (默認是root_quash) 加上no_ 表示將作爲nfsnobody的身份對待 ro表示只讀權限(可以爲不同的主機配置不同的權限)

啓動服務 注意:rhel5系統中RPC服務腳本是portmap而rhel6系統中RPC服務腳本是rpcbind

wps_clip_image-4853

NFS服務端口較多,且不固定 所以建議關掉防火牆

---服務器節點配置

啓動web服務

wps_clip_image-26122

防火牆配置 允許80

wps_clip_image-25617

掛載共享存儲

wps_clip_image-7896

寫到/etc/fstab 文件中實現自動掛載

echo "192.168.1.10:/wwwroot/      /var/www/html     nfs  defaults,_netdev      0  0" >> /etc/fstab

wps_clip_image-16352

查看

wps_clip_image-22748

兩臺做相同的配置

然後創建 網頁文件 做測試

wps_clip_image-2329

客戶端訪問12.12.12.1做測試

wps_clip_image-30848

負載調度器查看  ipvsadm   -lvn

wps_clip_image-5346

可以看出 調度器把來自12.12.12.2的請求分別交給過192.168.1.1和192.168.1.2兩臺服務器處理  

wps_clip_image-32554

Forward 下面是 Masq 表示 NAT 工作模式  如果是Router 表示DR

DR模式

DR模式中,Lvs不在是服務器池中各節點的出口,他們通過自己的路由迴應客戶端。LVS扮演的角色只是整個羣集的入口。從性能上說,是減少了LVS調度器的負擔,但是整個羣集的安全性相比NAT工作模式下略有不足,但是“安全”一詞只能是說沒有絕對,無論是哪種方,還得衝其他方面綜合考慮。

環境:

這次沒有搭建NFS網絡共享(根據需求而定)

負載調度器 :15.15.15.1  

Webserver 1 :15.15.15.2 

Webserver2  :15.15.15.3

羣集ip (vip):15.15.15.10 

客戶端 : 15.15.15.100 

wps_clip_image-17528

DR模式說了,LVS的功能有所改變,他不再做NAT轉換了,他怎麼監聽客戶端的請求?收到請求之後如何讓服務器池中的各個節點知道(畢竟他們才提供響應的服務)?整個羣集是有一個VIP(虛擬ip),就算節點服務器知道有請求,那麼請求包中的目標地址也是vip的,怎麼以VIP迴應客戶端?多臺節點都要回應客戶端,所以ARP是否衝突?

①負載調度器如何監聽客戶端的請求?

整個羣集還是有一個VIP,他負責監聽客戶端的請求。單獨做LVS-DR 的時候,他要建立在物理接口上面,也就是我們說的虛擬接口。

②怎麼通知服務器池中的節點?

通過ipvsadm 設置的規則 NAT模式中已經介紹了

③通常客戶端是不會接受自己沒有請求過的數據包(tcp三次握手),所以節點服務器不經過LVS調度服務器響應客戶端的話就得 以vip的源地址數據包迴應客戶端

④問題三中,響應客戶端的節點服務器不止一臺。ARP中 已知vip 15.15.15.10 他的MAC 地址是多少,會有N多的答案 造成數據傳輸混亂。所以要更改系統參數,不讓他響應ARP和宣告ARP。

有點亂? 我也有點亂,咱再重新過一遍

第一階段

調度器收到客戶端的請求,目標地址是VIP 15.15.15.10 的80端口。而自己沒有80服務,在根據ipvsadm創建的策略,要把客戶端的請求轉發給服務器池中的某個節點,具體是哪個?根據ipvsadm策略。

第二階段

轉發的數據包中,不管源ip地址是誰?(物理ip地址也好,建立在物理網卡上的虛擬ip也好-VIP)他的二層封裝 都是一個MAC地址,這個包表達的意思就是客戶端要訪問羣集ip的80端口,你看着辦。(另外,還有資料說,這個包只是一個二層的包)

第三階段 (下面詳細說)

服務器池中的某個節點一看,目標是VIP 根據添加的路由條目,把包直接給自己的lo:0 接口 而Apache默認是監聽自己的所有網卡,正中下懷。因爲收到的是一個客戶端訪問VIP:80的請求包所以構建響應包的時候就是VIP到客戶端的了,通過自己的網絡參數配置,響應客戶端了,並沒有經過調度器。

下面有一步步實現

負載調度器:

加載 ip_vs 模塊  安裝ipvsadm包 

創建虛擬接口 

wps_clip_image-24779

修改參數爲

wps_clip_image-7437

重啓網卡服務後

wps_clip_image-29385

調整系統參數

對於DR羣集模式來說,由於LVS負載調度器和各節點需要共用VIP地址,爲了避免網絡內的ARP解析出現異常,應該關閉linux內核的ICMP重定向參數響應。

注:ICMP重定向報文是ICMP控制報文中的一種。在特定的情況下,當路由器檢測到一臺機器使用非優化路由的時候,它會向該主機發送一個ICMP重定向報文,請求主機改變路由。此類報文有可能用以***,所以系統應該拒絕接受ICMP重定向。

編輯 /etc/sysctl.conf  添加

wps_clip_image-22397

上圖中參數的含義是發送重定向,0表示關閉此項功能。此處修改是爲了安全考慮關閉重定向功能。如果具有 eth1、eth2 等多個接口,必須對所有接口執行該操作

命令 sysctl -p  修改生效

添加 ipvsadm 規則

wps_clip_image-10073

其他方面 注意防火牆的配置 參考NAT

節點服務器:

開啓httpd   防火牆策略

最主要的是添加網卡 lo:0

ifcf-lo:0的配置   注意子網掩碼是四個255 表示地址只有一個

wps_clip_image-28366

重啓網卡服務後

wps_clip_image-8323

添加路由

  route add -host 15.15.15.10 dev lo:0

wps_clip_image-11162查看

wps_clip_image-16482

調整參數  禁止ARP響應和宣告

編輯/etc/sysctl.conf 文件

wps_clip_image-23503

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_ignore = 1

arp_ignore:定義了網卡在響應外部ARP請求時候的響應級別0:默認值,不管哪塊網卡接收到了ARP請求,只要發現本機有這個MAC都給與響應1:總是使用最合適的網卡來響應,一個主機有多塊網卡,其中一塊網卡接收到了ARP請求,發現所請求的MAC是本機另一塊網卡的,這個時候接收到ARP請求的這塊網卡就一定不響應,只有發現請求的MAC是自己的纔給與響應。

net.ipv4.conf.default.arp_announce =2

net.ipv4.conf.all.arp_announce =2

net.ipv4.conf.lo.arp_announce = 2

定義了網卡在向外宣告自己的MAC-IP時候的限制級別有三個值:0:默認值,不管哪塊網卡接收到了ARP請求,只要發現本機有這個MAC都給與響應1:儘量避免響應ARP請求中MAC不是本網卡的,一個主機有多塊網卡,其中一塊網卡接收到了ARP請求,發現所請求的MAC是本機另一塊網卡的,這個時候接收到ARP請求的這塊網卡就儘量避免響應2:總是使用最合適的網卡來響應,一個主機有多塊網卡,其中一塊網卡接收到了ARP請求,發現所請求的MAC是本機另一塊網卡的,這個時候接收到ARP請求的這塊網卡就一定不響應,只有發現請求的MAC是自己的纔給與響應。

命令sysctl  -p使修改生效

測試

wps_clip_image-18537

刷新後

wps_clip_image-8554

沒有配置NFS網絡存儲  所以建了兩個內容不一樣的文件

wps_clip_image-26536

END

Ps: 有錯的地方還請諒解。就到這吧 關於高可用性和ip隧道  有時間再寫吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章