lvs負載均衡羣集配置

一. lvs簡介:

     LVS 是linux virtual server 的簡寫,即linux的虛擬服務器,是一個虛擬的服務器集羣系統。ip負載均衡技術是在負載調度器的實現技術中效率最高的,在已有的ip負載均衡技術中,主要通過網絡地址轉換(即VS/NAT 技術)、由於使用nat技術會使分派器成爲瓶頸,所以提出了通過ip隧道實現虛擬服務器(即VS/TUN)和通過直接路由實現虛擬服務器的方法即VS/DR。 VS/NAT、VS/TUN和VS/DR技術是LVS集羣中實現的三種IP負載均衡技術。
LVS採用ip負載均衡技術和基於內容的請求分發技術。調度器具有很好的吞吐率,將請求均衡的轉移到不同的服務器上執行,且調度器自動屏蔽故障的服務器,從而將一組服務器構成了一個高性能、高可用的虛擬服務器 。整個服務器對客戶完全透明,而且無需修改客戶端和服務器端的程序,所以有透明性、可伸縮性、高可用性和易管理性優點。

採用三層結構:

A:負載調度器director

    它是整個集羣對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認爲服務是來自一個IP地址(我們可稱之爲虛擬IP地址)上的。

B:服務器池

    是一組真正執行客戶請求的服務器,執行的服務有WEB、MAIL、FTP和DNS等。

C:共享的存儲

    它爲服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容,提供相同的服務。

NAT模型:

    如圖所示:外網用戶直接訪問Director上的VIP地址,在Director 上做DNAT,將請求分派給給real server服務器中的其中一臺,請求可以是http、mail、dns或ftp。然後real server將請求結果通過Director的Dip發送給請求者。由於請求和回覆都要經過Director,容易使Director成爲瓶頸,最多可以有10個節點

wps_clip_image-31150

DR模型:

如下圖所,外網用戶直接訪問Director上的VIP地址,Director將請求分派給real server 進行處理,當realserver處理後不再經過Director,而是直接送至客戶端,繞開了Director,使Director不再成爲瓶頸。可以有大量的節點,最多可以有100個節點

wps_clip_image-25103

LVS調度算法:

     當Director收到請求後,需要將請求發送給Real server 進行處理,但是發送哪一臺服務器就要按照算法進行分派。

共有十總調度算法:

固定算法4個:按照設置的算法執行,不考慮現實狀況

RR:Round-robin 輪循調度算法

WRR:Weighted round-robin 加權的輪循調度算法,權值越大越優先

DH:Destination hashing 目標hash  同一個ip用戶的請求都發送給其中的一臺固定的realserver

SH:Source  hashing 來源hash  當director的前端同時連接有兩臺或多臺路由器或防火牆時,用戶通過通過其中一臺路由器(或防火牆)將請求發送給director,realserver處理完後將仍然從進入的路由器(或防火牆)的接口出去

動態算法:根據Director中的跟蹤表,查看每個服務器的active 和inactive 個數進行調整

LC:least-connection  :最小連接 查看每個節點的active 和inactive數量,根據active* 256+inactive,哪個結果小,就將請求發送給該服務器

WLC:weighted least-connection 加權的最小連接,計算方法:(active* 256+inactive)/權值。,哪個結果小,就將請求發送給該服務器

SED:最少的期望權值   只考慮active激活的連接,不考慮inactive連接。計算方法:(active+1)*256

NQ:永不排隊  若果某個節點未處於活動連接,就將下一個請求發送給該節點進行處理

LBLC:當director和服務器之間有squid或varnish緩存服務器時,需要在director上設置,使請求分別到兩臺緩存服務器上

LBLCR:在LBLC的基礎上,若其中一部分人不在訪問網站,則下面一臺緩存服務器將不會有頁面緩存,這時候該緩存服務器將會空閒下來。該算法使下面一臺緩存服務器自動複製上面一臺緩存服務器的網頁,用於提供緩存

二. 配置案例

案例一:

     如下圖所示,外網用戶直接訪問Director上的VIP地址1.1,使用網絡地址轉換(即VS/NAT 技術)director將請求分派給下面兩臺realserver ,分貝使用RR輪循調度算法和WRR加權輪循調度算法

拓撲圖:

image

1. 配置director

1)爲了方便安裝軟件包配置yum服務器

[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

image

2)配置網卡的地址192.168.2.1/24爲虛擬ip

image

3)配置網卡地址192.168.1.20/24爲dip

image

4)安裝ipvsadm工具

[root@localhost ~]# yum install ipvsadm –y

此時啓動ipvsadm將失敗,提示不存在文件/etc/sysconfig/ipvsadm

image

5)執行命令service ipvsadm save,將會生成/etc/sysconfig/ipvsadm文件,然後啓動將成功

[root@localhost ~]# service ipvsadm save

image

[root@localhost ~]# ll /etc/sysconfig/ipvsadm
-rw-r--r-- 1 root root 0 09-10 22:05 /etc/sysconfig/ipvsadm

