linux cluster—-lvs

一. Linux Cluster:

    

     Cluster:計算機集合,為解決某個特定問題組合起來形成的單個系統;


     Linux Cluster類型:

         LB:Load Balancing,負載均衡;

         HA:High Availiablity,高可用;

             A=MTBF無故障運行時長/(MTBF無故障運行時長+MTTR故障時間)

             衡量指數: (0,1):90%, 95%, 99%, 99.5%,  99.9%, 99.99%, 99.999%

     HP:High Performance,高性能;

    

     系統擴展方式:

     Scale UP:向上擴展

     Scale Out:向外擴展

    

    

二. LB  Cluster:

     LB Cluster的實現:

     硬件:

         F5 Big-IP

         Citrix Netscaler

         A10 A10

     軟件:

         lvs:Linux Virtual Server

         nginx

         haproxy

         ats:apache traffic server (流量調度器)

         perlbal

         pound

    

     基于工作的協議層次劃分:

         傳輸層(通用解決方案):(DPORT)

             lvs:未涉及套接字,僅在內核中直接轉發報文

             nginx:(stream)利用隧道機制,監聽在指定端口,并分發流量,最多也僅支持65534個監聽套接字

             haproxy:(mode tcp)

    

         應用層(專用解決方案):(自定義的請求模型分類)

             proxy sferver:

             http:nginx, httpd, haproxy(mode http), …

             fastcgi:nginx, httpd, …

             mysql:mysql-proxy, …

             ..

    站點指標:

             PV:Page View

             UV:Unique Vistor

             IP:獨立IP訪問量

        

    會話保持:

             (1) session sticky

             Source IP

             Cookie

             (2) session replication;

             session cluster

             (3) session server

            注意: 集群中,全部主機的時間必須一致! 否則會出錯,因此建議使用同一的時間服務器

            vim /etc/chrony.conf:

            在開頭部分的server pool 中,注釋其他時間服務器,添加指定的時間服務器:

            server 10.1.0.1 iburst

            保存后,重啟chronyd.service


    三. lvs 簡介

       1.

             lvs:Linux Virtual Server

             VS: Virtual Server

             RS: Real Server

             工作機制–l4:四層路由器,四層交換機;

             VS:根據請求報文的目標IP和目標協議及端口將其調度轉發至某RealServer,

            根據調度算法來挑選RS;

            

            lvs機制類比:

             iptables/netfilter:

             iptables:用戶空間的管理工具;

             netfilter:內核空間上的框架;

             流入:PREROUTING –> INPUT

             流出:OUTPUT –> POSTROUTING

             轉發:PREROUTING –> FORWARD –> POSTROUTING

            

             DNAT:目標地址轉換; PREROUTING;

        

        

       2. lvs: ipvsadm/ipvs

             ipvsadm:用戶空間的命令行工具,規則管理器,用于管理集群服務及RealServer;

             ipvs:工作于內核空間的netfilter的INPUT鉤子之上的框架;

            

      3. lvs集群類型中的術語:

                 vs:Virtual Server, Director, Dispatcher, Balancer

                 rs:Real Server, upstream server, backend server

            

                 CIP:Client IP,    VIP: Virtual serve IP,   RIP: Real server IP,    DIP: Director IP

            

      4.   數據報文流向:

             CIP <–> VIP == DIP <–> RIP

        


    四. lvs 集群類型詳解

         1. lvs集群的類型:

             lvs-nat:修改請求報文的目標IP

             lvs-dr:操縱封裝新的MAC地址;

             lvs-tun:在原請求IP報文之外新加一個IP首部;

             lvs-fullnat:修改請求報文的源和目標IP;

        

         2. lvs-nat:

             多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的

            RIP和PORT實現轉發;

             拓撲示意圖:

        

                wKiom1gUldzBzQfgAACOMenRsyE766.png-wh_50

            (1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關要指向DIP;

             (2)請求報文和響應報文都必須經由Director轉發;Director易于成為系統瓶頸;

             (3)支持端口映射,可修改請求報文的目標PORT;

             (4)vs必須是Linux系統,rs可以是任意系統;

        

         3. lvs-dr:

          Direct Routing,直接路由;

           

             通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的

            MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;

            源IP/PORT,以及目標IP/PORT均保持不變;

            (此時,RS物理網卡地址為RIP, lo 網卡地址設置為VIP)

            

                wKioL1gUld2zOrlxAAChSAtj1yE272.png-wh_50

                

                vip與dip/rip不在同一網段的實現拓撲:

                         

wKioL1gUld7C4POLAACsKH23U_8353.png-wh_50


           

          數據報文流向:

            client –>router–>sw–>DIrector–>RS—>sw–>router–>client

            


           Director和各RS都得配置使用VIP;

             (1) 確保前端路由器將目標IP為VIP的請求報文發往Director:


                實現方法:

                 (a) 在前端網關做靜態綁定;

                 (b) 在RS上使用arptables;

                 (c) 在RS上修改內核參數以限制arp通告及應答級別;

                 arp_announce

                 arp_ignore

             (2) RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一IP網絡;

                RIP的網關不能指向DIP,以確保響應報文不會經由Director;

             (3) RS跟Director要在同一個物理網絡;

             (4) 請求報文要經由Director,但響應不能經由Director,而是由RS直接發往

                Client;

                RS的響應報文,可以用原路由返回client,也可以從其他網關返回至client

                (注意: 路由轉發報文時候,只關注目標IP,忽略源IP,因此RIP,VIP均不影響

                響應報文發送)

             (5) 不支持端口映射;

        

         4.lvs-tun:

             轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報

            文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;

            

             (1) DIP, VIP, RIP都應該是公網地址;

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

             (3) 請求報文要經由Director,但響應不能經由Director;

             (4) 不支持端口映射;

             (5) RS的OS得支持隧道功能;

            

               wKiom1gUld3iEW86AABqjpDRAuU212.png-wh_50

           5.lvs-fullnat:

             通過同時修改請求報文的源IP地址和目標IP地址進行轉發;

             CIP –> DIP

             VIP –> RIP

            

             (1) VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;

                因此,RIP的網關一般不會指向DIP;

             (2) RS收到的請求報文源地址是DIP,因此,只需響應給DIP;

                但Director還要將其發往Client;

             (3) 請求和響應報文都經由Director;

             (4) 支持端口映射;

            

             注意:此類型默認不支持;

        ————————————————————————————————-

    回顧:

     lvs類型:

     lvs-nat:通過修改請求報文的目標IP地址完成調度并轉發;請求和響應報文都經由Director;

     lvs-dr:通過直接封裝新的MAC首部完成調度并轉發;僅請求報文經由Director;

     lvs-tun:通過在原IP報文首部之外新封裝一個IP首部完成調度并轉發;僅請求報文經由Director;

     lvs-fullnat:通過修改請求報文的目標IP地址和源IP地址完成調度并轉發;請求和響應報文都經由Director;

    

     會話保持:

     session sticky, session replication, session server;

    

     lvs:

     ipvsadm/ipvs

     ————————————————————————————————

   


五.調度算法:

     ipvs scheduler:

     根據其調度時是否考慮各RS當前的負載狀態,可分為靜態方法和動態方法兩種:

    

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

         RR:roundrobin,輪詢;

         WRR:Weighted RR,加權輪詢;

         SH:Source Hashing,實現session sticy,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定;

         DH:Destination Hashing;目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS;

    

     動態方法:主要根據每RS當前的負載狀態及調度算法進行調度;

         Overhead=

        

         LC:least connections

             Overhead=activeconns*256+inactiveconns

         WLC:Weighted LC

             Overhead=(activeconns*256+inactiveconns)/weight

         SED:Shortest Expection Delay

             Overhead=(activeconns+1)*256/weight

         NQ:Never Queue

        

         LBLC:Locality-Based LC,動態的DH算法;

         LBLCR:LBLC with Replication,帶復制功能的LBLC;

    

   

六.ipvsadm/ipvs

     ipvsadm/ipvs:

     1. ipvs:內核集成的報文處理模塊

         ~]# grep -i -C 10 "ipvs" /boot/config-3.10.0-327.el7.x86_64

        

         支持的協議:TCP, UDP, AH, ESP, AH_ESP, SCTP;

        

         ipvs集群:

         集群服務

         服務上的RS

    

     2. ipvsadm命令:

         ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [–pe persistence_engine] [-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 [options]

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

         ipvsadm -L|l [options]

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


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

         增、改:

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

        

         刪:

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

        

         service-address:

         -t|u|f:

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

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

         -f:firewall MARK,是一個數字;

        

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

    

     管理集群上的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

    

     查看:

         ipvsadm -L|l [options]

         –numeric, -n:numeric output of addresses and ports

         –exact:expand numbers (display exact values)

        

         –connection, -c:output of current IPVS connections

         –stats:output of statistics information

         –rate :output of rate information

        

     保存和重載:

         ipvsadm -S = ipvsadm-save

         ipvsadm -R = ipvsadm-restore

        

         保存:建議保存至/etc/sysconfig/ipvsadm

         ipvsadm-save > /PATH/TO/IPVSADM_FILE

         ipvsadm -S > /PATH/TO/IPVSADM_FILE

         systemctl stop ipvsadm.service

        

         重載:

         ipvsadm-restore < /PATH/FROM/IPVSADM_FILE

         ipvsadm -R < /PATH/FROM/IPVSADM_FILE

         systemctl restart ipvsadm.service



七. lvs –nat  模型實例

     1.   負載均衡集群的設計要點:

         (1) 是否需要會話保持;

         (2) 是否需要共享存儲;

         共享存儲:NAS, SAN, DS(分布式存儲)

         數據同步:

         課外作業:rsync+inotify實現數據同步

    

     2. lvs-nat:

    

         設計要點:

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

         (2) 支持端口映射;

       

    

八. lvs-dr 模式實例

     lvs-dr:

     1. dr模型中,各主機上均需要配置VIP,解決地址沖突的方式有三種:

     (1) 在前端網關做靜態綁定;

     (2) 在各RS使用arptables;

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

         限制響應級別:arp_ignore

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

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

                才給予響應;

         限制通告級別:arp_announce

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

                行通告;

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

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

    

    

     2.  RS的預配置腳本:

         #!/bin/bash

         #

         vip=10.1.0.5

         mask='255.255.255.255'

         case $1 in

         start)

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

         echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

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

         echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

         ifconfig lo:0 $vip netmask $mask broadcast $vip up

         route add -host $vip dev lo:0

         ;;

         stop)

         ifconfig lo:0 down

         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

         ;;

         *)

         echo "Usage $(basename $0) start|stop"

         exit 1

         ;;

         esac

        

     3.  VS的配置腳本:

         #!/bin/bash

         #

         vip='10.1.0.5'

         iface='eno16777736:0'

         mask='255.255.255.255'

         port='80'

         rs1='10.1.0.7'

         rs2='10.1.0.8'

         scheduler='wrr'

         type='-g'

         case $1 in

         start)

         ifconfig $iface $vip netmask $mask broadcast $vip up

         iptables -F

        

         ipvsadm -A -t ${vip}:${port} -s $scheduler

         ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1

         ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1

         ;;

         stop)

         ipvsadm -C

         ifconfig $iface down

         ;;

         *)

         echo "Usage $(basename $0) start|stop"

         exit 1

         ;;

         esac


    

