我有這個腳本來檢查網路服務器是否啟動并且健康檢查是否成功。我在服務開始之前使用“睡眠”。我正在尋求改進它,并放置一些“迭代/直到”選項來檢查服務健康檢查是否成功,但會超時 60/120 秒并進行 LB 注冊,否則會引發錯誤。
#!/bin/bash
instanceid=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
healthcheck=$(curl -X GET http://localhost | grep "yes its working")
HEALTHCHECK=$?
if [ $HEALTHCHECK -eq 0 ] ; then
echo "Server registered to ELB"
usr/local/bin/aws elbv2 register-targets --target-group-arn arn:aws:elasticloadbalancing:ap-south-1:xxxxxxxx:targetgroup/my-targetgroup/xxxxxxxx --targets Id=$instanceid
exit 0
else
echo "healthcheck failed"
exit 0
fi
uj5u.com熱心網友回復:
嘗試這樣的事情:
#! /bin/bash
: ${TIMEOUT:=10}
: ${INTERVAL:=2}
: ${FAIL:=no}
healthcheck()
{
case "$FAIL" in
no) true;;
*) false;;
esac
}
(
while true; do
if healthcheck; then
echo "Server registered to ELB"
exit 0
else
echo "healthcheck failed"
fi
sleep "$INTERVAL"
done
) & child=$!
kill_child() { kill -TERM "$child"; }
# See https://stackoverflow.com/a/11056286/402322
(
sleep "$TIMEOUT" && {
kill_child
printf 'Timeout after %d seconds.\n' "$TIMEOUT"
}
) 2>/dev/null & watcher=$!
kill_watcher () { pkill -TERM -P "$watcher"; }
trap kill_child INT
trap kill_watcher EXIT
wait "$child"
成功和超時的示例用法:
$ ./healthcheck.sh
Server registered to ELB
$ FAIL=yes ./healthcheck.sh
healthcheck failed
healthcheck failed
healthcheck failed
healthcheck failed
healthcheck failed
Timeout after 10 seconds.
uj5u.com熱心網友回復:
謝謝@ceving,使用退出 0 的迭代。如果狀態檢查失敗并退出,則重試 5 次。如果健康檢查成功,它將注冊到 LB。
#!/bin/bash
instanceid=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
for itr in {1..5}
do
healthcheck=$(curl -X GET http://localhost | grep "yes its working")
healthcheck=$?
if [ "$HEALTHCHECK" -ne 0 ] ; then
echo "Healthcheck failed. sleeping for 5 sec"
sleep 5
echo 'Iteration' $itr
if [ $itr == 5 ]; then
echo 'Failed to register instance to ELB.'
fi
else
echo "Server registered to ELB"
usr/local/bin/aws elbv2 register-targets --target-group-arn arn:aws:elasticloadbalancing:ap-south-1:xxxxxxxx:targetgroup/my-targetgroup/xxxxxxxx --targets Id=$instanceid
exit 0
fi
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/420663.html
標籤:
