最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

keepalived?nopreempt的應(yīng)用場景及說明

 更新時(shí)間:2026年01月24日 10:49:16   作者:云計(jì)算-Security  
文章詳細(xì)介紹了keepalived高可用模式下`nopreempt`非搶占模式的應(yīng)用場景,并探討了不同配置下的VIP故障轉(zhuǎn)移行為,同時(shí),文章還解釋了`notify`腳本的作用,包括觸發(fā)時(shí)機(jī)和典型用途

背景

keepalived 高可用模式下 “nopreempt(非搶占模式)” 的應(yīng)用場景。

配置

環(huán)境

主節(jié)點(diǎn):

  • VIP:192.168.11.235
  • 主節(jié)點(diǎn)IP:192.168.11.201
  • 主節(jié)點(diǎn)心跳IP:172.16.11.11

備節(jié)點(diǎn):

  • 備節(jié)點(diǎn)IP:192.168.11.202
  • 備節(jié)點(diǎn)心跳IP:172.16.11.12

配置

主節(jié)點(diǎn):

! Configuration File for keepalived
  
global_defs {
   router_id arsen-master # 主備須唯一
}

vrrp_script chk_net {
    script "/data/keepalived/check/chk_net.sh"
    interval 15
    # weight 15 # 權(quán)重是否需要配置請看“實(shí)測”部分看你是屬于哪種場景
    fall 2
    rise 2
}
vrrp_script chk_acgw {
    script "/data/keepalived/check/chk_nginx.sh"
    interval 15
    # weight 15 # 權(quán)重是否需要配置請看“實(shí)測”部分看你是屬于哪種場景
    fall 2
    rise 2
}

vrrp_instance VI_1 { # vrrp實(shí)例名稱,可自定義
    state BACKUP  # 狀態(tài)(非搶占模式下主備保持一致,均為BACKUP)
    interface enp125s0f2 # 心跳網(wǎng)卡,VRRP探測網(wǎng)卡
    virtual_router_id 91 # 虛擬路由,主備保持一致
    priority 50 # 節(jié)點(diǎn)權(quán)重
    advert_int 1 # VRRP報(bào)文探測間隔(1秒)
    nopreempt # 配置非搶占
    unicast_src_ip 172.16.11.11 # 當(dāng)前節(jié)點(diǎn)心跳IP(即心跳網(wǎng)卡enp125s0f2的IP)
    unicast_peer {
        172.16.11.12 # 對端節(jié)點(diǎn)心跳IP
    }
    authentication { # VRRP報(bào)文認(rèn)證
        auth_type PASS # 認(rèn)證類型:密碼認(rèn)證
        auth_pass HelloArsen # 認(rèn)證密碼:HelloArsen
    }
    virtual_ipaddress { # 虛擬IP綁定
        192.168.11.235/24 dev enp125s0f0 # 指定VIP及綁定的物理網(wǎng)卡
    }
    track_script { # 腳本檢測(用于觸發(fā)故障轉(zhuǎn)移)
        chk_net # 網(wǎng)絡(luò)連通性檢測腳本
        chk_nginx # nginx服務(wù)健康狀態(tài)檢測腳本
    }
    notify /data/keepalived/notify/notify.sh # 看 notify 應(yīng)用部分
}

備節(jié)點(diǎn):

! Configuration File for keepalived
  
global_defs {
   router_id arsen-slave # 主備須唯一
}

vrrp_script chk_net {
    script "/data/keepalived/check/chk_net.sh"
    interval 15
    # weight 15 # 權(quán)重是否需要配置請看“實(shí)測”部分看你是屬于哪種場景
    fall 2
    rise 2
}
vrrp_script chk_acgw {
    script "/data/keepalived/check/chk_nginx.sh"
    interval 15
    # weight 15 # 權(quán)重是否需要配置請看“實(shí)測”部分看你是屬于哪種場景
    fall 2
    rise 2
}

