日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

keepalived配置文件详解   ​

發布時間:2024/4/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keepalived配置文件详解   ​ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

keepalived配置文件詳解????

????keepalived配置文件分為三個部分:全局配置(Globals configurations)、vrrp配置(VRRP configuration)、 LVS配置(LVS configuration),針對這三部分對keepalived配置文件進行解析。

1、全局配置

全局配置分為2個子塊:Global definitions與Static routes。

(1)、Global definitions

主要要是配置故障發生時的通知對象以及機器標識

global_defs{??????????????????????

??? notification_email {???????????

?????? <EMAIL ADDRESS>?????????????

?????? <EMAIL ADDRESS>

?????? ...

??? }

??? notification_email_from <EMAILADDRESS>

??? smtp_server <IP ADDRESS>??????????????

??? smtp_connect_timeout <INTEGER>????????????????????????????????????????????????

??? router_id <STRING>?????????????????????

}

notification_email:接收告警通知的郵箱,可以設置多個。

notification_email_fromemail:告警郵件從那個郵箱發出。

smtp_server:發送告警郵件的SMTP服務器地址。

smtp_connect_timeout:連接SMTP服務器超時時間。

router_id: #運行keepalived的機器的路由標識,主備機一致。

(2)、Static addresses

static_ipaddress和static_routes用來給服務器配置靜態的IP地址/路由。如果你的機器上已經配置了IP和路由,那么這兩個區域可以不用配置。

一般情況下你的機器都會有IP地址和路由信息的,因此沒必要再在這兩個區域配置。

語法如下:

static_ipaddress{?????????

??? <IP ADDRESS>/<MASK> brd <IPADDRESS> dev <STRING> scope <SCOPE>

??? <IP ADDRESS>/<MASK> brd <IPADDRESS> dev <STRING> scope <SCOPE>

}

static_routes{????????????????????????

??? src <IP ADDRESS> [to] <IPADDRESS>/<MASK> via|gw <IP ADDRESS> dev <STRING> scope<SCOPE> table <TABLE-ID> # to is optional

??? src <IP ADDRESS> [to] <IPADDRESS>/<MASK> via|gw <IP ADDRESS> dev <STRING> scope<SCOPE> table <TABLE-ID> # to is optional

??? src <IP ADDRESS> [to] <IPADDRESS>/<MASK> via|gw <IP ADDRESS> or <IP ADDRESS> dev<STRING> scope <SCOPE> table <TABLE-ID> # will use multipathroute

??? blackhole <IP ADDRESS>[/<MASK>]

}

備注:以上兩部份中的SCOPE可以指定的值為:site、link、host、nowhere、global。

如下為靜態地址與靜態路由配置示例:

示例1:

static_ipaddress{

??? 192.168.200.16 dev eth0 scope link

??? 192.168.200.17 dev eth1 scope link

??? 192.168.200.18 dev eth2

}

示例2:

static_routes{

??? src 192.168.100.1 192.168.209.0/24 via192.168.200.254 dev eth0

??? 192.168.210.0/24 via 192.168.200.254 deveth0

??? 192.168.211.0/24 via 192.168.200.254 deveth0

??? 192.168.212.0/24 dev eth3 scope site

??? 192.168.213.0/24 dev eth1 scope link

}

2、VRRP配置

VRRP configuration配置是keepalive實現HA部分重要內容,同樣也分為VRRP scripts、VRRP synchronization group、VRRP instance三個子塊實現。

(1)、VRRP scripts

vrrp_script <STRING> {????????? # vrrp_script與track_script結合使用,<STRING>與track_script中<STRING>值設置為相同。

script <QUOTED_STRING>?????#監控腳本或者監控命令。

interval<INTEGER>????????? #腳本運行時間間隔。

weight <INTEGER:-254..254>?#設置weight值,取值范圍-254-254。keepalived會定時執行腳本并對腳本執行的結果進行分析,動態調整vrrp_instance的優先級。

??? fall <INTEGER>????????????? #運行失敗指定次數后發生切換。

??? rise <INTEGER>??????????? ??#運行成功指定次數后不發生切換。

}

(2)、VRRP synchronization group

