LVS+Keepalived搭建高可用負載服務

LVS+Keepalived

1》Keepalived簡介       

      Keepalived是Linux下一個輕量級別的高可用解決方案,高可用(High Avalilability,HA),其實兩種不同的含義:廣義來講,是指整個系統的高可用行,狹義的來            講就是之主機的冗餘和接管,它與HeartBeat RoseHA 實現相同類似的功能,都可以實現服務或者網絡的高可用,但是又有差別,HeartBeat是一個專業的、功能完            善的高可用軟件,它提供了HA 軟件所需的基本功能,比如:心跳檢測、資源接管,檢測集羣中的服務,在集羣節點轉移共享IP地址的所有者等等。HeartBeat功能強          大,但是部署和使用相對比較麻煩,與HeartBeat相比,Keepalived主要是通過虛擬路由冗餘來實現高可用功能,雖然它沒有HeartBeat功能強大,但是Keepalived部          署和使用非常的簡單,所有配置只需要一個配置文件即可以完成;      

      Keepalived起初是爲LVS設計的,專門用來監控集羣系統中各個服務節點的狀態,它根據TCP/IP參考模型的第三、第四層、第五層交換機制檢測每個服務節            點的狀態,如果某個服務器節點出現異常,或者工作出現故障,Keepalived將檢測到,並將出現的故障的服務器節點從集羣系統中剔除,這些工作全部是自動完成            的,不需要人工干涉,需要人工完成的只是修復出現故障的服務節點,後來Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虛擬路          由冗餘協議)出現的目的是解決靜態路由出現的單點故障問題,通過VRRP可以實現網絡不間斷穩定運行,因此Keepalvied 一方面具有服務器狀態檢測和故障隔離功            能,另外一方面也有HA cluster功能,下面介紹一下VRRP協議實現的過程;

2》VRRP協議與工作原理          

      在現實的網絡環境中,主機之間的通信都是通過配置靜態路由或者(默認網關)來完成的,而主機之間的路由器一旦發生故障,通信就會失效,因此這種通信模           式當中,路由器就成了一個單點瓶頸,爲了解決這個問題,就引入了VRRP協議,熟悉網絡的學員對VRRP協議應該不陌生,它是一種主備模式的協議,通過                 VRRP可以在網絡發生故障時透明的進行設備切換而不影響主機之間的數據通信,這其中涉及到兩個概念:物理路由器和虛擬路由器;

      VRRP可以將兩臺或者多臺物理路由器設備虛擬成一個虛擬路由,這個虛擬路由器通過虛擬IP(一個或者多個)對外提供服務,而在虛擬路由器內部十多個物           理路由器協同工作,同一時間只有一臺物理路由器對外提供服務,這臺物理路由設備被成爲:主路由器(Master角色),一般情況下Master是由選舉算法產生,它           擁有對外服務的虛擬IP,提供各種網絡功能,如:ARP請求,ICMP 數據轉發等,而且其它的物理路由器不擁有對外的虛擬IP,也不提供對外網絡功能,僅僅接收         MASTER的VRRP狀態通告信息,這些路由器被統稱爲“BACKUP的角色”,當主路由器失敗時,處於BACKUP角色的備份路由器將重新進行選舉,產生一個新的主           路由器進入MASTER角色,繼續提供對外服務,整個切換對用戶來說是完全透明的;

       每個虛擬路由器都有一個唯一的標識號,稱爲VRID,一個VRID與一組IP地址構成一個虛擬路由器,在VRRP協議中,所有的報文都是通過IP多播方式發送             的,而在一個虛擬路由器中,只有處於Master角色的路由器會一直髮送VRRP數據包,處於BACKUP角色的路由器只會接受Master角色發送過來的報文信息,用來         監控Master運行狀態,一一般不會發生BACKUP搶佔的情況,除非它的優先級更高,而當MASTER不可用時,BACKUP也就無法收到Master發過來的信息,於是           就認定Master出現故障,接着多臺BAKCUP就會進行選舉,優先級最高的BACKUP將稱爲新的MASTER,這種選舉角色切換非常之快,因而保證了服務的持續可           用性;

3》Keepalvied的工作原理        

      上面我們介紹了Keepalived通過VRRP實現高可用性的工作原理,而Keepalived作爲一個高性能集羣軟件,它還能實現對集羣中服務器運行狀態的監控以              及故障隔離,下面我們介紹一下Keepalived對服務器運行狀態和故障隔離的工作原理;

         Keepalived工作在TCP/IP 參考模型的 三層、四層、五層,也就是分別爲:網絡層,傳輸層和應用層,根據TCP、IP參數模型隔層所能實現的功能,                  Keepalived運行機制如下:

         在網絡層: 我們知道運行這4個重要的協議,互聯網絡IP協議,互聯網絡可控制報文協議ICMP、地址轉換協議ARP、反向地址轉換協議RARP,在網絡層                                         Keepalived在網絡層採用最常見的工作方式是通過ICMP協議向服務器集羣中的每一個節點發送一個ICMP數據包(有點類似與Ping的功能),如果                                      某個節點沒有返回響應數據包,那麼認爲該節點發生了故障,Keepalived將報告這個節點失效,並從服務器集羣中剔除故障節點;

         在傳輸層: 提供了兩個主要的協議:傳輸控制協議TCP和用戶數據協議UDP,傳輸控制協議TCP可以提供可靠的數據輸出服務、IP地址和端口,代表TCP                                        的一個連接端,要獲得TCP服務,需要在發送機的一個端口和接收機的一個端口上建立連接,而Keepalived在傳輸層裏利用了TCP協議的端口                                        連接和掃描技術來判斷集羣節點的端口是否正常,比如對於常見的WEB服務器80端口。或者SSH服務22端口,Keepalived一旦在傳輸層探測到                                      這些端口號沒有數據響應和數據返回,就認爲這些端口發生異常,然後強制將這些端口所對應的節點從服務器集羣中剔除掉;

      在應用層:可以運行FTP,TELNET,SMTP,DNS等各種不同類型的高層協議,Keepalived的運行方式也更加全面化和複雜化,用戶可以通過自定義                                             Keepalived工作方式,例如:可以通過編寫程序或者腳本來運行Keepalived,而Keepalived將根據用戶的設定參數檢測各種程序或者服務是否                                        允許正常,如果Keepalived的檢測結果和用戶設定的不一致時,Keepalived將把對應的服務器從服務器集羣中剔除;

      Keepalived 是運行在lvs 之上,它的主要功能是實現真實機的故障隔離及負載均衡器間的失敗 切換,提高系統的可用性;

4》Keepalived體系結構

          

          

      Keepalived起初是爲LVS設計的,由於Keeplalived可以實現對集羣節點的狀態檢測,而IPVS可以實現負載均衡功能,因此,Keepalived藉助於第三方模塊                IPVS就可以很方便地搭建一套負載均衡系統,在這裏有個誤區,由於Keepalived可以和IPVS一起很好的工作,很多學員都以爲Keepalived就是一個負載均衡軟             件,這種理解是錯誤,在Keepalived當中IPVS模塊是可配置的,如果需要負載均衡功能,可以在編譯Keepalived時開打負載均衡功能,也可以通過編譯參數關               閉, NetLINK模塊主要用於實現一些高級路由框架和一些相關參數的網絡功能,完成用戶空間層Netlink Reflector模塊發來的各種網絡請求,這個圖我們可以看               到用戶空間層,是建立在內核空間層之上的, 

              用戶空間層,主要有4個部分:

               Scheduler I/O Multiplexer 是一個I/O複用分發調度器,它負載安排Keepalived所有內部的任務請求;

               Memory Mngt 是一個內存管理機制,這個框架提供了訪問內存的一些通用方法;

               Control Plane  是keepalived的控制版面,可以實現對配置文件編譯和解析;

               Core componets  這部分主要保護了5個部分:

                         Watchdog:是計算機可靠領域中極爲簡單又非常有效的檢測工具,Keepalived正是通過它監控Checkers和VRRP進程的;

                         Checkers: 這是Keepalived最基礎的功能,也是最主要的功能,可以實現對服務器運行狀態檢測和故障隔離;

                         VRRP Stack: 這時keepalived後來引用VRRP功能,可以實現HA集羣中失敗切換功能;

                         IPVS wrapper: 這個是IPVS功能的一個實現,IPVS warrper模塊將可以設置好的IPVS規則發送的內核空間並且提供給IPVS模塊,最                                                                                終實現IPVS模塊的負載功能;

                         Netlink Reflector:用來實現高可用集羣Failover時虛擬IP(VIP)的設置和切換 ;

          Netlink Reflector的所有請求最後都發送到內核空間層的NETLINK 模塊來完成;

