2つのサーバーが次のように見えるバックエンドでhaproxy構成をセットアップしました。
...
default
option log-health-checks
...
mailers mta
mailer smtp1 127.0.0.1:25
...
backend s_api
balance roundrobin
option httpchk GET /sites?site=q&limit=1
http-check expect rstatus (2|3)[0-9][0-9]
server s1_a 1.2.3.4:3600 check inter 5s fall 4 rise 1
server s2_b 1.2.3.5:3600 check backup
timeout queue 60s
timeout server 60s
timeout connect 60s
email-alert mailers mta
email-alert level notice
email-alert from [email protected]
email-alert to [email protected]
サーバーがダウンしたりアップしたりしたときにメールで通知されます。アーカイブしたいのは、サーバーが起動しているときにローカルのbashスクリプトを開始し、サーバーが停止しているときに別のスクリプトを開始することです。
どうすればそれができますか?
私はおそらくこれを外部チェックスクリプトで行い、これを使用してライズ値とフォール値を制御します。その後、上昇または下降の値に達したら、独自のスクリプトを実行できます。 haproxy構成のライズとフォールを1に設定し、チェックを外部に変更します
external-check command ping.sh
server s1_a 1.2.3.4:3600 check inter 5s fall 1 rise 1
server s2_b 1.2.3.5:3600 check backup
timeout queue 60s
timeout server 60s
timeout connect 60s
次に、外部pingチェックの大まかな例として
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# Set the maximum time in seconds to allow ping to run, 1-10 is a sensible range.
TMEOUT=1
# Interval between pings in seconds, 0.2-1 is a sensible range.
INT=1
# Number of pings to send.
NUM=1
RIP=$(echo ${3}))
VIP=$(echo ${1})
#Optionally provides source IP for Ping
SRC=
if [ "$SRC" != '' ]; then
SRC_IP="-I $SRC"
fi
if ping ${SRC_IP} -n -w${TMEOUT} -i${INT} -c${NUM} ${RIP} >& /dev/null; then
COUNTER="$(cat count)"
if [COUNTER != 0]; then
//run up script here
fi
echo 0 >> count
exit ${?}
else
COUNTER="$(cat count)"
if [COUNTER >= 3]; then
//run down script here
fi
COUNTER=$[COUNTER + 1]
echo COUNTER >> count
exit ${?}
fi
Luaでこれを行うこともできるかもしれませんが、私はそれを見ていません。統計ソケットのポーリングやhaproxyのハッキングなど、他のいくつかの電子メールアラートオプションを実行しましたが、これは適応できる可能性がありますが、外部チェックがおそらくここで最もよく機能します。ただし、試してみたい場合は、ここで見つけることができます https://www.loadbalancer.org/blog/3-ways-to-send-haproxy-health-check-email-alerts/ 。