LVS+Keepalived

来源:http://www.cnblogs.com/xiaocheche/archive/2017/10/18/7689432.html
-Advertisement-
Play Games

1》Keepalived簡介 Keepalived是Linux下一個輕量級別的高可用解決方案,高可用(High Avalilability,HA),其實兩種不同的含義:廣義來講,是指整個系統的高可用行,狹義的來 講就是之主機的冗餘和接管,它與HeartBeat RoseHA 實現相同類似的功能,都可 ...


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保證數據的完整連接;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本例中udf來自《hive編程指南》其中13章自定義函數中一個例子。 按照步驟,第一步,建立一個項目,創建 GenericUDFNvl 類。 創建完成之後,在項目中點郵件->Export->JAR file,再下一步中選中剛剛創建的這個文件,將文件導出為.jar文件。 接下來,進入hive的 CLI ...
  • 0.目錄 1. "前言" 2. "準備工作" 3. "簡單測試語句" 4. "提交與回滾" 5. "封裝成類的寫法" 1.前言 前面學完了SQL Server的基本語法,接下來學習如何在程式中使用sql,畢竟不能在程式中使用的話,實用性就不那麼大了。 2.最基本的SQL查詢語句 python是使用p ...
  • AutoAudit介紹 AutoAudit這個是Paul Nielsen寫的一個開源的審計跟蹤的腳本項目,項目位於https://autoaudit.codeplex.com/上,Paul Nielsen的一篇博客CodeGen to Create Fixed Audit Trail Trigger... ...
  • 最近需要將Mysql的資料庫導出一份Word的文檔出來,本文記錄調研後幾個可用的工具和方法 ...
  • 操作系統 :CentOS7.3.1611_x64 PostgreSQL版本 :9.6 問題描述 PostgreSQL執行Insert語句時,自動填入時間的功能可以在創建表時實現,但更新表時時間戳不會自動自動更新。 在mysql中可以在創建表時定義自動更新欄位,比如 : 那PostgreSQL中怎麼操 ...
  • 圖示池化層(前向傳播) 池化層其實和捲積層有點相似,有個類似捲積核的視窗按照固定的步長在移動,每個視窗做一定的操作,按照這個操作的類型可以分為兩種池化層: MAC (max pooling)在視窗中取最大值當做結果 AVG (average pooling)在視窗中取平均值當做結果 池化層的反向傳播 ...
  • 背景: 圖資料庫對於表現和遍歷複雜的實體之間關係是很有效果的。而這些在傳統的關係型資料庫中尤其是對於報表而言很難實現。如果把傳統關係型資料庫比做火車的話,那麼到現在大數據時代,圖資料庫可比做高鐵。它已成為NoSQL中關註度最高,發展趨勢最明顯的資料庫。伴隨SQL Server 2017的出現,在SQ ...
  • 前言 Linux 的普通用戶(uid >= 500)不具有某些命令的執行許可權,為了執行較高許可權的命令,一般有兩種方法: 第一種是使用 su - 命令切換到 root 用戶去執行; 另外一種方法是在命令前添加 sudo 去執行。 編輯文件 在使用 sudo 執行命令之前,需要把當前普通用戶添加到 su ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...