Keepalived設定檔詳解

來源:互聯網
上載者:User

標籤:設定檔

Keepalived的全域配置詳解

Keepalived的設定檔都是以塊(block)的形式組織的,每個塊的內容都包含在{}中,以“#”和“!”開頭的行都是注釋。全域配置就是對整個Keepalived都生效的配置

! Configuration File for keepalived

global_defs {

   notification_email {

     [email protected]

     [email protected]

   }

   notification_email_from [email protected]

   smtp_server 192.168.1.100

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

notification_email用於設定警示郵件地址,可以設定多個,每行一個。注意,如果要開啟郵件警示,需要開啟原生Sendmail服務。

notification_email_from用於設定郵件的發送地址。

smtp_server用於設定郵件的smtp server地址。

smtp_connect_timeout用於設定串連smtp server的逾時時間。

router_id表示運行Keepalived伺服器的一個標識,是發郵件時顯示在郵件主題中的資訊。

Keepalived的VRRPD配置詳解

VRRPD配置又可分為VRRP同步群組配置和VRRP執行個體配置。

下面是兩個同步群組的配置範例:

vrrp_sync_group G1 {

  group {

    VI_1

    VI_2

    VI_5

  }

  notify_backup "/usr/local/bin/vrrp.back arg1 arg2"

  notify_master "/usr/local/bin/vrrp.mast arg1 arg2"

  notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"

}

vrrp_sync_group G2 {

  group {

    VI_3

    VI_4

  }

}

notify_master:指定當Keepalived進入Master狀態時要執行的指令碼,這個指令碼可以是一個狀態警示指令碼,也可以是一個服務管理指令碼。Keepalived允許指令碼傳入參數,因此靈活性很強。

notify_backup:指定當Keepalived進入Backup狀態時要執行的指令碼,同理,這個指令碼可以是一個狀態警示指令碼,也可以是一個服務管理指令碼。

notify_fault:指定當Keepalived進入Fault狀態時要執行的指令碼,指令碼功能與前兩個類似。

notify_stop:指定當Keepalived程式終止時需要執行的指令碼。

VRRP執行個體的配置

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    mcast_src_ip <IPADDR>

    garp_master_delay  10

track_interface {

eth0

eth1

}

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     #<IPADDR>/<MASK>  brd  <IPADDR>  dev <STRING>  scope <SCOPT>  label <LABEL>

        192.168.200.16

        192.168.200.17 dev eth1

        192.168.200.18 dev eth2

    }

    virtual_routes {

#src  <IPADDR>  [to] <IPADDR>/<MASK>  via|gw  <IPADDR>  dev <STRING>  scope <SCOPE>

        src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1

        192.168.110.0/24 via 192.168.200.254 dev eth1

        192.168.111.0/24 dev eth2

        192.168.112.0/24 via 192.168.100.254

        192.168.113.0/24 via 192.168.100.252 or 192.168.100.253

}

nopreempt

preemtp_delay  300

}

vrrp_instance是VRRP執行個體開始的標識,後跟VRRP執行個體名稱。

state用於指定Keepalived的角色,MASTER表示此主機是主伺服器,BACKUP表示此主機是待命伺服器。

interface用於指定HA監測網路的介面。

virtual_router_id是虛擬路由辨別碼,這個標識是一個數字,同一個vrrp執行個體使用唯一的標識,即在同一個vrrp_instance下,MASTER和BACKUP必須是一致的。

priority用於定義節點優先順序,數字越大表示節點的優先順序就越高。在一個vrrp_instance下,MASTER的優先順序必須大於BACKUP的優先順序。

advert_int用於設定MASTER與BACKUP主機之間同步檢查的時間間隔,單位是秒。

mcast_src_ip用於設定發送多播包的地址,如果不設定,將使用綁定的網卡所對應的IP地址。

garp_master_delay用於設定在切換到Master狀態後延時進行Gratuitous arp請求的時間。

track_interface用於設定一些額外的網路監控介面,其中任何一個網路介面出現故障,Keepalived都會進入FAULT狀態。

authentication用於設定節點間通訊驗證類型和密碼,驗證類型主要有PASS和AH兩種,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通訊。

virtual_ipaddress用於設定虛擬IP地址(VIP),又叫做漂移IP地址。可以設定多個虛擬IP地址,每行一個。可以寫成 “192.168.16.189/24 dev eth1” 這樣的形式

virtual_routes和virtual_ipaddress段一樣,用來設定在切換時添加或刪除相關路由資訊。通過“ip route”命令可以查看路由資訊是否添加成功,也可以通過notify_master選項來代替virtual_routes實現相同的功能。

nopreempt設定的是高可用叢集中的不搶佔功能。在使用不搶佔時,只能在“state”狀態為“BACKUP”的節點上設定,而且這個節點的優先順序必須高於其他節點。

preemtp_delay用於設定搶佔的延時時間,單位是秒。