5》負載均衡技術

           1>使 用負載均衡技術的理由:          

        假如我們有一個諮詢類的網站,之允許100個用戶同時在線訪問,網站上線初期,由於知名度比較小,通常只有幾個用戶經常上線,後期知名度提高                    了,百度和谷歌又收錄了我們的網站,於是同時在線的用戶量直線上升,很快達到了上千人,於是,網站負荷加重了,經常會“反應遲鈍”,這時用戶開始抱                    怨,爲了不影響用戶對我們的信心,就一定要想辦法解決這個一個問題,那麼我們想想,如果有幾臺或者幾十臺相同配置的機器,前端放一個轉發器,輪流轉                  發客戶對網站的請求,每臺機器將用戶數控制在100以內,那麼網站的反應速度就會大大提高,即使其中的某臺服務器因爲硬件故障了導致宕機了,也不會                    影響用戶的訪問,那麼其中,這個神奇的轉發器就是負載均衡(Director);

          那麼什麼是負載均衡呢?負載均衡建立在現有的網絡結構之上,它提供了一種廉價、有效、透明的方法來擴大網絡設備和服務器的帶寬、增加吞吐                    量、加強網絡數據處理能力,以及提高網絡的靈活性和可用性,通過負載均衡器,我們可以實現N臺廉價的Linux服務器並行處理,從而達到小型機或者大型                 機計算能力,這也是爲何負載均衡如此流行的原因;

        Scale on: 向上擴展

               所謂的向上擴展,就是把當前的服務器進行硬件升級,硬件升級帶來的效果不是線性的,如果架構設計不好,那麼性能不但不能提升,而且                                  還會下降;

        Scale OUT:向外擴展

               所謂的向外擴展,那麼我們可以做Load Balancing:LB (負載均衡技術)

        Ø          系統高可用性

        Ø          系統可擴展性

        Ø          負載均衡能力

      LVS+keepalived能很好的實現以上的要求,LVS提 供負載均衡,keepalived提供健康檢查,故障轉移,提高系統的可用性!採用這樣的架構以後 很容易對                現有系統進行擴展,只要在後端添加或者減少realserver,只要更改lvs的 配置文件,並能實現無縫配置變更!

 6》Lvs模式介紹

           LVS是一個開源的軟件,可以實現LINUX平臺下的簡單負載均衡,LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務器,目前有三種IP負載均衡技                術(VS/NAT、VS/TUN和VS/DR);八種調度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh):

      1>NAT負載模式

             

              

        NAT用法本來是因爲網絡IP地址不足而把內部保留IP地址通過映射轉換成公網地址的一種上網方式(原地址NAT)。

        如果把NAT的過程稍微變化,就可以 成爲負載均衡的一種方式。原理其實就是把從客戶端發來的IP包的IP頭目的地址在DR上換成其中一臺                                          REALSERVER的IP地址併發至此 REALSERVER,而REALSERVER則在處理完成後把數據經過DR主機發回給客戶端,DR在這個時候再把數據包的原IP地                        址改爲DR接口上的 IP地址即可。期間,無論是進來的流量,還是出去的流量,都必須經DR,DR壓力比較大;

      NAT模式:

          集羣節點跟Direcator 必須在同一個IP網絡中;

          RIP通常是私有地址,僅僅用於個集羣之間通信;

          director位於Client和real server之間,並負責處理進出的所有通信;
          realservet必須將網關指向DIP,同時也支持端口影射;
          Realserver可以使用任意OS;
          在較大應用規模當中,單個Director會出現瓶頸;
          大概可以帶10個左右的SERVER就會出現瓶頸。

             2>直接路由模式(DR)

            直接路由模式比較特別,很難說和什麼方面相似,前NAT和TUN種模式基本上都是工作在網絡層上(三層),而直接路由模式則應該是工作在數據鏈路                             層上(二層)。其原理 爲,DR和REALSERVER都使用同一個IP對外服務。但只有DR對ARP請求進行響應,所有REALSERVER對本身這個IP的ARP請求保持                           靜 默。也就是說,網關會把對這個服務IP的請求全部定向給DR,而DR收到數據包後根據調度算法,找出對應的REALSERVER,把目的MAC地址改                                         爲 REALSERVER的MAC併發給這臺REALSERVER。這時REALSERVER收到這個數據包,則等於直接從客戶端收到這個數據包無異,處理後 直接返回給                           客戶端。由於DR要對二層包頭進行改換,所以DR和REALSERVER之間必須在一個廣播域,也可以簡單的理解爲在同一臺交換機上;

             

                           

                     

                                                        

             DR模式:
               每個集羣節點跟dr必須在同一個物理網絡(局域網)當中(dr和web不能隔了有路由器);
               VIP可以使用公網地址,實現遠程管理和監控;
               director只負責處理進站請求,響應的請求封裝後直接由Relserver發給客戶端;
               Realserver不能將Direc當中網關。只能選擇前當網關;
               Direc不能支持端口映射。VIP的端口必須和WEB服務端口一致;
               大多數的操作系統都可以應用在relserver上;
               Direc性能必NAT要好很多。處理速度提高N倍;

      3>TUN負載模式 IP隧道模式           

          隧道模式則類似於VPN的方式,使用網絡分層的原理,在從客戶端發來的數據包的基礎上,封裝一個新的IP頭標記(不完整的IP頭,只有目的IP部)發                                   給 REALSERVER,REALSERVER收到後,先把DR發過來的數據包的頭給解開,還原其數據包原樣,處理後,直接返回給客戶端,而不需要再經過 DR。需要注                          意的是,由於REALSERVER需要對DR發過來的數據包進行還原,也就是說必須支持IPTUNNEL協議。所以,在REALSERVER 的內核中,必須編譯支持                                    IPTUNNEL這個選項。IPTUNNEL也在Net working options裏面;

        TUN模式: 

          集羣節點可以跨越互聯網;
             Relserver的RIP必須是公網地址(真實環境中);
             Director緊處理進站請求;
               由Relserver直接響應客戶端;
                OS必須支持隧道協議,不支持端口映射;

 7》LVS負載均衡的八種調度算法       

    RR算法:
        LVS負載均衡算法1.輪叫調度(Round-RobinScheduling) 

    WRR算法:
        LVS負載均衡算法2.加權輪叫調度(WeightedRound-RobinScheduling)

    LC算法:
        LVS負載均衡算法3.最小連接調度(Least-ConnectionScheduling)

    WLC算法:
        LVS負載均衡算法4.加權最小連接調度(WeightedLeast-ConnectionScheduling)

    LBLC算法:
        LVS負載均衡算法5.基於局部性的最少鏈接(Locality-BasedLeastConnectionsScheduling)

    LBLCR算法:
        LVS負載均衡算法6.帶複製的基於局部性最少鏈接(Locality-BasedLeastConnectionswithReplicationScheduling)

    DH算法:
        LVS負載均衡算法7.目標地址散列調度(DestinationHashingScheduling)

    SH算法:
        LVS負載均衡算法8.源地址散列調度(SourceHashingScheduling)

