keepalived

通常說的雙機熱備是指兩臺機器都在運行,但並不是兩臺機器都同時在提供服務。
當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管並且提供服務,而且切換的時間非常短。

keepalived的工作原理是VRRP(VirtualRouter Redundancy Protocol)虛擬路由冗餘協議。
在VRRP中有兩組重要的概念:VRRP路由器和虛擬路由器,主控路由器和備份路由器。
VRRP 路由器是指運行VRRP的路由器,是物理實體,虛擬路由器是指VRRP協議創建的,是邏輯概念。一組VRRP路由器協同工作,共同構成一臺虛擬路由器。 Vrrp中存在着一種選舉機制,用以選出提供服務的路由即主控路由,其他的則成了備份路由。當主控路由失效後,備份路由中會重新選舉出一個主控路由,來繼續工作,來保障不間斷服務。

1.準備兩臺服務器

主服務器:192.168.1.111

從服務器:192.168.1.199

虛擬ip:192.168.1.223

兩臺機器安裝

2.安裝keepalived需要的依賴包

yum install openssl-devel
yum install popt-devel
yum install ipvsadm
yum install libnl*

3.下載keepalived

yum install keepalived

4.修改主服務器配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

  notification_email {

    #[email protected]沒有服務器配置郵箱可將其註釋掉

    #[email protected]

    #[email protected]

   }

  #notification_email_from [email protected]

   #smtp_server192.168.200.1

  #smtp_connect_timeout 30

   router_idLVS_DEVEL

}

 

vrrp_instance VI_1 {

    state MASTER

    interface eno16777736

   virtual_router_id 51#和slave一樣

    priority 100#主機高於slave

    advert_int 1#檢測服務器狀態間隔時間

    authentication{

        auth_typePASS

        auth_pass 1111

    }

   virtual_ipaddress {

        192.168.1.223#虛擬IP地址,可以爲多個

    }

}

 

開啓服務

systemctl start keepalived

5.修改slave配置

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

 #notification_email {

  #  [email protected]

  #}

 #notification_email_from [email protected]

  #smtp_server127.0.0.1

 #smtp_connect_timeout 30

  router_idLVS_DEVEL

}

 

vrrp_instance VI_1 {

   state SLAVE

  interface eno16777736

  virtual_router_id 51

   priority 99#低於主服務器100

   advert_int 1

   authentication {

       auth_typePASS

       auth_pass1111#驗證密碼,兩臺機器保持一致

   }

 

  virtual_ipaddress {

      192.168.1.223

   }

}

開啓服務

systemctl start keepalived

6.在兩臺服務器web根目錄下建立一個index.php文件,寫上本機ip地址

7.在兩臺機器上使用 "ipa" 查看虛擬 IP 信息

可以看到,虛擬Ip此時綁定在主機上

在瀏覽器中輸入虛擬ip192.168.1.223此時將看到

訪問的是master,那麼將master的服務關閉呢?在192.168.1.111上運行systemctl stop keepalived

此時再看兩臺機器的虛擬ip信息

此時可以看出虛擬ip綁定到了slave服務器上。

在瀏覽器中輸入192.168.1.223可以看到

主機服務掛掉了,此時訪問的是slave.

此時在主服務器上打開keepalived服務,systemctl start keepalived

再次訪問192.168.1.223,將看到

主服務器又活了

那麼如何根據服務某個端口的開與關來進行虛擬Ip的綁定呢?

Vim /usr/share/doc/keepalived-1.2.13/samples/keepalived.conf.vrrp.localcheck

參考提供的例子

! Configuration File for keepalived

vrrp_script chk_http_port {

       script"</dev/tcp/127.0.0.1/80" # connects and exits

       interval1                      # check everysecond

       weight-2                       # default prio:-2 if connect fails

}

vrrp_script chk_mysql_port {

       script"</dev/tcp/127.0.0.1/80" # connects and exits

       interval1                      # check everysecond

       weight-2                       # default prio:-2 if connect fails

}

 

    track_script {

      chk_http_port

       chk_mysql_port

}

將以上信息複製到兩臺服務器的/etc/keepalived/keepalived.conf文件裏

變成如下,參考,注意從機不一樣,爲了講清楚上面的信息放入的位置。

! Configuration File for keepalived

 

global_defs {

  notification_email {

    [email protected]

    [email protected]

    [email protected]

  }

  notification_email_from [email protected]

  smtp_server 192.168.200.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

vrrp_script chk_http_port {

       script"</dev/tcp/127.0.0.1/80" # connects and exits

       interval 1                      # check every second

       weight -2                       # default prio: -2 ifconnect fails

}

 

vrrp_script chk_mysql_port {

       script"</dev/tcp/127.0.0.1/3306" # connects and exits

       interval 1                      # check every second

       weight -2                   # default prio: -2 ifconnect fails

}

vrrp_instance VI_1 {

   state MASTER

   interface eno16777736

   virtual_router_id 51

   priority 100

   advert_int 1

   authentication {

        auth_type PASS

        auth_pass aaa

   }

   virtual_ipaddress {

        192.168.1.229

   }

   track_script {

       chk_http_port

chk_mysql_port

   }

}

此時再重啓兩臺機器的keepalived服務

Systemctl restart keepalived

此時分別關閉主機80和3306端口服務

可以發現虛擬Ip綁定到了從機上。

發佈了47 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章