lvs

Lvs

一、lvs集群的類型:4類工作模式

1.1、lvs-nat

lvs

特點:通過將請求報文中的目標地址和目標端口修改為挑選出的某RSRIPPORT實現轉發。

客戶端訪問lvs集群服務,此時報文的源地址為cip,目標地址為vip,通過lvs進行dnat轉發后端服務器主機,此時,報文的源地址為cip,目標地址為rip;后端主機響應時,報文源地址為rip,目標地址為cip,后端的各個真實主機,必須把網關指向lvs集群服務的dip;這樣,才能保證響應給lvs集群服務主機;響應報文到達lvs集群服務進行地址轉換,此時,源地址為vip,目標地址為cip,最終,響應給客戶端;其實,還支持端口映射,即可修改端口進行端口轉換;

lvs工作類型,由于使用nat,鏈接跟蹤機制不可避免的啟用;所以,并發數量是受限的;

注意:

1RIPDIP必須在同一IP網絡,且應該使用私有地址;RS的網關必須指向DIP

2)請求報文和響應報文都經由Director轉發,高負載下,vs易于成為系統性能瓶頸;

3)支持端口映射;后端真實主機盡量為同一端口;

4VS必須是Linux,RS可以是任意OS(操作系統);

 

1.1.1、設計要點:

                   (1) RIPDIP在同一IP網絡, RIP的網關要指向DIP

                   (2) 支持端口映射;

1.1.2、實驗環境:

RS11.1.1.2             RS2:1.1.1.3              DIP1.1.1.1

                   VIP10.1.72.20

——————-VS服務器———————————

[root@centos6 ~]# ipvsadm -A -t 10.1.72.20:80 -s rr

[root@centos6 ~]# ipvsadm -a -t 10.1.72.20:80 -r 1.1.1.2 -m

[root@centos6 ~]# ipvsadm -a -t 10.1.72.20:80 -r 1.1.1.3 -m

[root@centos6 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

[root@centos6 ~]# cat /proc/sys/net/ipv4/ip_forward

1

[root@centos6 ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.1.72.20:80 rr

  -> 1.1.1.2:80                   Masq    1      0          1        

  -> 1.1.1.3:80                   Masq    1      0          2

[root@centos6 ~]# ntpdate 10.1.0.1                //最好要同步時間

27 Oct 12:07:09 ntpdate[4088]: step time server 10.1.0.1 offset 41536.506821 sec

——————————-RS———————————

lvs

lvs

=====================使用sh調度算法==================

[root@centos6 ~]# ipvsadm -E -t 10.1.72.20:80 -s sh

[root@centos6 ~]# ipvsadm -e -t 10.1.72.20:80 -r 1.1.1.2 -m

[root@centos6 ~]# ipvsadm -e -t 10.1.72.20:80 -r 1.1.1.3 -m

[root@centos6 ~]# !curl

curl 10.1.72.20/index.html

this 1.1.1.3

[root@centos6 ~]# curl 10.1.72.20/index.html

this 1.1.1.3

[root@centos6 ~]# curl 10.1.72.20/index.html

this 1.1.1.3

 

===================使用wrr調度算法=====================

[root@centos6 ~]# ipvsadm -E -t 10.1.72.20:80 -s wrr

[root@centos6 ~]# ipvsadm -e -t 10.1.72.20:80 -r 1.1.1.2 -m -w 3

[root@centos6 ~]# ipvsadm -e -t 10.1.72.20:80 -r 1.1.1.3 -m -w 1

[root@centos6 ~]# curl 10.1.72.20/index.html

this is 1.1.1.2

[root@centos6 ~]# curl 10.1.72.20/index.html

this 1.1.1.3

[root@centos6 ~]# curl 10.1.72.20/index.html

this is 1.1.1.2

[root@centos6 ~]# curl 10.1.72.20/index.html

this is 1.1.1.2

[root@centos6 ~]# curl 10.1.72.20/index.html

this is 1.1.1.2

[root@centos6 ~]# curl 10.1.72.20/index.html

this 1.1.1.3

[root@centos6 ~]# curl 10.1.72.20/index.html

this is 1.1.1.2

[root@centos6 ~]# curl 10.1.72.20/index.html

this is 1.1.1.2

[root@centos6 ~]# curl 10.1.72.20/index.html

this is 1.1.1.2

[root@centos6 ~]# curl 10.1.72.20/index.html

this 1.1.1.3

 

1.1.3、利用防火墻標記配置lvs

借助于防火墻標記來分類報文,而后基于標記定義集群服務;可將多個不同的應用使用同一個集群服務進行調度;

[root@centos6 ~]# iptables -t mangle -A PREROUTING -d 1.1.1.1 -p tcp –dport 80 -j MARK –set-mark 1

[root@centos6 ~]# ipvsadm -A -f 1 -s rr

[root@centos6 ~]# ipvsadm -a -f 1 -r 1.1.1.2 -m

[root@centos6 ~]# ipvsadm -a -f 1 -r 1.1.1.3 -m

lvs

1.2、lvs-dr

lvs

通過修改請求報文的MAC地址,重新封裝一個MAC首部進行轉發;源MACDIP所在接口的MAC地址,目標MAC是挑選出的某RSRIP所在接口的MAC地址;IP首部不會發生變化(依然是CIP<–>VIP

lvs服務主機與后端服務器主機接在同一交換機上,且每個后端主機都配有vip,為了避免地址沖突,把各后端主機配置的vip進行隔離;隔離的方法有3種:

方法一:可使用arptables命令,專門控制進行arp廣播隔離;

方法二:在RS上修改內核參數以限制arp通告及應答級別;

                            arp_announce

                            arp_ignore

方法三:在前端lvs服務器上游的路由器上綁定lvsMAC地址與lvsvip地址;此方法,較為不便,一般路由器有運營商負責,且lvs服務器主機會有兩個,所以綁定MAC后,當一臺壞了時,另一臺則不能通過路由器與外界通信;

特點:

1)確保前端路由器將目標IPVIP的請求報文轉發往調度服務器;

2RSRIP可以使用私有地址,也可以使用公網地址;

3RSDirector必須在同一物理網絡(基于MAC地址轉發);RS的網關必須不能指向DIP;

4)請求報文必須由Directory調度,但響應報文必須不能經由Director;

5)不支持端口映射;

 