8》lvs+keepalived架構圖

            

9》lvs持久性連接

      對於電子商務網站來說,用戶在挑選商品的時候使用的是80端口來瀏覽的,當付款的時候則是通過443的ssl加密的方式,當然當用戶挑選完商品付款的時 候,我們當然不希望                https的443跳轉到另外一臺REAL SERVER上,很顯然應該是同一REAL SERVER纔對,這時候就要用到基於防火牆標記的持久連接,通過定義端口的姻親關係來實現。在生產環                 境中用的最多的也是PNMP即基於防火牆標記的持久 連接,好了引子就說到這下面我們就來詳細說說LVS的持久連接;  

    1>PPC(Persistent Port Connections):將來自於同一個客戶端對同一個集羣服務的請求,始終定向至此前選定的RS;(持久端口連接)
        例如:client---->LVS(80)---->RS1 或 client---->LVS(23)---->RS2
        缺陷:期望訪問不同的端口到同一臺RS上,無法實現。
        配置:
            ipvsadm -A -t 172.16.100.1:80 -s rr -p 3600 
            ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 2 
            ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.11 -g -w 2

    2>PCC(Persistent Client Connections):將來自於同一個客戶端對所有端口的請求,始終定向至此前選定的RS;(持久客戶端連接)
        說明:PCC是一個虛擬服務沒有端口號(或者端口號爲0),以"-p" 來標識服務。
        缺陷:定向所有服務,期望訪問不同的Real Server無法實現。
        配置:
          ipvsadm -A -t 172.16.100.1:0 -s rr -p 3600 
          ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.10 -g -w 2 
          ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.11 -g -w 2

    3>PNMPP(Persistent Netfilter Marked Packet Persistence):持久防火牆標記連接,根據iptables 的規則,將對於某類服務幾個不同端口的訪問定義爲一                                                                                                                    類;

      先對某一特定類型的數據包打上標記,然後再將基於某一類標記的服務送到後臺的 Real Server上去,後臺的Real Server 並不識別這些標記。將持久和防             火牆標記結合起來就能夠實現端口姻親功能,只要是來自某一客戶端的對某一特定服務(需要不同的端口)的訪問都定義到同一臺 Real Server上去。

    案例:一個用戶在訪問購物網站時同時使用HTTP(80)和HTTPS(443)兩種協議,我們需要將其定義到同一臺Real Server上,而其他的服務不受限制。
    配置:         

        iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 80 -j MARK --set-mark 8

        iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 443 -j MARK --set-mark 8

        ipvsadm -A -f 8 -s rr -p 600

        ipvsadm -a -f 8 -r 172.16.100.10 -g -w 2

        ipvsadm -a -f 8 -r 172.16.100.11 -g -w 1

     4>持久連接命令

      1.ipvsadm -A|E … -p timeout

      2.選項

      3.-p timeout 指定持久連接時長,默認爲360秒,單位是秒,即6分鐘

      http://www.it165.net/admin/html/201307/1565.html