vrrp_rsync_group用來定義vrrp_intance組,使得這個組內成員動作一致。舉個例子來說明其功能:兩個vrrp_instance同屬于一個vrrp_rsync_group,那么其中一個vrrp_instance發生故障切換時,另一個vrrp_instance也會跟著切換(即使這個instance沒有發生故障)。

vrrp_sync_group <STRING>{ #vrrp_sync_group組名。

group {???????? ??????????????

????? <STRING>????? #指定加入vrrp_sync_group組的VRRP_Instance。

????? <STRING> ? ??? ? ? ? ? ?

}

notify_master <STRING>|<QUOTED-STRING> #表示切換為master時所執行的腳本。

notify_backup <STRING>|<QUOTED-STRING> #表示切換為backup時所執行的腳本。

notify_fault <STRING>|<QUOTED-STRING>? #表示切換為fault時所執行的腳本。

notify <STRING>|<QUOTED-STRING>??????? #表示任何一狀態切換時都會調用該腳本,并且該腳本在以上三個腳本執行完成之后進行調用,keepalived會自動傳遞4個參數。

??? $1 = A stringindicating whether it's a "GROUP" or an "INSTANCE"

??? $2 = The name of said groupor instance

??? $3 = The state it'stransitioning to ("MASTER", "BACKUP" or "FAULT")

??? $4 = The priorityvalue

??? $1 and $3 are ALWAYSsent in uppercase, and the possible strings sent are the

??? same ones listed above("GROUP"/"INSTANCE", "MASTER"/"BACKUP"/"FAULT").

smtp_alert? #使用global_defs里面定義的郵件地址和smtp服務器在切換后發送郵件通知。

}

(3)、VRRP instance

??? vrrp_instance用來定義對外提供服務的VIP區域及其相關屬性。

常用參數說明:

use_vmac:使用VRRP的虛擬MAC地址。

state MASTER|BACKUP:設置節點狀態。keepalived啟動時會將priority比較大的節點選舉為MASTER。

interface <STRING>:用于HA檢測與對外提供服務的網絡的接口。

track_interface :監控指定的網卡,如果任何一個不通就會切換到FALT狀態。

track_script:與vrrp_script參數一同使用,設定監控服務的腳本,<STRING>與vrrp_script參數中的名稱相同。

mcast_src_ip發送多播包的地址,如果不設置,默認使用綁定的網卡的primary IP。

dont_track_primary忽略vrrp的interface錯誤,默認不設置。

lvs_sync_daemon_interface <STRING>:負載均衡器之間的監控接口,類似于HA HeartBeat的心跳線。但它的機制優于Heartbeat,因為它沒有“裂腦”這個問題,它是以優先級這個機制來規避這個麻煩的。.

garp_master_delay <INTEGER>:當切為主狀態后多久更新ARP緩存,默認為5秒。

virtual_router_id <INTEGER-0..255>:虛擬路由標識,主機與備機保持一致。

priority <INTEGER-0..255>:優先級,主機與備機必須不同。

advert_int <INTEGER>:同步通知間隔,MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位為秒。

authentication {??????????? ?????????????????

??????? auth_type PASS|AH:認證類型為PASS或AH,推薦使用PASS,主備必須使用相同認證方式及密碼才可以通信。

??????? auth_pass<STRING>:設置認證密碼。密碼最多8位。

??? }

virtual_ipaddress:漂移地址設置,可以設置多個。

virtual_routes : 虛擬路由,當IP漂過來之后需要添加的路由信息。

nopreempt:功能類似于heartbeat的auto_failback,設置不自動切回,該參數只能設置在state為backup的服務器上,且優先權必須高于其他節點的服務器上。

preempt_delay: 搶占延時,默認為0。

notify_master <STRING>|<QUOTED-STRING>:與vrrp_sync_group中相同。

notify_backup <STRING>|<QUOTED-STRING>:與vrrp_sync_group中相同。

notify_fault <STRING>|<QUOTED-STRING>: 與vrrp_sync_group中相同。

notify_stop <STRING>|<QUOTED-STRING>: ?停止vrrp時,執行指定的腳本。

notify <STRING>|<QUOTED-STRING>: ? ? ? 與vrrp_sync_group中相同。

smtp_alert:與vrrp_sync_group中相同。

