快速掌握keepalived

2023-10-14 06:01:11

轉載請註明出處:

  Keepalived是一個基於VRRP(虛擬路由冗餘協定)的開源軟體,用於在Linux系統上實現高可用性和負載均衡。它的主要功能是通過多臺伺服器之間的共同作業,確保在其中一臺伺服器發生故障時,另一臺伺服器可以接管其功能,並繼續提供服務,從而實現系統的高可用性。

常用功能:

  1. 虛擬IP(Virtual IP): Keepalived通過設定一個虛擬IP地址,將其繫結到多個伺服器上,使得這些伺服器可以共用一個IP地址。當主伺服器發生故障時,備份伺服器會接管該虛擬IP地址並繼續提供服務。

  2. VRRP:Keepalived使用VRRP協定來實現伺服器之間的冗餘備份。VRRP協定定義了伺服器之間的選舉機制,主伺服器傳送心跳包以表明自己的存活狀態,備份伺服器監聽主伺服器的心跳包,一旦主伺服器失去響應,備份伺服器會接管其角色。

  3. 健康檢查(Health Checks): Keepalived可以週期性地對伺服器進行健康檢查,例如檢查伺服器上的某個埠是否正常執行,以確定伺服器的狀態。如果檢測到故障,Keepalived可以自動觸發故障轉移。

設定範例說明:

  以下是一個簡單的Keepalived設定範例,假設有兩臺伺服器:Server A(IP地址為192.168.1.10)和Server B(IP地址為192.168.1.11),要實現故障轉移和負載均衡。

  在Server A上的組態檔keepalived.conf

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER  # 主伺服器設定為MASTER
    interface eth0  # 使用的網路介面
    virtual_router_id 51  # 虛擬路由ID,用於標識VRRP組
    priority 100  # 主伺服器的優先順序較高
    advert_int 1  # 傳送心跳包的時間間隔
    authentication {
        auth_type PASS
        auth_pass password  # 驗證密碼
    }
    virtual_ipaddress {
        192.168.1.100  # 虛擬IP地址
    }
}

virtual_server 192.168.1.100 80 {  # 定義虛擬伺服器
    delay_loop 6  # 檢查伺服器的時間間隔
    lb_algo rr  # 負載均衡演演算法,此處使用輪詢演演算法
    lb_kind NAT  # 負載均衡方式,此處使用NAT模式
    persistence_timeout 50  # 連線保持時間
    protocol TCP  # 使用TCP協定
}

  在Server B上的組態檔keepalived.conf與Server A相似,只需修改以下幾行:

vrrp_instance VI_1 {
    state BACKUP  # 備份伺服器設定為BACKUP
    priority 90  # 備份伺服器的優先順序較低
}

  引數說明:

  • auth_type: 這個設定項指定了身份驗證的型別。在範例中,PASS表示使用基於密碼的身份驗證。還可以選擇其他選項,如AH(基於身份驗證頭)或PASSAH(同時使用密碼和身份驗證頭)等。
  • auth_pass: 這個設定項指定了用於身份驗證的密碼。在範例中,將password替換為您要使用的實際密碼。

  使用這個設定,當兩個執行keepalived的主機之間建立VRRP通訊時,它們將相互驗證提供的身份驗證資訊是否匹配。如果身份驗證資訊不匹配,通訊將被拒絕,並且無法建立故障轉移。

  在以上設定中,Server A被設定為主伺服器(MASTER)並具有較高的優先順序,Server B被設定為備份伺服器(BACKUP)並具有較低的優先順序。另外,虛擬IP地址被定義為192.168.1.100,並且將請求分發到兩臺伺服器上的埠80。且虛擬ip 也可以通過

  當主伺服器(Server A)失去響應時,備份伺服器(Server B)會自動接管虛擬IP地址,從而實現故障轉移和高可用性。同時,請求會通過負載均衡演演算法分發到兩臺伺服器上,實現了負載均衡。