1.2.1、注意事項:

         dr模型中,各主機上均需要配置VIP,解決地址沖突,方法:

在各RS修改內核參數,來限制arp響應和通告的級別;

                   限制響應級別:arp_ignore

                            0:默認值,表示可使用本地任意接口上配置的任意地址進行響應;

                            1: 在請求的目標IP配置在本地主機的接收到請求報文接口上時,給予響應;

                   限制通告級別:arp_announce

                            0:默認值,把本機上的所有接口的所有信息向每個接口上的網絡進行通告;

                            1:盡量避免向非直接連接網絡進行通告;

                            2:必須避免向非本網絡通告;

設計要點:

1)各主機一個接口即可,但需要在同一物理網絡中;

2RIP的網關不能指向DIPRIPDIP通常應在同一網絡,但此二者未必會與VIP在同一網絡;

3)各RS需要先設置內核參數,再設置VIP和路由

1.2.2、實驗環境

VSVIP 10.1.72.21              DIP10.1.72.20

RS1VIP 10.1.72.21            RIP1 10.1.72.70

RS2VIP 10.1.72.21           RIP2 10.1.72.10

—————————–RS1—————————–

[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@localhost ~]# ifconfig lo:0 10.1.72.21 netmask 255.255.255.255 broadcast 10.1.72.21 up

[root@centos6 ~]# route add -host 10.1.72.21 dev lo