九.FWM:FireWall Mark

     1. fwm: 借助于防火墻標記來分類報文,而后基于標記定義集群服務;可將多個不同的應用使

        用同一個集群服務進行調度;

    

     2. 打標記方法(在Director主機):

         # iptables -t mangle -A PREROUTING -d $vip -p $proto –dport $port -j MARK

        –set-mark NUMBER

    

     3. 基于標記定義集群服務:

         # ipvsadm -A -f NUMBER [options]

    

    

十. lvs persistence

    lvs persistence:持久連接  (用于session 綁定)

    

     持久連接模板:實現無論使用任何算法,在一段時間內,實現將來自同一個地址的請求始終

    發往同一個RS;

    

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

    

     5. port Affinity:

         每端口持久:每集群服務單獨定義,并定義其持久性;

         每防火墻標記持久:基于防火墻標記定義持久的集群服務;可實現將多個端口上的應用

        統一調度,即所謂的port Affinity;

         每客戶端持久:基于0端口定義集群服務,即將客戶端對所有應用的請求統統調度至后

        端主機,而且可使用持久連接進行綁定;

    

    考慮:

     (1) Director不可用,整個系統將不可用;SPoF

     解決方案:高可用

     keepalived

     heartbeat/corosync

     (2) 某RS不可用時,Director依然會調度請求至此RS;

     解決方案:對各RS的健康狀態做檢查,失敗時禁用,成功時啟用;

     keepalived

     heartbeat/corosync, ldirectord

     檢測方式:

     (a) 網絡層檢測;

     (b) 傳輸層檢測,端口探測;

     (c) 應用層檢測,請求某關鍵資源;

    

     ok –> failure

     failure –> ok

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