10》LVS+ Keppalived的安裝

 

      1>環境描述            

          LVS server1 (Master):10.0.0.202-à虛擬IP爲:10.0.0.210

          LVS server2 ( Slave ) :10.0.0.203à虛擬IP爲:10.0.0.210

          WEB server1: 10.0.0.201  網關爲:10.0.0.254

          WEB server2; 10.0.0.204  網關爲:10.0.0.254

        注意:所有集羣服務器時間要一致

       2>安裝LVS           

      注意此動作,否則MAKE直接報錯;

        如果沒有/2.6.32-279.el6.x86_64 這個目錄,請安裝內核開發包

        # yum -y install kernel-devel

        # ln -s /usr/src/kernels/2.6.32-279.el6.x86_64/ /usr/src/linux

        # tar -xvf ipvsadm-1.24.tar.gz

        # cd ipvsadm-1.24

        #make && make install

        # ipvsadm –L

     3>安裝Keepalived            

        # tar –xvf keepalived-1.2.12.tar.gz

        #./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.32-279.el6.x86_64/

          Keepalived version       : 1.2.12

          Compiler                 : gcc

          Compiler flags           : -g -O2

          Extra Lib                : -lssl -lcrypto -lcrypt

          Use IPVS Framework       : Yes 表示使用ipvs框架,也是代表啓動IPVS功能

          IPVS sync daemon support : Yes 表示啓動ipvs的同步功能,--disabled-lvs-sysncd此參數可以關閉。

          IPVS use libnl           : No   表示使用新的libn1版本,如果想使用新的版本,需要重新安裝libn1的包

          Use VRRP Framework       : Yes 表示使用VRRP框架,這個實現keepalived高可用的必須功能

          Use VRRP VMAC            : Yes 表示使用基礎VMAC接口的xmit VRRP包

          SNMP support             : No

          SHA1 support             : No

          Use Debug flags          : No

        # make && make install

        # cp /soft/keepalived-1.2.12/bin/keepalived /usr/bin/

      

        ERRR: yum install -y openssl openssl-devel

          !!! OpenSSL is not properly installed on your system. !!!

          !!! Can not include OpenSSL headers files.            !!!

       

         4>主(master)配置Keepalived配置文件              

! Configuration File for keepalived

global_defs {  #全局定義

   notification_email { #定義郵件

      [email protected]  #定義郵件地址

   }

   notification_email_from [email protected] #定義郵件地址

   smtp_server mail.126.com #郵件服務器

   smtp_connect_timeout 30 #郵件超時時間

   router_id LVS_DEVEL #route_id標識

}

 

