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的網關不能指向DIP,RIPDIP通常應在同一網絡,但此二者未必會與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,DIP,VIP全得是公網地址;

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

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

4)不支持端口映射;

5RSOS必須支持隧道功能;

二、調度方法

2.1、靜態調度方法

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

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

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

2.1.4DH:當調度服務器后端為緩存服務器時,緩存服務器緩存著不同網站的內容,當有客戶端請求到來時,查詢客戶端請求的地址,如果緩存服務器中有需要的緩存內容,那么不管客戶端是誰,都調度到那個緩存服務器上,如果沒有匹配到內容,則根據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
下一篇 2016-10-30

相關推薦

  • 8-4 作業

    1.用正則表達式表示IP地址 2.用正則表達式表示手機號11 13 17 15  18 3.用正則表達式表示身份證號18   4.用正則表達式表示郵箱  

    Linux干貨 2016-08-08
  • keepalived實現高可用LVS

    前言 vrrp介紹:  vrrp(Virtual Router Redundancy Protocol)虛擬路由冗余協議;就是把多個路由器或多個網關設備加入到組中,然后在這一組中虛擬出一個路由器,此虛擬路由器有真是的IP和MAC地址,客戶端將網關指向此虛擬路由器的IP;客戶端向此虛擬路由器的IP和MAC地址發起請求時,由活動路由器負責響應;當活動路…

    Linux干貨 2015-07-23
  • dns主從

    一、前言 Dns全稱domain name system,當我們訪問一個網站時,在網站輸入一個網址。但是網絡是靠ip地址這個邏輯地址來標識地址的。而一個網址是如何轉換為ip地址的?下面我們將簡單講解下dns的原理。 二、dns查詢過程 在了解dns查詢過程時,我們先了解一些有關dns的專業名詞     根域:用來管理互…

    Linux干貨 2015-10-01
  • 流式傳輸的兩大主流種類及流式傳輸特點

     流式傳輸定義很廣泛,現在主要指通過網絡傳送媒體(如視頻、音頻)的技術總稱。其特定含義為通過Internet 將影視節目傳送到PC機。實現流式傳輸有兩種方法:實時流式傳輸(Realtime streaming)和順序流式傳輸(progressive streaming)。(百度百科)     在網絡上傳輸音/視頻(英文…

    Linux干貨 2015-04-10
  • 網絡班22期+第二周作業練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示? Linux上文件管理類命令常用的有:pwd、ls、cd、cp、touch、mv、rm、rmdir 1)pwd:顯示當前工作目錄 2)ls:列出指定目錄下的內容 常用的選項有: -a:列出目錄中的所有文件,包括隱藏文件 -A:顯示除.和..之外的所有文件 -l,相當于–long,顯示…

    Linux干貨 2016-08-29
  • 第十八周作業

    1、為LNMP架構添加memcached支持,并完成對緩存效果的測試報告; 環境準備: 1)LNMP(php-fpm)環境已搭建完畢 2)Wordpress已部署完成 1.在memcache服務器上安裝memcached包并啟動服務 ]# yum install memcached -y ]# systemctl start memcached.servic…

    2017-06-22
欧美性久久久久