一、簡介
Keepalived 是一個基於 VRRP 協議的高可用軟體,常用於負載均衡、高可用服務的實現。通過使用 Keepalived,可以實現在多個伺服器之間實現 IP 虛擬地址的切換,從而實現服務高可用。
本篇文章將對 Keepalived 的基礎使用、配置文件語法、狀態變遷、優先順序、權重以及實踐中的運用等方面進行詳細的介紹。
二、基礎使用
安裝 Keepalived 後,首先需要編輯配置文件 /etc/keepalived/keepalived.conf。下面是一份簡單的 keepalived.conf 配置:
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.33.111/24 } }
以上配置文件讓該伺服器處於 MASTER 狀態,虛擬路由器 ID 為 51,虛擬 IP 地址為 192.168.33.111。
三、配置文件語法
下面是 keepalived.conf 配置文件的語法規則:
- 語句必須以空格分隔,語句結尾不需要分號。
- 可以使用 # 開頭的注釋。
- 語句可以用花括弧括起來。
- 語句可以通過 include 指定其他配置文件。
- 語句不區分大小寫。
下面是一個簡單 keepalived.conf 文件的示例,包含了語法規則、注釋和語句:
global_defs { lvs_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER # 狀態:MASTER interface eth0 # 網卡介面名:eth0 virtual_router_id 51 # 虛擬路由器 ID:51 priority 100 # 優先順序:100 advert_int 1 # 廣告時間間隔:1s authentication { # 認證 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 虛擬 IP 地址列表 192.168.33.111/24 } }
四、狀態變遷
Keepalived 使用 VRRP 協議實現高可用,VRRP 協議定義了狀態的變遷規則。下面是 Keepalived 的狀態變遷示意圖:
(BACKUP) (MASTER) +-----------+ +-----------+ | | | | | | | | | initialize| | initialize| | state | (higher priority) | state | | | +--------> | +------------+ hello#1 | +-----------+ | | | | | | | | | track | | hello#2 | |interface_1| | | +---------------+ | down | | V | | | |--------+ | | +------------+ | | V | | | | |(higher priority) | | | | MASTER | preemption | | BACKUP | | || FAULT |<----------+ dead+--------+
Keepalived 有兩種節點狀態,MASTER 和 BACKUP,各個節點的狀態根據優先順序進行升降,當高優先順序節點失效時,低優先順序節點將成為 MASTER。
五、優先順序與權重
Keepalived 節點通過優先順序控制 MASTER/BACKUP 的切換,同時,可以通過權重更加靈活的控制狀態切換。下面是將優先順序與權重一起使用的示例:
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.33.111/24 } track_interface { eth1 } virtual_server 192.168.33.111 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.33.21 80 { weight 4 } real_server 192.168.33.22 80 { weight 6 } } }
以上配置文件中,節點狀態為 BACKUP,優先順序為 50。除了基本配置外,還配置了物理介面 eth1 的狀態跟蹤以及一個 VRRP 虛擬伺服器。
在 VRRP 虛擬伺服器中,使用了 real_server 指定了兩個實際的伺服器,通過 weight 控制權重分配。這樣可以使得實際伺服器之間負載分配更加靈活。
六、實踐運用
最後,將 Keepalived 用於實際生產環境時,需要注意以下幾點:
- Keepalived 和後端服務分離,不要將 Keepalived 的程序、配置文件以及狀態文件放置在後端服務所在的伺服器中
- Keepalived 配置文件撰寫要規範,包括第一次編寫時、後續修改時都需要進行仔細地測試
- 嘗試使用 Keepalived 提供的其他特性,如 VRRPv3、腳本檢查等等,以補充 Keepalived 的不足之處
七、結語
Keepalived 是一款非常好用的高可用軟體,它的功能強大,配置簡單,可以在實際生產環境中快速實現高可用服務。
原創文章,作者:DSWAY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334422.html