keepalived-高可用性故障轉移的首選方案

keepalived——高可用性故障轉移的首選方案web

名詞:算法

failaver(故障轉移)vim

failback(回覆)服務器

內核態  用戶態負載均衡

224-239的網段組播網段 能夠  多個機器共用一個IPide

要使用keepalived須要開啓VRRP協議    將會自動加入224.0.0.18組   oop

優先級0-255.越高越優先測試

*************************首先設置RS  (real server)*********************************網站

首先配置好網站服務,測試一下全部的RS服務器  //real server    真實服務器spa

[root@localhost ~]# ip addr add dev lo 10.18.42.144/32      //在lo接口上綁定VIP (就是在LB上配置的第二個IP)

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore       //忽視;不支聲

[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  // 宣佈;宣告

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

*********************************設置LB  (負載均衡)*********************************

yum install ipvsadm   keepalived             // 首先安裝

[root@localhost ~]# ipvsadm -C              //刪除之前設置

[root@localhost ~]# ipvsadm -S              //永久保存

[root@localhost ~]# cd /etc/keepalived/

[root@localhost ~]# cp keepalived.conf{,.backup}                 //以防萬一

*************************設置   master+backup   LB  (負載均衡)****************************

★★★★★★這個是mastrt設置★★★★★★

[root@localhost ~]# vim /etc/keepalived/keepalived.conf      //修改爲下面這樣

! Configuration File for keepalived

global_defs {

  router_id wang                      #名字是不能同樣的,隨便起

}

vrrp_instance web {                  #  這個名字要一致,隨便起

   state MASTER                      #  MASTER 或 BACKUP

   interface ens33

   virtual_router_id 44               # 虛擬路由IP  至關於組  要一致

   priority 150                            #優先級0-255   越高越優先

   advert_int 1                           #檢查間隔,默認1秒

   authentication {

       auth_type PASS                 #設置密碼  

       auth_pass 123                   #密碼要一致

   }

   virtual_ipaddress {

       10.18.42.145                    #VIP(虛擬IP)

   }

}

virtual_server 10.18.42.145 80 {

   delay_loop 6                             #健康檢查時間間隔

   lb_algo rr                                  #lvs調度算法rr|wrr|lc|wlc|lblc|sh|dh

   lb_kind DR                                #負載均衡轉發規則NAT|DR|RUN

   persistence_timeout 5               #5秒會話保持時間

   protocol TCP                             #使用的協議

   real_server 10.18.42.164 80 {

       weight 1                                 #默認爲1,0爲失效

       TCP_CHECK {

           connect_port 80                  #健康檢查的端口

           connect_timeout 3               #鏈接超時時間

           nb_get_retry 3                     #重連次數

           delay_before_retry 3            #重連間隔時間

       }

   }

   real_server 10.18.42.45 80 {

       weight 1

       TCP_CHECK {

           connect_port 80

connect_timeout 3

           nb_get_retry 3

           delay_before_retry 3

       }

   }

}

★★★★★★這個是backup設置★★★★★★

[root@localhost keepalived]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

  router_id wang

}

vrrp_instance web {

   state BACKUP

   interface ens33

   virtual_router_id 44

   priority 100

 # nopreempt        #設置爲不搶佔 注:這個配置只能設置在backup主機上,並且這個主機優先級要比另一臺高  

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 123

   }

   virtual_ipaddress {

       10.18.42.145

   }

}

virtual_server 10.18.42.145 80 {

   delay_loop 6

   lb_algo rr

   lb_kind DR

   persistence_timeout 5

   protocol TCP

   real_server 10.18.42.164 80 {

       weight 1

       TCP_CHECK {

           connect_port 80

           connect_timeout 3

           nb_get_retry 3

           delay_before_retry 3

       }

   }

   real_server 10.18.42.45 80 {

       weight 1

       TCP_CHECK {

           connect_port 80

           connect_timeout 3

           nb_get_retry 3

           delay_before_retry 3

       }

   }

}

這樣就實現了LB的高可用性,壞掉一個還有另外一個。keepalived之間會有一個master,keepalived之間要單獨享用一個交換機一個網段,設置之好後keepalived會進行心跳檢測,默認好像是3秒一次,連不上就自動剔除。

可是這樣master+backup 的組合,會出現一個問題就是,假如master宕機了,而後在修復好以後從新工做後,它會搶佔master身份,這樣會形成多切一次。就會產生多餘的延遲、數據等待、等一些沒必要要的事情。

解決辦法:

  vrrp_instance web {   下   添加 nopreempt

如圖:

787878787.png

nopreempt        #設置爲不搶佔 注:這個配置只能設置在backup主機上,並且這個主機優先級要比另一臺高  

可是!!!!master不能設置nopreempt

因此解決方案是:不設置master,所有設置成backup,這樣你們都是backup,就都能添加nopreempt,即便本來成爲master的LB壞掉從新修好以後也不會搶佔master。

keepalive的 nopreempt 非搶佔

一般若是master服務死掉後backup會變成master,可是當master服務又好了的時候 master此時會搶佔VIP,這樣就會發生兩次切換對業務繁忙的網站來講是很差的。因此咱們要在配置文件加入 nopreempt 非搶佔,可是這個參數只能用於state 爲backup,故咱們在用HA的時候最好master 和backup的state都設置成backup 讓其經過priority來競爭。  

後面附一個:關於keepalived配置文件的詳細說明:https://blog.csdn.net/jibcy/article/details/7826158

相關文章
相關標籤/搜索