【二】keepalived配置,實現zabbix主備的切換(詳細)


部署階段及問題筆記: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搶占問題"。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM