2.【詳細到哭系列】keepalived配置,實現zabbix主備的切換

来源:https://www.cnblogs.com/l-hh/archive/2020/03/20/12530882.html
-Advertisement-
Play Games

部署階段及問題筆記:https://www.cnblogs.com/l hh/category/1400262.html 兩台機器都安裝keepalived keepalived配置 Zabbix master配置文件: 如下圖: Zabbix slave配置文件: 如下圖: 註:主備中chk_za ...


部署階段及問題筆記:https://www.cnblogs.com/l-hh/category/1400262.html

兩台機器都安裝keepalived

[root@zabbix-master ~]# yum install keepalived.x86_64 -y

keepalived配置

Zabbix-master配置文件:

! Configuration File for keepalived

global_defs {
   router_id zabbix-master    #router_id 機器標識
}
vrrp_script chk_zabbix {
  script "/etc/keepalived/check.sh zabbix_server"
  interval 1          #每1秒檢測一次服務的運行狀態
  weight 30      #優先順序變化幅度
  fall 2             #嘗試兩次都成功才成功
  rise 2            #嘗試兩次都失敗才失敗
}
vrrp_script chk_mysql {
  script "/etc/keepalived/check.sh mysqld"
  interval 1
  weight 20
  fall 2      
  rise 2       
}
vrrp_instance VI_1 {             #vrrp實例定義部分
    state MASTER            #設置lvs的狀態,MASTER和BACKUP兩種,必須大寫 
    interface eth0          #設置對外服務的介面
    virtual_router_id 100       #設置虛擬路由標示,這個標示是一個數字,同一個vrrp實例使用唯一標示 
    priority 100               #定義優先順序,數字越大優先順序越高,在一個vrrp——instance下,master的優先順序必須大於backup 
    advert_int 1            #設定master與backup負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {             #設置驗證類型和密碼
        auth_type PASS      #主要有PASS和AH兩種
        auth_pass 1111      #驗證密碼,同一個vrrp_instance下MASTER和BACKUP密碼必須相同
    }
    virtual_ipaddress {         #設置虛擬ip地址,可以設置多個,每行一個
        192.168.115.200  
    }
 track_script {
        chk_zabbix
    }
    track_script {
        chk_mysql
    }
notify_master "/etc/keepalived/zabbix.sh start"             #指定當切換到master時,執行的腳本
notify_backup "/etc/keepalived/zabbix.sh stop"          #指定當切換到backup時,執行的腳本
} 

如下圖:

image

Zabbix-slave配置文件:

! Configuration File for keepalived

global_defs {
   router_id zabbix-slave
}
vrrp_script chk_zabbix {
  script "/etc/keepalived/check.sh zabbix_server"
  interval 1
  weight 5 
  fall 2    
  rise 2     
}
vrrp_script chk_mysql {
  script "/etc/keepalived/check.sh mysqld"
  interval 1
  weight 45 
  fall 2      
  rise 2       
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0   
    virtual_router_id 100
    priority 90
    advert_int 1 
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {   
        192.168.115.200  
    }
 track_script {
        chk_zabbix
    }
    track_script {
        chk_mysql
    }
notify_master "/etc/keepalived/zabbix.sh start" 
notify_backup "/etc/keepalived/zabbix.sh stop" 
} 

如下圖:

image

註:主備中chk_zabbix和chk_mysql的weight值。該設置目的是保證主機的zabbix或者mysql服務異常時keepalived能正常發生切換,並且當主機的zabbix和mysql服務重新正常啟動時keepalived能夠回切。

check.sh中的腳本(主備機相同):

註:該腳本為判斷zabbix、mysql和http服務的狀態,某個服務出現異常時將停止keepalived,VIP切換到zabbix-slave上。

#!/bin/bash

zabbix_server=`ps -C zabbix_server --no-header | wc -l`
mysqld=`ps -C mysqld --no-header | wc -l`

case $1 in
    zabbix_server)
        if [ $zabbix_server -gt 0 ];then
            exit 0 
        else
            exit 1
        fi
    ;;
    mysqld)
        if [ $mysqld -gt 0 ];then
            exit 0
        else
            exit 1 
        fi
    ;;
Esac

image

在伺服器執行:

[root@zabbix-master keepalived]# chmod +x check.sh

Zabbix.sh腳本(主備機相同):

#!/bin/bash
case $1 in
    start)
        systemctl start zabbix-server
    ;;
    stop)
        systemctl stop zabbix-server
    ;;
Esac

image

註:該腳本作用為當主備發生切換或者回切時始終保持有VIP的機器有zabbix服務而另一臺無zabbix服務,保證對外提供服務的只有一臺機器。(若兩台伺服器都提供zabbix服務則每一次事件都會觸發兩次告警)

主備機分別重啟keepalived服務並加入啟動服務

[root@zabbix-master ~]# systemctl restart keepalived
[root@zabbix-master ~]# systemctl enable keepalived 

檢查所有相關服務,接下來就測試:

image

高可用測試

Zabbix-master查看VIP信息:

image

模擬zabbix-master的zabbix或者mariadb服務出現故障:

image

此時再Zabbix-slave查看網卡信息:

image

Zabbix-web頁面也是可以正常訪問的:

image

接下來我們模擬zabbix-master故障恢復,測試VIP是否回切:

image

image

註:到此zabbix高可用就已經實現了。

註:如果不想VIP不必要的主備切換,導致zabbix-master恢復後再次搶占VIP問題,自行瞭解"解決VIP搶占問題"。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Humanizer 能夠滿足您所有.Net關於操作和展示以下類型的需求,包括字元串、枚舉、日期、時間、時間跨度、數字和數量。它採用 MIT 進行授權分發。 ...
  • using System.Security.Cryptography; static void Main(string[] args) { string rawString = "Make every second count."; string encryptedString = Encrypt3 ...
  • 近期公司重構了些界面,因為換膚和界面定製的緣故,需要把樣式和邏輯分開;所以記錄下關鍵的操作;主要是利用命令代替事件... 1 <Window x:Class="Demo_MVVM.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006 ...
  • 客戶端請求Api資源網關(受保護的資源)時,第一次收到請求會到授權中心(ids4服務網關)獲取驗證公鑰,並保持到記憶體中,後面的請求不會再到授權中心去獲得驗證公鑰,而是Api資源網關(受保護的資源)中直接通過保存下來的驗證公鑰進行驗證,從而通過授權 ...
  • 接下來的問題是記憶體怎麼分割? 這樣就可以將程式的各個段載入到相應的記憶體分區中 1. 固定分區與可變分區 2. 可變分區的管理過程 核心數據結構 請求分配 釋放記憶體 再次申請 例題: 3. 引入分頁 解決記憶體分區導致的記憶體效率問題 1. 可變分區造成的問題 2. 從連續到離散 3. 接下來就是頁表 ...
  • 先編寫應用程式,使之包含三個進程,分別輸出三個字母,不知道從何下手,先研究一下上課老師講的例子,代碼如下 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <pthread.h> 4 5 void loop(){ 6 while(1); 7 ...
  • 一 glusterfs存儲集群部署 註意:以下為簡略步驟,詳情參考《附009.Kubernetes永久存儲之GlusterFS獨立部署》。 1.1 架構示意 略 1.2 相關規劃 主機 IP 磁碟 備註 k8smaster01 172.24.8.71 —— Kubernetes Master節點 H ...
  • 每個被監控節點安裝zabbix客戶端 1)下載並安裝zabbix源: 2)安裝zabbix agent代理軟體: 3)更改配置文件: 4)啟動zabbix客戶端 註:這裡只演示一個節點,其餘的節點同理! 觸發器實現郵件報警和微信報警 觸發器的介紹 報警流程:定義條件 滿足條件 馬上觸發 實現報警 實 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...