[root@localhost ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.1.72.21      0.0.0.0         255.255.255.255 UH    0      0        0 lo

10.1.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0

0.0.0.0         10.1.0.1        0.0.0.0         UG    0      0        0 eth0

—————————RS2——————————

[root@centos6 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@centos6 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@centos6 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@centos6 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@centos6 ~]# ip addr add 10.1.72.21/32 broadcast 10.1.72.21 dev lo:0

[root@centos6 ~]# route add -host 10.1.72.21 dev lo

———————–VS——————————-

[root@centos6 ~]#ip addr add 10.1.72.21/32 broadcast 10.1.72.21 dev eth0

(地址16位掩碼仍然可以成功) [root@centos6 ~]# ip addr add 10.1.72.21/16 dev eth0

[root@centos6 ~]# ipvsadm -A -t 10.1.72.21:80 -s rr

[root@centos6 ~]# ipvsadm -a -t 10.1.72.21:80 -r 10.1.72.10 -g

[root@centos6 ~]# ipvsadm -a -t 10.1.72.21:80 -r 10.1.72.70 –g

lvs

1.3、lvs-tun

lvs

轉發方式:

不修改請求報文的IP首部(源IPCIP,目標IPVIP),而是源IP首部之外再封裝一個IP首部(源IPDIP,目標IP為挑選出的RSRIP);

請求報文源IPcip,目標IPvip,到到達lvs服務進入INPUT鏈上,在整個ip報文外又加了一層ip首部,即IP報文傳輸IP報文所以叫IP隧道,此時外層源IPdip,目標IP為某一個被挑選出來遠端的rip,遠端的服務主機收到報文經過不斷拆包后,將響應報文發給客戶端,構建響應報文的源IPcip,目標IPcip

特點:

1RIP,DIPVIP全得是公網地址;

2RS網關不能指向也不可能指向DIP

3)請求報文經由Director轉發,但響應報文將直接發往CIP

4)不支持端口映射;

5RSOS必須支持隧道功能;

二、調度方法

2.1、靜態調度方法

         2.1.1、RR:輪詢,只考慮起點不考慮終點,一個一個交替向后發送

2.1.2WRR:加權輪詢,根據后端服務器性能,設置權重值,也就是可響應性能好的服務器,被選中的次數多;

2.1.3SH:根據客戶端請求的源地址調度,調度服務器中會有一個緩存表,當客戶端請求來時,查詢此表,如果與表中的ip一樣,那就選擇與上次分配的真是服務器相同的服務器,如果表中沒有匹配項,那么根據wrr的方式,來調度

2.1.4、DH:當調度服務器后端為緩存服務器時,緩存服務器緩存著不同網站的內容,當有客戶端請求到來時,查詢客戶端請求的地址,如果緩存服務器中有需要的緩存內容,那么不管客戶端是誰,都調度到那個緩存服務器上,如果沒有匹配到內容,則根據wrr調度算法,調度到后端,此時,這個調度服務器的表中會增加一條記錄

 

