指令碼監控高可用集群中真實伺服器的狀態

2021-10-19 13:38:37 字數 2158 閱讀 3941

指令碼核心思想:迴圈判斷當前rs狀態是否正常,正常,靜默等待下次迴圈;不正常,或刪除或新增

注意,此實驗環境為lvs-dr模式

可參考如下blog

lvs的dr模式搭建

指令碼內容:

#!/bin/bash

# vip=

10.10

.10.100

#集群虛擬ip

cport=

80#定義集群埠

fail_back=

127.0

.0.1

#本機回環位址

rs=("10.10.10.12"

"10.10.10.13"

)#編寫集群位址

declare -a rsstatus #變數rsstatus定義為數組態

rw=("2"

"1")

rport=

80#定義集群埠

type=g #制定lvs工作模式:g=dr m=nat

chkloop=

3 log=

/var/log/ipvsmonitor.log

addrs(

) delrs(

) checkrs(

) initstatus(

); do

if ipvsadm -l -n | grep "$i:$rport"&&

>

/dev/null ; then

rsstatus[$count]=1

else

rsstatus[$count]=0

filet count+

+ done

}initstatus

while

:; do

let count=

0for i in $

; do

if checkrs $i; then

if[ $-eq 0

]; then

addrs $i $

[ $? -eq 0]&

& rsstatus[$count]=1

&& echo "`date +'%f %h:%m:%s'`, $i is back."

>> $log

fielse

if[ $

-eq 1

]; then

delrs $i

[ $? -eq 0]&

& rsstatus[$count]=0

&& echo "`date +'%f %h:%m:%s'`, $i is gone."

>> $log

fifi

let count+

+ done

sleep 5

done

測試:

首先,lvs執行指令碼,監控伺服器的狀態

當rs正常時,集群採用的是輪詢的負載排程,可見與預期相符

此時,若某一台伺服器的http服務出現故障,lvs上應該刪除這個節點,且頁面不論如何重新整理,都跳轉至10.10.10.13這個真實伺服器上

可見,與預期相符

當這個伺服器恢復後,節點正常新增進去

Keepalived高可用伺服器

準備三颱linux伺服器,兩台做web伺服器,並部署keepalived高可用軟體,一台作為客戶端主機,實現如下功能 使用keepalived實現web伺服器的高可用 web伺服器ip位址分別為192.168.4.10和192.168.4.20 web伺服器的漂移vip位址為192.168.4.80...

keepalived 高可用伺服器

keeplived主要包括三個模組 vrrp 多台路由器虛擬成一台路由器,通過給虛擬路由器配置ip從而實現閘道器的備份。和聚合連線對比 自動配置lvs 根據配置檔案自動建立和配置集群 健康檢查 對集群進行監督。目標 通過乙個ip位址192.168.4.80訪問兩台web伺服器,如下圖 1 為web1...

Keepalived 高可用伺服器

專案 二 keepalived 高可用伺服器 這個專案實現了web 的負載均衡功能,防止單點故障,提高 訪問速度。需要7臺linux伺服器,1臺做客戶端主機,一台dns伺服器,2臺排程伺服器高可用 3臺web伺服器 客戶端通過網路訪問web伺服器時,有一台 伺服器宕機或者出現故障時keepalive...