四行shell腳本實現zabbix_server的高可用

場景模擬:

高可用的重要性

  1. 一家中小型企業需要使用zabbix_server監控大量設備,某天,一位新來的員工操作服務器失誤,導致zabbix_server服務器系統奔潰無法開機。這時候zabbix_server服務中斷了,這家企業的所有設備都無法進行監控,假如此時,監控的設備中有重要的業務主機,出現了告警,但是由於zabbix_server無法採集數據,導致運維人員不知道業務主機出現了一個嚴重的告警,業務也受到了影響。最後給企業帶來巨大的經濟損失。
    名詞解析:
    什麼是高可用?
    高可用技術簡單的說就是,保障業務在出現故障的時候,進行快速的切換,從而不影響到業務的正常運轉。
    什麼是VIP(虛擬IP)?
    高可用技術離不開VIP,高可用的原理其實就是用戶通過VIP訪問業務,而VIP會映射到對應的服務器IP。
    四行shell腳本實現zabbix_server的高可用

默認情況下,客戶端通過192.168.74.150的IP映射到的192.168.74.149這臺主zabbix_server的服務,如果主zabbix_server服務器的關機了,那麼客戶端繼續使用192.168.74.150的ip就會映射到備用zabbix_server(192.168.74.148)這臺服務。

準備內容:
安裝兩臺zabbix_server,一臺數據庫服務器(主zabbix_server和備zabbix_server的數據都保存在這臺數據庫上)
備:zabbix_server:192.168.74.148
主:zabbix-server:192.168.74.149
一臺數據庫服務器:192.168.74.128.
本實驗的內容需要利用邏輯網卡作爲VIP(192.168.74.150)

第一步:在兩臺zabbix_server服務器上創建邏輯網卡,即vip
兩臺zabbix_server服務器進入/etc/sysconfig/network-script目錄
Cd /etc/sysconfig/network-scripts
四行shell腳本實現zabbix_server的高可用

拷貝當前服務器網卡文件,我的網卡是ifcfg-ens33。
Cp ifcfg-ens33 ifcfg-ens33:0
四行shell腳本實現zabbix_server的高可用
編輯ifcfg-ens33:0文件(兩臺zabbix_server的ifcfg-ens33:0文件中,ip都改爲192.168.74.150作爲虛擬ip)
四行shell腳本實現zabbix_server的高可用

現在任意一臺zabbix_server上啓動ifcfg-ens33:0,確認網卡是否可以啓動。
注意,不可以同時在兩臺zabbix_server啓用ifcfg-ens33:0,否則會出現ip衝突。
邏輯網卡啓動命令是ifup 網卡名,使用ifup命令,只重啓新增的網卡即可,最好不要用systemctl network restart命令重啓全部網卡,一旦這條命令導致網卡啓動失敗,將會導致無法遠程服務器。
Ifup ifcfg-ens33:0
四行shell腳本實現zabbix_server的高可用

第二步:驗證是否可以通過vip(192.168.74.150),訪問到主zabbix_server或者備zabbix_server的ip
在window主機上安裝agent,把agent配置文件的server_ip指向192.168.74.150這個虛擬ip,確認是否可以通過192.168.74.150映射到192.168.74.149這個zabbix_server服務
四行shell腳本實現zabbix_server的高可用
四行shell腳本實現zabbix_server的高可用

此時已經可以通過虛擬IP(192.168.74.150)訪問到192.168.74.149的zabbix_server。
但同時出現了一個問題,如圖,所有的監控主機ZBX出現爆紅
四行shell腳本實現zabbix_server的高可用

爲了解決上面的問題,需要修改所有監控主機的zabbix_agent.conf的server_ip都指向192.168.74.150
四行shell腳本實現zabbix_server的高可用

修改完agent的配置,一定要重啓zabbix_agent
最重要的一步,修改兩臺zabbix_server.conf裏面的參數Source指定爲虛擬ip
192.168.74.150,否則界面的ZBX會出現爆紅
若沒有修改sourceIP,仍然會無法解決的下面情況
四行shell腳本實現zabbix_server的高可用

修改zabbix_server.conf文件,SourceIP修改爲虛擬ip,192.168.74.150
四行shell腳本實現zabbix_server的高可用

重啓zabbix_server
Systemctl restart zabbix_server
以上配置完成後,界面的監控主機恢復正常
四行shell腳本實現zabbix_server的高可用

主機的數據也正常
四行shell腳本實現zabbix_server的高可用

下面開始編寫shell腳本,實現主zabbix_server(192.168.74.149)服務器掛掉後,仍然可以通過192.168.74.150繼續訪問備用zabbix_server(192.168.74.148)
在192.168.74.149和192.168.74.148兩臺服務器上編寫腳本check_alive
四行shell腳本實現zabbix_server的高可用

並在兩臺服務器上crontab –e的定時任務中加入這兩個腳本。執行這兩個腳本的時間由用戶自定義。本人暫時以60s一次執行這個檢測腳本。記住要給這兩個腳本可執行的權限
之所以設置60s執行一次腳本,是爲了待會演示關閉192.168.74.149這臺虛擬機,然後界面會無法訪問。接着等待60s,備用zabbix_server的192.168.74.148就會啓用vip,界面就可以繼續訪問zabbix_server。正常來說,設置爲3-10s比較合適,這樣才能做到快速切換
Chmod o+x 755 check_alive.sh
記住一定要用絕對路徑,否則可能會報錯
四行shell腳本實現zabbix_server的高可用

最終效果演示

關閉主zabbix_server(192.168.74.149虛擬機)
此時vip在,主zabbix-server上
四行shell腳本實現zabbix_server的高可用
關閉主zabbix_server(192.168.74.149)後,備zabbix_server就無法ping通,vip192.168.74.150了。
四行shell腳本實現zabbix_server的高可用
四行shell腳本實現zabbix_server的高可用
等待60s,VIP(192.168.74.150會出現在備用zabbix_server(192.168.74.148)
四行shell腳本實現zabbix_server的高可用

Vip切換成功,刷新界面看一下能否訪問zabbix_server
四行shell腳本實現zabbix_server的高可用
界面訪問正常
四行shell腳本實現zabbix_server的高可用
四行shell腳本實現zabbix_server的高可用

主zabbix_server關機了,所以無法獲取數據。
本案例可以確保zabbix_server服務進行高可用。但有一個缺點,就是兩個zabbix_server服務使用的是同一個數據庫服務器,如果這個數據庫服務器掛掉。同樣會無法獲取數據。所以最好也做一下數據庫的高可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章