當前位置:
首頁 > 最新 > keepalived相關配置

keepalived相關配置

本公眾號內容大多由平時操作整理記錄,如果有錯誤的地方歡迎留言指正


Keepalived

keepalived起初是為LVS專門設計服務節點狀態的高可用工具,它可以以TCP,HTTP機制檢測每個服務節點的狀態,如果服務節點出現異常,或工作出現故障,keepalived可以自動地將故障節點下線並轉移故障,當故障節點恢復上線後,也可以自動將服務添加到集群中。

keepalived工作原理

keepalived工作原理是基於VRRP協議實現的,作用是解決靜態路由出現的單點故障問題,通過vrrp實現VIP地址的流動實現高可用性。結合LVS工作時,VIP地址在哪個節點,就會生成ipvs規則(在keepalived配置文件中定義),如果結合nginx或haproxy工作,同樣可以可以實現故障的轉移和後端服務的健康狀態檢測。

非常好的一張圖,網上找的

keepalived的核心功能:

為LVS提供自動化配置與高可用功能

為haproxy與nginx提供負載的高可用

對後端服務進行健康狀態檢測TCP,HTTP,SSL

自動上線或剔除故障節點

高可用集群配置的前提

各節點時間必須同步;ntp, chrony

確保iptables及selinux不會成為阻礙

各節點之間可通過主機名互相通信(對KA並非必須);建議使用/etc/hosts文件實現

確保各節點的用於集群服務的介面支持MULTICAST通信;D類:224-239;


keepalived配置文件分以下幾個段塊


**global_defs { … } 是全局定義段落

global段主要配置收發郵件的收件人與發送人等信息,通常情況下,伺服器由監控系統監控,所以這裡可以不去修改,還有比較關鍵的兩個參數如下:

vrrp_iptables : 禁止keepalived啟動後自動生成iptables規則,該規則會阻擋正常訪問請求

vrrp_mcast_group4 224.17.17.17 : 定義keepalived主備間通告狀態信息的組播地址,通常為224開頭的地址段


vrrp_instance是虛擬路由實例的配置段,用來定義當前keepalived節點的運行角色為主或是備,定義當前節點的優先順序等等信息,該段的詳細的參數結合實例配置如下:

節點狀態改變可觸發的執行腳本指令

當keepalived節點狀態改變時,可以利用腳本功能執行一些相關的操作,可以使用notify_master,notify_backup,notify_fault等指令定義:

定義通知腳本:

notify_master |:當前節點成為主節點時觸發的腳本;

notify_backup |:當前節點轉為備節點時觸發的腳本;

notify_fault |:當前節點轉為「失敗」狀態時觸發的腳本;

notify |:通用格式的通知觸發機制,一個腳本可完成以上三種狀態的轉換時的通知;

示例:


virtual_server段是定義虛擬伺服器內容,次段中還包含real_server段,virtual_server是定義LVS工作模式及調度演算法等信息,real_server段則是定義後端的真實伺服器。結構如下:

virtual_server段常用參數

delay_loop

:健康狀態檢測時間間隔

lb_algo rr|wrr|lc|wlc|lblc|sh|dh:定義調度方法;

lb_kind NAT|DR|TUN:LVS集群的類型;

persistence_timeout

:持久連接時長,(這裡使用持久連接會有影響,建議不要開啟)

protocol TCP:服務協議,僅支持TCP;

sorry_server

:備用伺服器地址,當後端所有主機不可用時,提供提示信息,通常為本機

配置段示例

real_server段常用參數

real_server定義台後端主機

weight : 定義後端主機權重

notify_up | :後端主機上線時觸發執行的腳本

notify_down |:後端主機下線觸發執行的腳本

HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK { … } : 定義後端主機的健康狀態檢測方法

real_server主機健康狀態檢查

HTTP_GET|SSL_GET:應用層檢測

TCP_CHECK :傳輸層檢測

TCP_CHECK

其他檢測方式:注意,下面的檢測方式不是在HTTP_CHECK或TCP_CHECK檢測段中,單獨定義在real_server段中

connect_timeout :連接請求的超時時長

nb_get_retry :連接失敗重試次數

delay_before_retry :重試的時間間隔;

connect_ip :向當前RS的哪個IP地址發起健康狀態檢測請求

connect_port :向當前RS的哪個PORT發起健康狀態檢測請求

bindto :發出健康狀態檢測請求時使用的源地址;

bind_port :發出健康狀態檢測請求時使用的源埠;

real_server段配置示例


keepalived可以調用外部的輔助腳本進行資源監控,並根據監控的結果狀態能實現優先動態調整,這種方式在做高可用nginx或者haproxy時需要用到。

分兩步:(1) 先定義一個腳本;(2) 在vrrp_instance實例中調用此腳本;

要注意的是:vrrp_script不被任何配置段落包含,是一個獨立的配置段落,track_script則在vrrp_instance 實例中調用腳本

下面貼一個做nginx負載均衡高可用配置的示例:

注意:在上面的vrrp_script chk_down段中:

裡面調用的shell腳本指令使用到 『[ ]』 時最好使用/bin/bash 命令來執行,不同的版本可能無法直運行 這樣的判斷指令,但是keepalived也不報錯。

其他:可以使用 指令查看keepalived主備間的通告信息。

如下:

GIF

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux日記 的精彩文章:

Ansible自動部署nginx+keepalived高可用負載均衡
nginx記錄客戶端真實ip問題與日誌時間格式修改

TAG:Linux日記 |