【IT老齊075】高可用架構避免單點經典方案Keepalived+VIP

Faetbwac發表於2024-03-26

【IT老齊075】高可用架構避免單點經典方案Keepalived+VIP

規避單點是高可用架構設定最基本的考量

1711433111956

概念

Keepalived

Keepalived是Linux輕量級別的高可用解決方案
Keepalived主要是透過虛擬路由幾餘 (VRRP) 來實現高可用功能,Keepalived部署和使用非常的簡單,所有配置只需要一個配置檔案即可以完成
虛擬路由元餘協議(Virtual Router Redundancy Protocol,簡稱VRRP)是由IETF提出的解決區域網中配置靜態閘道器出現單點失效現象的路由協議

VIP

VIP(虛擬IP)是虛擬的IP,與實際網路卡繫結的的IP地址不同,VIP在內網中被動態的對映到不同的MAC地址上,也就是對映到不同的機器裝置上,Keepalived透過“心跳機制”監測伺服器狀態,Master主節點當機則自動將“IP漂移”到Backup備機上實現高可用

配置檔案

主機和備機只有狀態和優先順序不同

1711433353811

故障轉移

如果是Keepalived自身產生問題Master無法傳送心跳包,Backup自動升級為Master,產生IP漂移繼續提供服務

1711434345408

當Master恢復後,Keepalived自動IP漂移回原Master。新Master自動降級回backup

1711434443776

健康檢查

1711434560519

Nginx指令碼

#!/bin/bash
#檢查nginx的pid檔案是否存在或者檢查埠
NGINXPID="/usr/install/nginx/logs/nginx.pid'
if [ ! -f $NGINXPID ];then
    killall keepalived
fi

配置

vrrp_script check_nginx {
    #nginx服務檢查指令碼
    script "/etc/keepalived/nginx_check.sh"
    interval 2 #觸發間隔
    weight 1 #權重
}
vrrp_instance VI_1 (
    state MASTER
    interface ens33
    virtual_router_id 51
    #優先順序 (主高於備)
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    track_script {
        check_nginx
    }
    virtual ipaddress {
        192.168.237.5/24
    }
}

互為主備

1711435802480

非搶佔模式

配置檔案新增 nopreempt,使得預設的主服務在掉線再恢復後不搶佔備機的服務,減少ip漂移

腦裂

1711436201075

  • 禁止 pkill -9 keepalived,使用 pkill keepalived正常結束,正確回收虛擬ip
  • 解決網路問題後 systemctl restart network
  • 提高區域網可用性

相關文章