返回頂部

熱點聚焦

LVS負載均衡集群服務搭建詳解

日期:2016-03-18 點擊:     關鍵詞:LVS負載均衡集群服務搭建詳解

2016-03-18

  LVS負載均衡集群服務搭建詳解

  一、LVS概述

  1.LVS:Linux Virtual Server

  四層交換(路由):根據請求報文的目標IP和目標PORT將其轉發至后端主機集群中的某臺服務器(根據調度算法);

  不能夠實現應用層的負載均衡

  lvs(又稱ipvs),基于內核中的防火墻netfilter實現

LVS負載均衡集群服務搭建詳解

  2.lvs集群術語:

  vs:Virtual Server

  虛擬服務,可稱為Director、Dispatcher分發器、Balancer負載均衡器

  rs:Real Server

  真實服務器

  CIP:Client IP

  客戶端IP

  VIP:Director Virtual IP

  等同于FIP(流動IP),負載均衡器虛擬IP

  DIP:Director IP

  調度IP(第二張網卡IP地址)

  RIP:Real Server IP

  真實服務器IP

  3.LVS:ipvsadm/ipvs

  (1)ipvsadm: CLI工具

  用戶空間的命令行工具,用于管理集群服務及集群服務上的RS等;# yum install -y ipvsadm

  (2)ipvs:內核存在(CentOS默認支持)

  工作于內核上的netfilterINPUT鉤子之上的程序代碼;其集群功能依賴于ipvsadm定義的集群服務器規則;

  支持基于TCP、UDP、SCTP、AH、EST、AH_EST等協議的眾多服務;

  4.負載均衡集群中設計時的要點:

  (1)session保持

  session sticky (iphash):IP地址綁定,來源IP記錄在ip hash表作統一調度

  session cluster(multicast/broadcast/unicast):廣播集群同步(復制)session,只適用于小規模場景

  session server ():session服務器

  (2)數據共享(提供一致性存儲)

  1) 共享存儲;

  NAS:Network Attached Storage (文件級別),網絡附加存儲,文件服務器

  SAN:Storage Area Network (塊級別),存儲區域網絡

  DS:Distributed Storage,分布式春初

  2) 數據同步:rsync… ...

  二、LVS模型

  1.lvs-nat:地址偽裝模型

  多目標的DNAT:通過將請求報文的目標地址和目標端口修改為挑選出某RS的RIP和PORT來實現;

  客戶端主機發起請求報文CIP指向VIP,通過內核的核心網卡間轉發功能,VIP會將請求交給DIP進行調度,DIP根據設定的算法進行負載均衡給后端的RS主機的RIP,在這個過程中DIP調度功能會將目標IP地址重寫為RIP。請求和返回請求讀要調度DIP來進行轉換操作。

  (1)RIP和DIP應該使用私網地址,RS的網狀應該指向DIP;

  (2)請求和響應報文都要經由director轉發;極高負載的場景中,Director可能會成為系統瓶頸(響應報文大);

  (3) 支持端口映射(轉發);

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

  (5)RS的RIP與Director的DIP必須在同一IP網絡;

  2.lvs-dr(direct routing直接路由):網關模型

  通過修改請求報文的MAC地址進行轉發;IP首部不會發生變化(源IP為CIP,目標IP始終為VIP)

  客戶端發起請求,經過層層路由到達離VS服務器最近的交換機,通過交換機轉發給VS服務器,由VS服務器負載均衡轉發請求給RS服務器。在此過程中VIP修改MAC地址調度請求給真實主機。在此過程中通過ARP協議在一個局域網中廣播尋找真實主機的MAC地址。每個RS真實主機的網卡會一個別名地址VIP,實現全過程源地址為CIP,目標地址為VIP不變。調度基于尋找MAC。網關模型中的所有主機均要能與外網通信。這樣RS主機就能夠直接響應客戶機。

  (1)確保前端路由器將目標IP為VIP的請求報文一定會發送給Director;

  解決方案:

  1)靜態綁定;

  2)禁止RS響應VIP的ARP請求;

  a) arptables上定義;

  b) 修改各RS的內核參數,并把VIP配置在特定的接口上實現禁止其響應;

  (2)RS的RIP可以使用私有地址,也可以使用公網地址;

  RIP使用私有地址可以通過在之前加一個路由器的方式和外網通信,直接響應客戶機

  (3)RS跟Director必須在同一物理網絡中;

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

  (5) 不支持端口映射;

  (6) 各RS可以使用大多數的操作系統;

  3.lvs-tun(ip tunneling):IP隧道模型

  轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而是在原有的IP首部這外再次封裝一個IP首部(源IP為DIP,目標IP為RIP);

  (1)RIP,DIP,VIP全得是公網地址;

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

  (3)請求報文經由Director調度,但響應報文將直接發給CIP;

  (4) 不支持端口映射;

  (5)RS的OS必須支持IP隧道功能;

  4.lvs-fullnat:完整模型(同時改變請求報文的源IP和目標IP)

  通過同時修改請求報文的源IP地址(cip-->dip)和目標IP地址(vip--> rip)實現轉發;

  注意:前三種為標準類型,第四種為后添加類型,內核默認可能不支持,需自編譯內核

  (1)VIP是公網地址;RIP和DIP是私網地址,且可以不在同一IP網絡中,但需要通過路由互相通信;

  (2)RS收到的請求報文的源IP為DIP,因此其響應報文將發送給DIP;

  (3)請求報文和響應報文都必須經由director;

  (4) 支持端口映射;

  (5) RS可使用任意OS;

  三、LVS scheduler調度算法

  1.靜態方法:僅根據算法本身進行調度

  (1)RR :round robin,輪詢機制,依次分配請求,方式簡單但時負載均衡的效果一般

  (2)WRR :weighted rr,加權輪詢,權重越大承擔負載越大

  (3)SH :source ip hash,源地址哈希,將來自同一個ip請求通過記錄在ip hsash表中綁定在同一個服務器,實現session保持

  缺點:調度粒度大,對負載均衡效果差;session黏性不同,連接時長保持不同

  (4)DH :desination ip hash,目標地址哈希。能實現連接追蹤,但不考慮負載均衡效果

  正向web代理,負載均衡內網用戶對互聯網的請求;

  Client--> Director --> Web Cache Server(正向代理)

  2.動態方法:根據算法及各RS當前的負載狀態進行評估

  Overhead

  負載值,VS轉發時記錄每個RS的Active和Inactive數量(甚至權重)進行算法計算

  Active

  活動鏈接值,當發起新請求后保持在ESTABLISHED狀態時,仍有請求響應

  Inactive

  非活動鏈接值,在ESTABLISHED狀態時,尚未斷開保持空閑等待狀態

  (1)LC:least connection,最少連接

  Overhead=Active*256+Inactive

  后端的RS誰的連接少就分發請求至那臺RS,若overhead一樣則自上而下輪詢列表中的RS

  (2)WLC:weighted least connection,加權最小連接

  Overhead=(Active*256+Inactive)/weight,計算結果小的將為選中的下一跳RS服務器

  缺點:當Overhead一樣時,自上而下輪詢響應,權重小的若在列表上方則其會響應

  (3)SED:Shortest Expection Delay,最短期望延遲

  Overhead=(Active+1)*256/weight

  缺點:解決WLC問題,但時無法確保權重小的主機一定響應

  (4)NQ:never Queue,永不排隊,SED算法改進

  RS權重大小排列,每臺RS服務器先分配一個請求,其余的按照權重大小計算分配

  (5)LBLC:Locality-Based LC,基于本地的最少連接,動態的 DH連接算法

  (6)LBLCR:LBLC with Replication,帶復制功能的LBLC

  四、ipvsadm命令

  1.管理集群服務:

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

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

  -A:添加、-E:修改、-D:刪除

  service-address

  服務地址和 -t|u|f 結合使用,具體格式如下

  -t, tcp, vip:port

  TCP的ip和port

  -u, udp, vip:port

  UDP的ip和port

  -f, fwm, MARK

  防火墻標記

  -s scheduler:默認為WLC調度算法,可省;

  -p [timeout] :超出時長,持久連接相關,默認時長為300秒

  2.管理集群服務上的RS:

  ipvsadm-a|e -t|u|f service-address -rserver-address [-g|i|m] [-w weight]

  ipvsadm -d-t|u|fservice-address -rserver-address

  -a:添加一個RS、-e:修改一個RS、-d:刪除一個RS

  server-address指的是rip[:port],端口可省表示與之前的service-address相同,只有nat模式支持端口映射才會使用

  [-g|i|m]

  -g:GATEWAY (默認),lvs-dr模型

  -i: IPIP, lvs-tun隧道模型

  -m: MASQUERADE,lvs-nat模型

  3.查看

  ipvsadm -L|l[options]

  -n:numeric,數字格式顯示地址和端口;

  -c:connection,顯示ipvs連接;

  --stats:顯示統計數據;

  --rate:速率

  --exact:精確值,不經過單位換算的數值

  4.清空規則:

  ipvsadm -C

  5.數器清零:

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

  6.保存和重載:

  保存:

  ipvsadm-S > /PATH/TO/SOME_RULE_FILE

  ipvsadm-save > /PATH/TO/SOME_RULE_FILE

  重載:

  ipvsadm -R < /PATH/FROM/SOME_RULE_FILE

  ipvsadm-restore< /PATH/FROM/SOME_RULE_FILE

  注意:需要結合重定向一起使用,從自定義的規則文件中導入導出

  附錄(ipvsadm -h):

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

  [-p[timeout]] [-M netmask] [-b sched-flags]

  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

  [-g|i|m][-w weight] [-x upper] [-y lower]

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

  ipvsadm-L|l [options]

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

  ipvsadm--set tcp tcpfin udp

  ipvsadm-h

  五、lvs-nat模型構建

  1.lvs-nat模型示意圖

  本次構建的lvs-nat模型的示意圖如下,其中所有的服務器和測試客戶端均使用VMware虛擬機模擬,所使用的CentOS 7

  VS內核都支持ipvs功能,且安裝ipvsadm控制書寫lvs規則工具。

  RS端兩臺服務器為httpd服務器做請求的負載均衡。

  注意;

  1) 客戶端可以使用Windows上的瀏覽器,會后緩存影響結果,所以采用CentOS上的curl命令請求http協議顯示更加直觀

  2) DIP上不能配置iptables規則

  2.VS網卡配置

  (1)增加網卡

  在"虛擬機設置"中增加一個網絡適配器設備,并將其自定義特定網絡為VMnet2模式,此處為了模擬負載均衡服務器的兩張網卡處于不同網段

  (2)配置VS兩張網卡的IP地址

  [root@localhost ~]# nmtui# CentOS 7 文本圖形界面配置網卡命令

  [root@localhost ~]# systemctl start network.service

  注意:

  網絡適配器1(172.16.249.57)模擬為外網網卡,網絡適配器2(192.168.100.1)模擬為內網,且該網卡的Ip地址要和RS服務器得ip在同一網段,DIP作為RIP的網絡調度(網關),無需配置GATEWAY

  [root@localhost~]# ifconfig

  3.RS網卡配置

  此處使用兩臺CentOS 7虛擬機作為負載均衡后端真實響應主機,安裝RPM包格式httpd服務,并啟動服務。nmtui命令配置網卡信息,RS1的IP:192.168.100.2,RS2的IP:192.168.100.3,RIP和DIP在同一網段,虛擬機網卡和DIP同時匹配值為VMnet2模式,且兩臺RS服務器主機網關指向DIP:192.168.100.1

  [root@localhost~]# yum install -y httpd

  [root@localhost ~]# systemctl start httpd.service

  注意:安裝完成后在各httpd服務器上配置測試頁面,/var/www/html/index.html.

  [root@localhost ~]# nmtui # 配置方法同上,此處省略

  … ...

  [root@localhost ~]# systemctl start network.service

  [root@localhost~]# ifconfig

  4.測試所有主機是否能夠通信

  用ping命令測試各節點的通信,例如RIP1和VIP、DIP、RIP2之間是否能夠通信

  [root@localhost ~]# ping IPADDR

  5.VS主機:核心轉發和安裝ipvsadm

  (1)安裝ipvsadm組件:[root@localhost ~]# yum install -y ipvsadm

  (2)啟動網卡間核心轉發功能:[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1

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

  6.VS主機:定義配置lvs-nat服務(此處采用rr算法)

  (1)定義ipvsadm負載均衡集群規則,并查看

  此處定義DIP是以-s指定為rr算法進行輪詢調度,-m指定模式為lvs-nat,配置命令如下:

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

  [root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.2:80 -m

  [root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.3:80 -m

  [root@localhost~]# ipvsadm -L -n

  (2)Client客戶機測試

  在客戶端主機上使用curl命令對VIP發起請求,負載均衡服務器會將請求按照rr算法依次將請求調度給不同的主機進行處理,依次請求給分發給192.168.100.2和192.168.100.3主機響應。

  [root@localhost~]# curl http://172.16.249.57

  7.VS主機:定義配置lvs-nat服務(此處采用wrr算法)

  (1)定義ipvsadm負載均衡集群規則,并查看

  此處將在上面lvs-nat的rr的基礎上進行修改,改成wrr加權輪詢算法;將192.168.100.2的權重設置為1,192.168.100.3的權重設置為3。

  [root@localhost~]# ipvsadm -E -t 172.16.249.57:80 -s wrr

  [root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.2 -w 1 -m

  [root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.3 -w 1 -m

  [root@localhost~]# ipvsadm -L -n

  (2)Client客戶機測試

  在客戶端主機用curl發起請求,負載均衡主機VS會將其按照權重大小轉發給各個主機,四個請求有三個發給了192.168.100.3請求響應,一個發給了192.168.100.2主機處理。并以此算法做輪詢負載請求

  [root@localhost~]# curl http://172.16.249.57

  六、lvs-dr模型構建

  1.lvs-dr模型示意圖

  三臺主機為虛擬機CentOS 7,每臺主機僅有一塊網卡,且使用橋接方式都指向外部網絡的網關172.16.100.1

  2.配置VS和RS服務器的VIP

  此處的VIP均已別名的形式配置在往卡上,VS是配置在對外通信的DIP的網卡上;RS配置在lo本地回環網卡

  注意:此時配置的VIP的子網掩碼必須為255.255.255.255,廣播地址為自己本身

  VS:[root@localhost~]# ifconfig eno16777736:0 172.16.50.50 netmask 255.255.255.255 broadcast172.16.50.50 up

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

  3.RS服務器上配置路由

  [root@localhost~]# route add -host 172.16.50.50 dev lo:0

  4.RS服務器配置APR內核參數修改

  [root@localhost~]# ll /proc/sys/net/ipv4/conf

  (1)ARP響應行為和ARP解析行為內核參數:

  1)arp_annouce定義通告級別

  0:默認級別,將本地的任何接口上的配置的地址都在網絡中通告

  1:盡量避免向本主機上的其他網卡進行網絡通信,特殊情況下其他接口也可以

  2:總是使用最佳網絡地址接口(僅使用定義的網卡接口在同網絡通信)

  2)arp_ignore定義響應級別(0-8九個級別),響應時忽略方式

  0:都全都響應

  1:只對從本接口進入的請求響應,且本接口地址是個網絡地址

  … …

  注釋:一般使用arp_annouce=2,arp_ignore=1

  (2)配置各RS主機參數

  注意:all必須配置、eno16777736(本地)和lo兩個可以同時全部配置或者配置其中一個

  RealServer內核參數:

  #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

  # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  #echo 1 > /proc/sys/net/ipv4/conf/INTERFACE/arp_ignore

  # echo 2 > /proc/sys/net/ipv4/conf/INTERFACE/arp_announce

  注意:INTERFACE為你的物理接口;此處網卡接口指的是eno16777736和lo

  5.VS主機:定義配置lvs-dr模式(此處采用rr算法)

  (1)配置查看

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

  [root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.10 -g

  [root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.11 -g

  [root@localhost~]# ipvsadm -L -n

  (2)測試

  [root@localhost~]# curl http://172.16.50.50

  因為基于rr算法調度,依次分發給RS主機

  七、通過防火墻標記來定義lvs

  1.FWM防火墻標記功能

  防火墻標記可以實現多個集群服務綁定為同一個,實現統一調度;將共享一組RS的集群服務統一進行定義

  FWM基于iptables的mangle表實現防護墻標記功能,定義標記做策略路由

  2.FWM定義集群的方式

  (1)在director上netfilter的mangle表的PREROUTING定義用于"打標"的規則

  ~]#iptables -t mangle -A PREROUTING -d $vip -p $protocol --dport $port -j MARK--set-mark #

  $vip:VIP地址

  $protocol:協議

  $port:協議端口

  (2)基于FWM定義集群服務:

  ~]#ipvsadm -A -f # -s scheduler

  3.實例演示

  [root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.50.50 -p tcp --dport 80 -j MARK--set-mark 5

  [root@localhost~]# ipvsadm -A -f 5 -s rr

  [root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.10 -g

  [root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.11 -g

  八、LVS持久連接功能:lvs persistence

  1.lvs persistence功能

  無論ipvs使用何種scheduler,其都能夠實現在指定時間范圍內始終將來自同一個ip地址的請求發往同一個RS;實現方式和lvs調度的十種算法無關,通過lvs持久連接模板(hash表)實現,當超過自定義的可持節連接時長候再根據LVS算法本身進行調度。

  ipvsadm命令中-p選項實現,在-p后不指定具體數字(單位:秒),默認為300,到時候會自動延長2分鐘,對于web本身就是15秒

  2.模式

  (1)每端口持久(PPC)

  客戶端對同一服務端口發起請求,會基于該服務的端口實現請求在一段時間內對同一RS服務器持久連接;

  例如:有兩臺主機做為RS服務器做http和hssh的兩種服務的集群,僅http做每端口持久,Client請求會實現綁定在,但是22號端口請求不會綁定在同一臺RS

  (2)每客戶端持久(PCC):定義tcp或udp協議的0號端口為集群服務端口

  director會將用戶的任何請求都識別為集群服務,并向RS進行調度;同一客戶端的請求任何端口都發往同一臺第一次選定的RS服務器

  (3)每防火墻標記持久(PFWMC)

  將兩個或兩個以上服務通過防火墻打標綁定在一起,這些服務的請求實現同時定向與同一臺RS服務器,服務綁定同一RS

  實例:

  lvs-dr模式下以rr算法綁定http和https服務

  ~]#iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 80 -j MARK--set-mark 99

  ~]#iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 443 -j MARK--set-mark 99

  ~]#ipvsadm -A -f 99 -s rr -p

  ~]#ipvsadm -a -f 99 -r 172.16.100.68 -g

  ~]#ipvsadm -a -f 99 -r 172.16.100.69 -g

  附錄:LVS-DR類型RS腳本示例

  #!/bin/bash

  #

  vip=172.16.50.50

  interface="lo:0"

  case$1 in

  start)

  echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore

  echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

  echo2 > /proc/sys/net/ipv4/conf/all/arp_announce

  echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce

  ifconfig$interface $vip broadcast $vip netmask 255.255.255.255 up

  routeadd -host $vip dev $interface

  ;;

  stop)

  echo0 > /proc/sys/net/ipv4/conf/all/arp_ignore

  echo0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

  echo0 > /proc/sys/net/ipv4/conf/all/arp_announce

  echo0 > /proc/sys/net/ipv4/conf/lo/arp_announce

  ifconfig$interface down

  ;;

  status)

  ififconfig lo:0 |grep $vip &> /dev/null; then

  echo"ipvs is running."

  else

  echo"ipvs is stopped."

  fi

  ;;

  *)

  echo"Usage: `basename $0` {start|stop|status}"

  exit1

  esac

  云爍服務,您身邊的IT服務商,期待與您的合作!相關內容請咨詢在線客服,或致電400-0806-056.

  來源:互聯網