(0)
ldt195175108ldt195175108
上一篇 2016-10-29
下一篇 2016-10-29

相關推薦

  • N26 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。    who | cut -d" " -f1 | sort -u    2、取出最后登錄到當前系統的用戶的相關信息。    who | tail -1 3、取…

    Linux干貨 2017-02-16
  • 高級文件系統管理之邏輯卷管理

    一,概述 邏輯卷管理器(LVM)     LVM: Logical Volume Manager, Version:2          dm:device mapper (設備映射),將一個或多個底層塊設備組織成一個邏輯設備的模塊 &nb…

    Linux干貨 2016-09-10
  • 馬哥linux 0726作業

    1,課堂練習 顯示當前日期,格式:2016-08-08 顯示前天是星期幾 設置當前日期為2008-08-08 08:00 使用字符端登陸時,顯示當前登錄終端號,主機名和當前時間 1,首先我們知道當前登錄信息的配置文件在/etc/issue中 2,然后我們查詢幫助看看issue的具體描述查到了相關的mingetty的命令當中關于當中的一些選項就是我們需要的三個…

    Linux干貨 2016-08-04
  • linux基礎練習

    馬哥教育23期網絡班+第6周課堂練習 Linux 基礎練習 一、linux基礎練習題 1、復制/etc/rc.d/rc.sysinit 文件至/tmp 目錄,將/tmp/rc.sysinit 文件中的以至少一個空白字符開頭的行的行首加#; 2、復制/boot/grub/grub.conf 至/tmp目錄中 刪除/tmp/grub.conf 文件中的行首的空白…

    Linux干貨 2016-11-01
  • 互聯網安全之iptables/netfilter入門到進階

    隨著互聯網技術的方興未艾,各種網絡應用層出不窮,網絡攻擊、黑客入侵也成了網民暢游互聯網的心頭大患,互聯網安全也愈加受到了人們的重視。網絡防火墻,作為一種簡單高效的互聯網防御手段,逐漸成為了網民暢游網絡世界的保護傘。下面筆者介紹下Linux系統的守衛者——iptables/netfilter。 ?一 兄弟齊心,其利斷金 ?iptables/netfilter就…

    Linux干貨 2017-05-06
  • linux下安裝配置DHCP服務器

    前提是已經安裝了 core 及 base 兩個組   1 2 3 4 5 # cat /etc/redhat-release   Red Hat Enterprise Linux Server release 6.8 (Santiago)&…

    Linux干貨 2017-05-03

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-10-30 20:43

    盡量用自己的話語總結出來老師的筆記,為不是對簡單粘貼筆記。

欧美性久久久久