vrrp_instance VI_1 {
    state BACKUP  # 狀態(tài)(非搶占模式下主備保持一致,均為BACKUP)
    interface enp125s0f2 # 心跳網(wǎng)卡,VRRP探測網(wǎng)卡
    virtual_router_id 91 # 虛擬路由,主備保持一致
    priority 50 # 節(jié)點(diǎn)權(quán)重
    advert_int 1 # VRRP報(bào)文探測間隔(1秒)
    nopreempt # 配置非搶占
    unicast_src_ip 172.16.11.12 # 當(dāng)前節(jié)點(diǎn)心跳IP(即心跳網(wǎng)卡enp125s0f2的IP)
    unicast_peer {
        172.16.11.11 # 對端節(jié)點(diǎn)心跳IP
    }
    authentication { # VRRP報(bào)文認(rèn)證
        auth_type PASS # 認(rèn)證類型:密碼認(rèn)證
        auth_pass HelloArsen # 認(rèn)證密碼:HelloArsen
    }
    virtual_ipaddress { # 虛擬IP綁定
        192.168.11.235/24 dev enp125s0f0 # 指定VIP及綁定的物理網(wǎng)卡
    }
    track_script { # 腳本檢測(用于觸發(fā)故障轉(zhuǎn)移)
        chk_net # 網(wǎng)絡(luò)連通性檢測腳本
        chk_nginx # nginx服務(wù)健康狀態(tài)檢測腳本
    }
    notify /data/keepalived/notify/notify.sh # 看 notify 應(yīng)用部分
}

實(shí)測

場景1

主備都設(shè)置 nopreempt,state 主為 MASTER 備為 BACKUP,且啟用 track_script 權(quán)重(正/負(fù)權(quán)重)。

這種場景下,即便是主的權(quán)重小于備的權(quán)重也是無法進(jìn)行 VIP 故障轉(zhuǎn)移,因?yàn)榇藭r(shí) nopreempt 和權(quán)重產(chǎn)生了沖突。

場景2

主備都設(shè)置 nopreempt,state 主為 MASTER 備為 BACKUP,且沒啟用 track_script 權(quán)重(正/負(fù)權(quán)重)。

這種場景下,會進(jìn)行 VIP 故障轉(zhuǎn)移,與權(quán)重?zé)o關(guān),主中 track_script 的服務(wù)恢復(fù)后(注意是監(jiān)測的所有服務(wù)都恢復(fù))VIP 自動轉(zhuǎn)移回來。

場景3

主備都設(shè)置 nopreempt,state 主備均為 BACKUP,且啟用 track_script 權(quán)重(正/負(fù)權(quán)重)。

這種場景下,即便是主的權(quán)重小于備的權(quán)重也是無法進(jìn)行 VIP 故障轉(zhuǎn)移,因?yàn)榇藭r(shí) nopreempt 和權(quán)重產(chǎn)生了沖突。

場景4

主備都設(shè)置 nopreempt,state 主備均為 BACKUP,且沒啟用 track_script 權(quán)重(正/負(fù)權(quán)重)。

這種場景下,會進(jìn)行 VIP 故障轉(zhuǎn)移,與權(quán)重?zé)o關(guān),主中 track_script 的服務(wù)恢復(fù)后(注意是監(jiān)測的所有服務(wù)都恢復(fù)),VIP 不會自動轉(zhuǎn)移回來,只有備中的服務(wù)異常后VIP才會自動轉(zhuǎn)移回來。但是要注意,比如主的 nginx 異常,備的 nginx 正常,VIP 會漂移至備,如果過段時(shí)間備的 nginx 異常,而主的 nginx 仍然沒有恢復(fù)正常,則主備都無法持有 VIP,整個(gè)業(yè)務(wù)將異常。

場景5

主備都沒設(shè)置 nopreempt,state 主為 MASTER 備為 BACKUP,且啟用 track_script 權(quán)重(正/負(fù)權(quán)重)。

這種場景下,會根據(jù)權(quán)重進(jìn)行 VIP 故障轉(zhuǎn)移,主中 track_script 的服務(wù)恢復(fù)后且權(quán)重高于備,則 VIP 自動轉(zhuǎn)移回來。