400-0806-056
主站蜘蛛池模板: 狠狠色噜噜狠狠狠狠色综合久AV| 亚洲AV综合色一区二区三区| 亚洲国产婷婷综合在线精品| 欧美久久天天综合香蕉伊| 自拍 偷拍 另类 综合图片| 欧美国产综合欧美视频| 久久久久久综合一区中文字幕| 亚洲综合欧美精品一区二区| 区三区激情福利综合中文字幕在线一区亚洲视频1| 国产成人亚洲综合| 日韩亚洲人成在线综合日本| 日韩欧美综合| 国产欧美日韩综合一区在线播放| 狠狠色丁香婷婷久久综合五月| 亚洲国产综合久久天堂| 欧美日韩亚洲乱国产综合| 午夜激情影院综合| 激情五月激情综合网| 亚洲精品第一国产综合境外资源| 亚洲伊人久久大香线蕉综合图片| 狠狠色噜狠狠狠狠色综合久| 亚洲国产综合精品一区在线播放| 天天影视综合色区| 五月天激激婷婷大综合丁香| 国产人成精品综合欧美成人| 在线综合+亚洲+欧美中文字幕| 伊人久久大香线焦AV综合影院| 亚洲伊人tv综合网色| 涩涩色中文综合亚洲| 狠色狠色狠狠色综合久久| 综合自拍亚洲综合图不卡区| 激情综合色五月丁香六月亚洲| 欧美伊香蕉久久综合类网站| 亚洲综合另类小说色区| 综合在线免费视频| 亚洲国产天堂久久综合网站| 久久综合久久鬼色| 伊人色综合久久天天人守人婷| 欧美综合在线观看| 久久国产综合精品五月天| 色综合色狠狠天天综合色|