2.2、動態調度方法:根據后端每個RS服務器的負載狀態進行調度

         2.2.1、LC:最少連接算法, 活動x256+非活動計算的值小的被選中;

         2.2.2、WLC:加權最少連接算法,(活動連接*256+非活動連接)/權重 缺陷:權重小的服務器在前面,客戶端第一次請求時會始終先調度給前面的服務器,而不是性能好、權重大的服務器;

         2.2.3、SED:解決了WLC的缺陷,(活動連接+1*256/權重,使得權重大的結果一定會小于權重小的,這樣能保證權重大的先接受響應任務;缺陷:使得權重大的始終保持響應任務,而權重小的始終沒有任務;

         2.2.4NQ永不排隊,改進了sed,開始時,保證每個服務器都輪詢響應任務,之后再安裝sed的方法進行計算;

       2.2.5、LBLC(動態dh):基于本地的最少連接,其實就是動態的dh算法,做dh時會考慮后端服務器負載狀態,結果是有可能新請求被發往負載較小的服務器上,如果沒有任何匹配,使用WLC算法進行調度,但始終會影響負載均衡效果,因為dh算法就決定了,請求只要是同一目標地址就被綁定在一個RS上;

       2.2.6:LBLCR:被調度的多臺緩存服務器之間,可以復制部分內容,這樣,在后端緩存服務器極不平衡的的狀態下,通過復制部分內容來實現調度相對平衡的效果

三、配置命令格式

3.1、ipvsadm命令:

         ipvsadm -A|E -t|u|f service-address [-s scheduler]

         ipvsadm -D -t|u|f service-address

         ipvsadm -C

         ipvsadm -R

         ipvsadm -S [-n]

         ipvsadm -a|e -t|u|f service-address -r server-address [options]

         ipvsadm -d -t|u|f service-address -r server-address

         ipvsadm -L|l [options]

         ipvsadm -Z [-t|u|f service-address]

 

3.2、管理集群服務:增、改、刪;

         增、改:ipvsadm -A|E -t|u|f service-address [-s scheduler]

                   service-addressVIP

                   -t|u|f

                            -t: TCP協議的端口,VIP:TCP_PORT

                            -u: TCP協議的端口,VIP:UDP_PORT

                            -ffirewall MARK,是一個數字;

                                                       

                   [-s scheduler]:指定集群的調度算法,默認為wlc;

 

         刪:ipvsadm -D -t|u|f service-address

                                                                         

3.3、管理集群上的RS:增、改、刪;

         增、改:ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

刪:ipvsadm -d -t|u|f service-address -r server-address

                   server-address

                            rip[:port]

                   選項:

                            lvs類型:

                                     -g: gateway, dr類型

                                     -i: ipip, tun類型

                                     -m: masquerade, nat類型

                                                       

                                     -w weight:權重;

                           

         清空定義的所有內容:

                   ipvsadm -C

                           

3.4、查看:

         ipvsadm -L|l [options]

                   –numeric, -nnumeric output of addresses and ports

                   –exactexpand numbers (display exact values)

                   –connection, -coutput of current IPVS connections

                   –statsoutput of statistics information

                   –rate output of rate information

         保存和重載:

                   ipvsadm -S = ipvsadm-save

                   ipvsadm -R = ipvsadm-restore

 

 

 

 

 

 

 

原創文章,作者:landanhero,如若轉載,請注明出處:http://www.www58058.com/55023

(0)
landanherolandanhero
上一篇 2016-10-30 21:02
下一篇 2016-10-30 21:02

相關推薦

  • 初學正則表達式

      前言:     在學正則表達式之前,有小伙伴講解說,正則表達式在文本處理上功能非常強大、使用非常普遍,并且現在很多的工具軟件都支持它,以后的學習工作中會經常使用,非常靈活,但是靈活的同時又是繁瑣,需要小心翼翼的仔細推敲。抱著認真、好奇的心思聽完了王老的課。我自己理解的正則表達式是,給一些符號賦予一定的涵義…

    Linux干貨 2016-08-12
  • N26 第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 演示:     [root@47d523181d25 /]# cp -r /etc/skel/ /home/tuser1     [root@47d523…

    Linux干貨 2017-02-25
  • Linux 文本處理,文本工具,查看,分析,統計文本文件,grep,正則表達式

    文本處理 各種文本工具,查看,分析,統計文本文件 grep 正則表達式 擴展正則表達式 sed cat -n f1 加行號(空格行都計算) cat -b f1 加行號(只計算有字符的行) cat -ns f1 加行號(壓縮空行) cat -v f1 能看windows文件的M`符號 cat -T f1 能夠顯示里面的tab空位,顯示為^I cat -A f1…

    Linux干貨 2016-08-07
  • linux基礎入門之一

    一、計算機的組成與功能 計算機由硬件和軟件組成 硬件: 按馮·洛伊曼體系劃分 1、CPU:包括運算器、控制器、寄存器、緩存,對數據控制和計算 2、存儲器:內部存儲器、外部存儲器,對數據提供存儲功能 3、輸入設備:具有下指令,提供數據輸入 4、輸出設備:輸出數據加工的結果 軟件: 1、低級語言:匯編語…

    Linux干貨 2016-09-19
  • PS進程命令常用選項參數詳解

    PS命令是什么 ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一時間的進程狀態。如果想要不斷更新查看這個狀態,可以配合watch命令或使用top命令。ps命令支持三種使用的語法格式 UNIX 風格:選項可以組合在一起,并且選項前必須有”-“連字符。 BSD 風格 :選項可以組合在一起,但是選項前不能有”-&#822…

    2017-07-09
  • Infobright高性能數據倉庫

    1.  概述         Infobright是一款基于獨特的專利知識網格技術的列式數據庫。Infobright簡單易用,快速安裝部署,使用中無需復雜操作,能大幅度減少管理工作;在應對50TB甚至更多數據量進行多并發復雜查詢時,更能夠顯示出令人驚嘆的速度。相比于MySQL,其查詢速度提升了數倍甚…

    Linux干貨 2015-04-05
欧美性久久久久