場景6

主備都沒設(shè)置 nopreempt,state 主為 MASTER 備為 BACKUP,且沒啟用 track_script 權(quán)重(正/負(fù)權(quán)重)。

這種場景下,會進(jìn)行 VIP 故障轉(zhuǎn)移,與權(quán)重?zé)o關(guān),主中 track_script 的服務(wù)恢復(fù)后(注意是監(jiān)測的所有服務(wù)都恢復(fù))VIP自動轉(zhuǎn)移回來。

notify 應(yīng)用

notify 有什么用?notify 會根據(jù) keepalived 的狀態(tài)變化去執(zhí)行相關(guān)動作(如執(zhí)行某個(gè)腳本),notify 共有三種狀態(tài),分別為 MASTER、BACKUP、FAULT,除了案例中配置的 notify_master 外,還有如下幾項(xiàng)配置。

notify_master

notify_master /data/keepalived/notify/notify_master.sh

觸發(fā)時(shí)機(jī):當(dāng)節(jié)點(diǎn)轉(zhuǎn)換到 MASTER 狀態(tài)時(shí)

典型用途:

  • 重啟服務(wù)(如 Nginx、Java)
  • 節(jié)點(diǎn)狀態(tài)切換通知

notify_backup

notify_backup /data/keepalived/notify/notify_master.sh

觸發(fā)時(shí)機(jī):當(dāng)節(jié)點(diǎn)轉(zhuǎn)換到 BACKUP 狀態(tài)時(shí)

典型用途:

  • 節(jié)點(diǎn)狀態(tài)切換通知

notify_fault

/data/keepalived/notify/notify_fault.sh

觸發(fā)時(shí)機(jī):當(dāng)節(jié)點(diǎn)轉(zhuǎn)換到 FAULT 狀態(tài)時(shí)(即檢測到故障)

典型用途:

  • 發(fā)送故障告警
  • 執(zhí)行緊急恢復(fù)操作

notify_stop

notify_stop /data/keepalived/notify/notify_stop.sh

觸發(fā)時(shí)機(jī):當(dāng) Keepalived進(jìn)程停止時(shí)(如服務(wù)關(guān)閉、重啟)

典型用途:

  • 停止相關(guān)服務(wù)
  • 發(fā)送維護(hù)通知

notify

notify_stop /data/keepalived/notify/notify.sh

觸發(fā)時(shí)機(jī):任何狀態(tài)變化時(shí)都會調(diào)用

參數(shù)傳遞:

典型用途:

  • 腳本會收到狀態(tài)參數(shù):$1 = "MASTER"|"BACKUP"|"FAULT"
  • VRRP 實(shí)例名稱:$2
  • 狀態(tài)名稱:$3
  • 統(tǒng)一的日志記錄
  • 通用處理邏輯(如下案例)

實(shí)際上,我們只需配置 notify 即可,然后在腳本中捕獲 keepalived 實(shí)例狀態(tài)后執(zhí)行對應(yīng)的邏輯即可,如:

#!/bin/bash

TYPE=$1
NAME=$2
STATE=$3

case $STATE in
    "MASTER")
        # 成為 Master 時(shí)的操作
        echo "$(date): $NAME 切換為 MASTER 狀態(tài)" >> /var/log/keepalived-notify.log
        echo "$(date): $NAME 開始重啟 nginx 服務(wù)..." >> /var/log/keepalived-notify.log
        systemctl restart nginx
        ;;
    "BACKUP") 
        # 成為 Backup 時(shí)的操作
        echo "$(date): $NAME 切換為 BACKUP 狀態(tài)" >> /var/log/keepalived-notify.log
        ;;
    "FAULT")
        # 故障時(shí)的操作
        echo "$(date): $NAME 切換為 FAULT 狀態(tài)" >> /var/log/keepalived-notify.log
        # 發(fā)送告警郵件或通知
        ;;
    "STOP")
        # Keepalived 停止時(shí)的操作
        echo "$(date): $NAME Keepalived 服務(wù)停止" >> /var/log/keepalived-notify.log
        ;;