3、LVS配置

LVS的配置包括2部分:虛擬主機組(virtual server group)和虛擬主機(virtual server)。虛擬主機組一般用不到,這里不介紹。以下為虛擬主機常用參數介紹。

virtual_server<IP ADDRESS> <PORT> { ? ? # 虛擬服務器設置標識,指定虛擬ip與端口,ip地址與端口號之間用空格隔開。

??? delay_loop <INTEGER> ? ? ? ? ? ? ? ?# 延遲輪詢時間

??? lvs_sched rr|wrr|lc|wlc|lblc|sh|dh? # LVS調度算法

??? ops???????????????? #Apply One-Packet-Scheduling (only for UDP),不常用。

??? lvs_method NAT|DR|TUN ? ? ? ? ? ? ? # LVS調度類型

??? persistence_timeout <INTEGER>?? ??? # 會話保持時間,單位為秒。

??? persistence_granularity <NETMASK>?? # 此選項是配合persistence_timeout,后面跟的值是子網掩碼,表示持久連接的粒度。

??? protocol TCP ? ? ? ? ? ? ? ? ? ? ? ?# 指定協議

??? ha_suspend ? ? ? ? ? ? ? ? ? ? ? ? ?#節點狀態從MASTER到BACKUP狀態切換時,暫不啟用real_server健康檢查。

??? virtualhost <STRING> ? ? ? ? ? ? ? ?# HTTP_GET做健康檢查時,檢查的Web服務器的虛擬主機。

??? sorry_server <IP ADDRESS><PORT> ? ? # 備用機,所有的real server失效后啟用。??

????real_server健康檢查方法有HTTP_GET|SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK多種,以下分別做以介紹如何使用。

?real_server <IP ADDRESS> <PORT> {? # 定義realserver

???? weight <INTEGER> ? ?# 用來配置real server節點的權值,數字越大權值越高。默認為1,0為失效。?

???? inhibit_on_failure ?# 服務器健康檢查失敗時,將其weight設置為0,而不是直接從IPVS里面刪除。

??? ?notify_up <STRING>|<QUOTED-STRING>?? # 在檢測到real server節點服務up狀態后執行腳本。

???? notify_down<STRING>|<QUOTED-STRING> ?# 在檢測到real server節點服務down狀態后執行腳本。

?????? HTTP_GET|SSL_GET {??

??????????? url {?????? ??????? # HTTP/SSL檢查的URL,這里可以指定多個URL。

????????????? path <STRING>???? # 詳細的URL路徑。

????????????? digest <STRING>?????? # SSL檢查后的摘要信息。

????????????? status_code <INTEGER> # HTTP檢查的返回狀態碼,一般為200.

??????????? }??????????????????????

??????????? url {

????????????? path <STRING>

????????????? digest <STRING>

????????????? status_code <INTEGER>

??????????? }

? ? ?connect_ip <IP ADDRESS> # 健康檢查連接的ip地址,如果不指定默認為realserver指定的IP。

???? connect_port <PORT>???? # 健康檢查的端口,如果不指定默認為real server指定的端口。

??? ?bindto <IP ADDRESS>???? # 如果本機有多個網卡配置多個地址,那么通過此地址來發送請求對服務進行健康檢查。

???? bind_port <PORT>??????? # 通過本機此端口來發送請求對服務進行健康檢查。

???? connect_timeout <INTEGER>?? # 連接超時時間

???? fwmark <INTEGER>??????? # fwmark to set on socket (SO_MARK)

???? nb_get_retry <INTEGER>? # 重試次數。

???? delay_before_retry <INTEGER> # 重試間隔時間(秒)。

???? warmup <INTEGER>??????? # 如果后端有眾多realserver時,如果按精確時間發送檢測報文,可能會造成本機的網絡堵塞,因此可以使用warmup?指定一個時間,表示將發送檢測報文的精確時間差開一點的時間,以免造成本機堵塞。

??????? }

??? }

??? real_server <IP ADDRESS> <PORT>{?? # 同上

??????? weight <INTEGER>??????? # 同上

??????? inhibit_on_failure????? # 同上

??????? notify_up<STRING>|<QUOTED-STRING> # 同上

??????? notify_down<STRING>|<QUOTED-STRING> # 同上

?

??????? TCP_CHECK {

??????????? connect_ip <IP ADDRESS> # IPaddress to connect

??????????? connect_port <PORT>???? # TCP port to connect

??????????? bindto <IP ADDRESS>???? # IP address to bind to

??????????? bind_port <PORT>??????? # TCP port to bind to

??????????? connect_timeout<INTEGER>?? # Timeout connection

??????????? fwmark <INTEGER>??????? # fwmark to set on socket (SO_MARK)

??????????? warmup <INTEGER>??????? # random delay for maximum N seconds

??????? }

??? }

??? real_server <IP ADDRESS> <PORT>{?? # 同上

??? ????weight <INTEGER>??????? ???????# 同上

??????? inhibit_on_failure????? ???????# 同上

??????? notify_up<STRING>|<QUOTED-STRING> ??# 同上

??????? notify_down<STRING>|<QUOTED-STRING> # 同上

?

??????? SMTP_CHECK {?????????????????? ?

??????????? connect_ip <IP ADDRESS>?? ??#Optional IP address to connect to

??????????? connect_port <PORT>???????? # Optional port to connect to

??????????? bindto <IP ADDRESS>???????? # Optional interface to use tooriginate the connection

??????????? bind_port <PORT>??????????? # Optional source port to originatethe connection from

??????????? connect_timeout<INTEGER>?? # Optional per-hostconnection timeout.

??????? ????fwmark <INTEGER>????????? # Optional fwmark to mark alloutgoing checker pakets with

??????????? host {???????????????? ?????# Optional additional host/port to check

??????????????? connect_ip <IP ADDRESS> #IP address to connect

??????????????? connect_port <PORT>???? # TCP port to connect

??????????????? bindto <IP ADDRESS>???? # IP address to bind to

??????????????? bind_port <PORT>??????? # TCP port to bind to

??????????????? connect_timeout<INTEGER>?? # Timeout connection

??????????????? fwmark <INTEGER>??????? # fwmark to set on socket (SO_MARK)

??????????? }

??????????? host {

??????????????? connect_ip <IP ADDRESS> #IP address to connect

??????????????? connect_port <PORT>???? # TCP port to connect

??????????????? bindto <IP ADDRESS>???? # IP address to bind to

??????????????? bind_port <PORT>??????? # TCP port to bind to

??????????????? connect_timeout<INTEGER>?? # Timeout connection

??????????????? fwmark <INTEGER>??????? # fwmark to set on socket (SO_MARK)

??????????? }

??????????? connect_timeout<INTEGER>? # Connection andread/write timeout

??????????? warmup <INTEGER>??????? # random delay for maximum N seconds

??????????? retry <INTEGER>???????????? # Number of times to retry afailed check

??????????? delay_before_retry <INTEGER># Delay in seconds before retrying

??????????? helo_name<STRING>|<QUOTED-STRING> # Host to use for the HELO request

??????? }

??? }

??? real_server <IP ADDRESS> <PORT>{?? # 同上

??????? weight <INTEGER>??????? ???????# 同上

??????? inhibit_on_failure????? ???????# 同上

??????? notify_up<STRING>|<QUOTED-STRING> ??# 同上

??????? notify_down <STRING>|<QUOTED-STRING># 同上

?

??????? MISC_CHECK {???????????????

??????????? misc_path<STRING>|<QUOTED-STRING>? # 外部執行腳本。

??????????? misc_timeout <INTEGER>????? # 腳本執行超時時間。

??????????? warmup <INTEGER>??????? # random delay for maximum N seconds

?

??????????? # If set, exit code from healthcheckeris used

??????????? # to dynamically adjust the weightas follows:

??????????? #??exit status 0: svc check success, weight

??????????? #???? unchanged.

??????????? #??exit status 1: svc check failed.

??????????? #??exit status 2-255: svc check success, weight

??????????? #???? changed to 2 less than exit status.

??????????? #??(for example: exit status of 255 would set

??????????? #???? weight to 253)

??????????? misc_dynamic

??????? }

??? }

}

轉載于:https://blog.51cto.com/369day/1729528

總結

以上是生活随笔為你收集整理的keepalived配置文件详解   ​的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。