keepalived+nginx實現雙機熱備

  1. keepalivednginx

    keepalived的誕生本是爲lvs提供高可用的,可是如今keepalived能夠當成一組獨立的高可用組件來使用,其主要是經過VRRP協議實現高可用(VRRP是什麼這裏不作過多介紹),而keepalived實現故障轉移主要是經過優先級搶佔來實現的(也可經過down掉其中一個keepalived),一般狀況下是一主一備(固然也能夠雙主),後端

  2. 下面是官網的keepalived設計圖服務器

    wKiom1W6MQiTafPzAAHme90dBVw172.jpg

    2.1Scheduler -I/O Multiplexertcp

         keepalived是使用I/O複用實現管理通訊的.ide

    2.2 Memory Mngt設計

          keepalived本身實現內存管理,包括內存分配,內存再分配,內存釋放等.router

    2.3 Control Planeserver

         配置管理的東東,只須要按照默認的配置文件格式便可blog

    2.4 Watch Dog進程

        keepalived啓動時會生成三個進程,其中主進程就靠這個Watch Dog去監控兩個子進程,若是子進程掛了,會嘗試去重啓子進程,若是啓動失敗,就會把服務轉移到備用節點上.

    2.5 VRRP Stack

        keepalived的一個重要功能,高可用的主要實現之一,VRRP協議主要是實現路由冗餘的,keepalived就是靠VRRP在後端的兩臺real server虛擬一個vip和一個vmac地址,當一臺的keepalived(或者使用Checkers監控的服務)掛了的時候能夠把vip和vmac轉移到另外一臺real server上,實現高可用.

    2.6Checkers

     這也是keepalived的一個重要功能,主要對後端real server的服務進行健康狀態檢測的,若是檢測到當前定義的檢測項dead了的話,經過下降主服務器的優先級來實現故障轉移.內置了tcp,http,ssl等檢測手段,固然,這些還不夠的話,能夠使用自定義腳本,

    2.7SMTP

     這個是郵件模塊,主要是當服務發生轉移或者其它定義的條件被觸發時通知管理員使用的.

    2.8 System Call

      自定義對服務檢測的腳本

  3. keepalived+nginx(配置以下),ngxinngxin自行定義

    master:


    ! Configuration File for keepalived


    global_defs {  #全局配置段

       notification_email {

         acassen@firewall.loc

         failover@firewall.loc

         sysadmin@firewall.loc

       }

       notification_email_from Alexandre.Cassen@firewall.loc

       smtp_server 127.0.0.1

       smtp_connect_timeout 30

       router_id LVS_DEVEL

    }

    vrrp_script check_down {  #經過檢測nginx服務是否在線,動態調整優先級

      script "`killall -0 nginx ` &> /dev/null && exit 0 || exit 1"

      interval 1

      weight -2

    }


    vrrp_instance VI_1 {

        state MASTER

        interface eth0

        virtual_router_id 51

        priority 100 #master進程優先級

        advert_int 1 #檢測時長間隔

        authentication {

            auth_type ldf #和backup的驗證機制

            auth_pass 1212

        }

        virtual_ipaddress {

            192.168.128.222 #vip

        }

        track_script { #追蹤上面定義的檢測腳本名

          check_down 

           }

    }

  4. backup


    ! Configuration File for keepalived


    global_defs {

       notification_email {

         acassen@firewall.loc

         failover@firewall.loc

         sysadmin@firewall.loc

       }

       notification_email_from Alexandre.Cassen@firewall.loc

       smtp_server 127.0.0.1

       smtp_connect_timeout 30

       router_id LVS_DEVEL

    }

    vrrp_script check_down {

      script "`killall -0 nginx ` &> /dev/null && exit 0 || exit 1"

      interval 1

      weight -2

    }


    vrrp_instance VI_1 {

        state BACKUP #backup

        interface eth0

        virtual_router_id 51 #虛擬mac地址,不能超過255

        priority 99 #backup優先級

        advert_int 1

        authentication {

            auth_type ldf

            auth_pass 1212

        }

        virtual_ipaddress {

            192.168.128.222

        }

        track_script {

          check_down

           }

    }

相關文章
相關標籤/搜索