esac

exit 0

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 教你在k8s上部署HADOOP-3.2.2(HDFS)的方法

    教你在k8s上部署HADOOP-3.2.2(HDFS)的方法

    這篇文章主要介紹了k8s-部署HADOOP-3.2.2(HDFS)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • K8s基本單元Pod解讀

    K8s基本單元Pod解讀

    Kubernetes中Pod是調(diào)度單元,包含多個(gè)容器及Pause容器,提供共享網(wǎng)絡(luò)、存儲等資源,狀態(tài)分為Pending、Running、Failed等,支持存活、就緒、啟動探針檢測容器健康
    2025-08-08
  • 虛擬化和云計(jì)算的區(qū)別分析

    虛擬化和云計(jì)算的區(qū)別分析

    這篇文章主要介紹了虛擬化和云計(jì)算的區(qū)別,深入淺出的列舉分析了虛擬化與云計(jì)算的幾點(diǎn)常見區(qū)別,需要的朋友可以參考下
    2016-10-10
  • Kubernetes中crictl的詳細(xì)用法教程與應(yīng)用實(shí)戰(zhàn)記錄

    Kubernetes中crictl的詳細(xì)用法教程與應(yīng)用實(shí)戰(zhàn)記錄

    crictl作為Kubernetes的容器運(yùn)行時(shí)接口(CRI)的命令行工具,為Kubernetes的調(diào)試和管理提供了強(qiáng)大的支持,通過本文的詳細(xì)介紹,你應(yīng)該已經(jīng)掌握了crictl的基本安裝、配置、常用命令以及高級用法,需要的朋友可以參考下
    2024-07-07
  • Kubernetes(k8s?1.23))安裝與卸載詳細(xì)教程

    Kubernetes(k8s?1.23))安裝與卸載詳細(xì)教程

    這篇文章主要介紹了Kubernetes(k8s?1.23))安裝與卸載,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 解決k8s namespace 一直處于 Terminating 狀態(tài)的問題

    解決k8s namespace 一直處于 Terminating 狀態(tài)的問題

    這篇文章主要介紹了k8s namespace 一直處于 Terminating 狀態(tài)的解決方法,以下的 tool 為 Terminating 狀態(tài)的 namespace,下面相關(guān)的一些操作記得將 tool 修改成自己的 namespace 名稱,需要的朋友可以參考下
    2022-10-10
  • 再分享6個(gè)可無限激活阿里云盤邀請碼,不信你不能激活阿里云盤

    再分享6個(gè)可無限激活阿里云盤邀請碼,不信你不能激活阿里云盤

    這篇文章主要分享6個(gè)可無限激活的阿里云盤邀請碼,不信你不能激活阿里云盤,需要的朋友可以參考下
    2020-11-11
  • k8s容器狀態(tài)Terminating無法刪除的問題及解決

    k8s容器狀態(tài)Terminating無法刪除的問題及解決

    這篇文章主要介紹了k8s容器狀態(tài)Terminating無法刪除的問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • 關(guān)于k8s中subpath的使用詳解

    關(guān)于k8s中subpath的使用詳解

    這篇文章主要介紹了k8s中subpath的使用,文章介紹分為兩種情況給大家詳細(xì)講解,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法

    Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法

    這篇文章主要為大家介紹了Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評論

云林县| 彩票| 丰都县| 芷江| 南岸区| 南澳县| 遂川县| 青铜峡市| 林甸县| 瑞丽市| 新建县| 张掖市| 金乡县| 海兴县| 彰武县| 永康市| 赣榆县| 巫山县| 万州区| 延寿县| 灵武市| 湖北省| 遵义市| 东丽区| 苍南县| 邵东县| 房产| 东山县| 铅山县| 太原市| 额尔古纳市| 巴林右旗| 道孚县| 兴隆县| 普定县| 元朗区| 兴山县| 上饶县| 乌苏市| 岑巩县| 莲花县|