6)打開linux的數據包轉發功能

[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# sysctl -p

image

7)定義服務。

-A:增加virtual  service ,即director的vip地址加端口號

-t :tcp   -s:算法 scheduler,rr爲輪循調度算法

[root@localhost ~]# ipvsadm -A -t 192.168.2.1:80 -s rr

8)添加服務器。

-a:添加realserver    -t:tcp   -r :realserver -m:masquerading即nat模式

[root@localhost ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.1.100 -m
[root@localhost ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.1.200 –m

9)使用命令ipvsadm -ln 來查看配置的規則

image

此時/etc/sysconfig/ipvsadm的內容如下

image

2. 配置兩臺web服務器

1)配置兩臺服務器的ip將網關指向Director的DIP地址192.168.1.20如下

image

image

2)配置兩臺web服務器的首頁

[root@localhost ~]# vim /var/www/html/index.html

image

[root@localhost ~]# vim /var/www/html/index.html

image

3)重啓兩臺服務器的httpd服務

4)192.168.2.0網段的一臺主機訪問vip如下

image

刷新一次將出現如下結果

image
 

5)更改調度算法爲wrr

# ipvsadm -E -t 192.168.2.1:80 -s wrr

# ipvsadm -e -t 192.168.2.1:80 -r 192.168.2.100 -m -w 15 將權重調整爲10

# ipvsadm -e -t 192.168.2.1:80 -r 192.168.2.200 -m -w 5   將權重調整爲5

6)保存規則

wps_clip_image-4589

13.再次訪問,將會出現三次次web1,一次web2站點,這是由於realserver1的權重是realserver2的3倍

案例二:

     如下圖所示,director上的網卡eth0:0上配置VIP地址,eth0上配置DIP地址,外網用戶通過交換機訪問到director的VIP,然後director通過DIP將請求發送至兩臺realserver :realserver1和realserver2 ,然後兩臺realserver 通過右側交換機到存儲服務器上查找網頁,在將結果直接通過左側的交換機返回給客戶機,繞開了director。

拓撲圖:

image

1)配置realserver1ip地址

image

image

2)配置realserver2ip地址

image

 

image

3)先修改arp_announce 和arp_ignore的值,然後在分別配置兩臺realserver的loopback 的vip,否則將會出現vip地址衝突

使用命令:sysctl -a |grep arp  查看arp_announce和arp_ignore的值

image

4)需要將arp_announce的值改爲2,將arp_ignore的值爲1,寫入文件/etc/sysctl.conf

image

image

5)配置realserver1的loopback0:0的ip地址,子網掩碼爲4個 255

image

6) 配置realserver2的loopback0:0的ip地址,子網掩碼爲4個 255,並重啓網絡服務

wps_clip_image-29271

在兩臺realserver上分別創建路由,即當director將請求發送至realserver上時,目的地址爲1.101,這時候realserver接收到請求並將到達ip爲1.101的請求交與網卡lo:0來處理

Realserver 1上:

wps_clip_image-29525

7)同理修改realserver2上的內核選項

image

8)在director上安裝ipvsadm服務

wps_clip_image-2178

9)聲明服務,添加服務器

# ipvsadm -A -t  192.168.1.101:80 -s rr

# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.200 -g

# ipvsadm -a -t 192.168.1.101:80 -r 192.168.1.201 -g

10)保存配置,啓動ipvsadm服務

wps_clip_image-18145

11) 分別在realserver1和realserver2上安裝httpd服務,並分別產生網頁內容分別爲“web1”  “web2”前面的案例已經做過

 

 

通過外網訪問,可以交替訪問到兩個網頁

 

wps_clip_image-17127

wps_clip_image-20048

12) 現在直接路由模型已經搭建完成,但是兩個網頁不能保持動態一致,可以使用nfs的開機自動掛載,將共同的頁面存放到一臺獨立的存儲服務器中,當訪問頁面時,自動讀取同一份網頁文件/abc/index.html

wps_clip_image-13694

#service nfs start

13) 編輯共享清單,將文件夾/abc 共享出來,允許192.168.2.0網段用戶訪問

# vim /etc/exports

wps_clip_image-29736

14)導出共享清單:  r:導出   v:詳細信息

wps_clip_image-27197

15)在realserver1上,修改文件系統表

wps_clip_image-1459

16)執行命令mount -a  ,然後查看是否掛載成功

wps_clip_image-15974

17)在realserver2上修改文件系統表,實現開機自動掛載

wps_clip_image-9849

18)執行命令mount -a  ,然後查看是否掛載成功

wps_clip_image-23911

19)通過訪問director的VIP,直接訪問到了放置在存儲器上的網頁文件

wps_clip_image-14874

20)自動掛載:

# vim /etc/auto.master

將共享文件掛載到/var/www下,當讀取index.html文件時,自動切換到html目錄下

wps_clip_image-29374

# vim /etc/auto.nfs1

wps_clip_image-8965

21)重啓autofs服務

wps_clip_image-28743

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