vrrp_instance VI_1 { #定義VRR組,

    state MASTER  #定義爲MASTER主

    interface eth1 #對外訪問的網絡接口

    virtual_router_id 100 #虛擬路由標識。注意主從要一致

    priority 100 #主從優先級,主的優先級要高於從。注意

    advert_int 1 #:廣播週期秒數

    authentication {

        auth_type PASS

        auth_pass 2209

    }

    virtual_ipaddress {

        10.0.0.210 #:虛擬VIP地址,真實環境這裏應該是公網IP

 }

}

virtual_server 10.0.0.210 80 { #:虛擬VIP地址 與 端口,DR架構WEB端口要和虛擬端口監聽一致。否則將無法訪問

    delay_loop 6 #健康檢查時間間隔,單位是秒

    lb_algo rr   #調用算法爲RR

    lb_kind DR   #調用架構模式爲DR

    persistence_timeout 0 #:同一IP 50秒內的請求都發到同個real server

    protocol TCP  #使用TCP協議

  

    real_server 10.0.0.201 80 {#:真實WEB服務器地址與端口

        weight 1 #:轉發伐值,越高調用的越多

        TCP_CHECK {

        connect_timeout 10   #:連接超時爲10秒

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80  #連接端口爲80,要和上面的保持一致

}

    }

    real_server 10.0.0.204 80 {

        weight 1

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

       5>從(Slave)配置Keepalived配置文件          

      主從配置區別:

          state BACKUP   #狀態改成BACKUP

          priority 90     #優先級要低於主

        interface eth1  #網絡接口注意和本機對應,

      其它的配置文件內容和主的一樣

     6>配置WEBserver,所有的WEB腳本都一樣            

# vim

如下:

#!/bin/bash

# Written by NetSeek

# description: Config realserver lo and apply noarp

WEB_VIP="10.0.0.210"        #:修改VIP,其它的地方不動,

 

. /etc/rc.d/init.d/functions

 

case "$1" in

start)

       ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP 

       /sbin/route add -host $WEB_VIP dev lo:0

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

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

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

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

       sysctl -p >/dev/null 2>&1

       echo "RealServer Start OK"

       ;;

stop)

       ifconfig lo:0 down

       route del $WEB_VIP >/dev/null 2>&1

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

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

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

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

       echo "RealServer Stoped"

       ;;

status)

        # Status of LVS-DR real server.

        islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`

        isrothere=`netstat -rn | grep "lo:0" | grep $web_VIP`

        if [ ! "$islothere" -o ! "isrothere" ]

        then

            echo "LVS-DR real server Stopped."

        else

            echo "LVS-DR Running."

        fi 

        ;;

*)

        # Invalid entry.

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

        exit 1

        ;;

esac

exit 0

11》啓動WEB server的腳本         

    # ./ realserver.sh start

    # ip add list

        1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

            link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

            inet 127.0.0.1/8 scope host lo

            inet 10.0.0.210/32 brd 10.0.0.210 scope global lo:0  是否有VIP?

            inet6 ::1/128 scope host

 12》啓動LVS         

    在LVS主從服務器上啓動LVS

      # /etc/init.d/keepalived start

    在MASTER服務器上會看到VIP,當MASTER掛了之後。VIP將自動切換到SLAVE(從),

      # /etc/init.d/keepalived start

      eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

          link/ether 00:0c:29:8c:4c:ec brd ff:ff:ff:ff:ff:ff

          inet 10.0.0.202/16 brd 10.0.255.255 scope global eth1

          inet 10.0.0.210/32 scope global eth1 是否有VIP? 有則OK

          inet6 fe80::20c:29ff:fe8c:4cec/64 scope link

          valid_lft forever preferred_lft forever

 13》訪問測試       

  是否可以看到WEBIP

    # ipvsadm -L

      IP Virtual Server version 1.2.1 (size=4096)

      Prot LocalAddress:Port Scheduler Flags

        -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

      TCP  10.0.0.210:http rr

        -> 10.0.0.204:http              Route   1      0          0        

        -> 10.0.0.201:http              Route   1      0          0      

    然後通過瀏覽器訪問:http://10.0.0.210 看看是否可以訪問?

    配置文件裏面設置了同一IP,50秒內定爲一臺WEBserver保證數據的完整連接;

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