vrrp_script check_mysqld
{
     script "killall -0 mysqld"
     interval 2
}
track_script
{
     check_mysqld
}

script "killall -0 mysqld"用於檢測mysqld服務是否正常啟動,0代表正常、1代表異常

interval 2用於設定檢查的時間間隔

check_mysqld返回檢查的值

Keepalived的LVS配置詳解

LVS段的配置以“virtual_server”作為開始標識,此段內容有兩部分組成,分別是real_server段和健康檢測段。下面是virtual_server段常用選項的一個配置樣本:

virtual_server 192.168.12.200 80 {      

    delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 50

    persistence_granularity  <NETMASK>

protocol TCP

ha_suspend

virtualhost  <string>

sorry_server <IPADDR>  <PORT>

virtual_server:設定虛擬伺服器的開始,後面跟虛擬IP地址和服務連接埠,IP與連接埠之間用空格隔開。

delay_loop:設定健全狀態檢查的時間間隔,單位是秒。

lb_algo:設定負載調度演算法,可用的調度演算法有rr、wrr、lc、wlc、lblc、sh、dh等,常用的演算法有rr和wlc。

lb_kind:設定LVS實現負載平衡的機制,有NAT、TUN和DR三個模式可選。

persistence_timeout:會話保持時間,單位是秒。

persistence_granularity:此選項是配合persistence_timeout的,後面跟的值是子網路遮罩,表示持久串連的粒度。預設是255.255.255.255,也就是一個單獨的用戶端IP。如果將掩碼修改為255.255.255.0,那麼用戶端IP所在的整個網段的請求都會分配到同一個real server上。

protocol:指定轉寄協議類型,有TCP和UDP兩種可選。

ha_suspend:節點狀態從Master到Backup切換時,暫不啟用real server節點的健全狀態檢查。

virtualhost:在通過HTTP_GET/ SSL_GET做健康檢測時,指定的Web伺服器的虛擬機器主機地址。

sorry_server:相當於一個備用節點,在所有real server失效後,這個備用節點會啟用。

real_server段的一個配置樣本:

real_server 192.168.12.132 80 {

weight 3

inhibit_on_failure

notify_up  <STRING> | <QUOTED-STRING>

notify_down <STRING> | <QUOTED-STRING>

}

real_server:是real_server段開始的標識,用來指定real server節點,後面跟的是real server的真實IP地址和連接埠,IP與連接埠之間用空格隔開。

weight:用來配置real server節點的權值。權值大小用數字表示,數字越大,權值越高。設定權值的大小可以為不同效能的伺服器分配不同的負載,為效能高的伺服器設定較高的權值,而為效能較低的伺服器設定相對較低的權值

inhibit_on_failure:表示在檢測到real server節點失效後,把它的“weight”值設定為0,而不是從IPVS中刪除。

notify_up:此選項與上面介紹過的notify_maser有相同的功能,後跟一個指令碼,表示在檢測到real server節點服務處於UP狀態後執行的指令碼。

notify_down:表示在檢測到real server節點服務處於DOWN狀態後執行的指令碼。

健康檢測段允許多種檢查方式,常見的有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK。

TCP_CHECK檢測方式樣本:
TCP_CHECK  {

            connect_port 80

            connect_timeout  3

            nb_get_retry  3

            delay_before_retry  3

        }

connect_port:健全狀態檢查的連接埠,如果無指定,預設是real_server指定的連接埠。

connect_timeout:表示無響應逾時時間,單位是秒,這裡是3秒逾時。

nb_get_retry:表示重試次數,這裡是3次。

delay_before_retry:表示稍候再試,這裡是間隔3秒。

HTTP_GET和SSL_GET檢測方式的樣本:
HTTP_GET |SSL_GET

          {

               url  {       

                         path  /index.html

                         digest  e6c271eb5f017f280cf97ec2f51b02d3

                         status_code   200

                     }

               connect_port 80

               bindto  192.168.12.80

               connect_timeout  3

               nb_get_retry  3

               delay_before_retry  2

          }

url:用來指定HTTP/SSL檢查的URL資訊,可以指定多個URL。

path:後跟詳細的URL路徑。

digest:SSL檢查後的摘要資訊,這些摘要資訊可以通過genhash命令工具擷取。例如:genhash -s 192.168.12.80 -p 80 -u /index.html。

status_code:指定HTTP檢查返回正常狀態代碼的類型,一般是200。

bindto:表示通過此地址來發送請求對伺服器進行健全狀態檢查。

MISC_CHECK檢測方式的樣本:

     MISC_CHECK

     {

          misc_path  /usr/local/bin/script.sh

          misc_timeout  5

          ! misc_dynamic

     }

misc_path:用來指定一個外部程式或者一個指令碼路徑。

misc_timeout:設定執行指令碼的逾時時間。

misc_dynamic:表示是否啟用動態調整real server節點權重,“!misc_dynamic”表示不啟用,相反則表示啟用。

Keepalived設定檔詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.