■ご質問概要
下記のシェルスクリプトをcrontab -eで1分おきに実行するようにしたのですが、実際にコマンド実行するとうまくいくものの、cronで実行されるとうまくいきません。シェルスクリプトの書き方をようやく昨日知ったばかりの素人なので大事なことが抜けているかもしれないのですが何か解決方法をご教示頂けませんでしょうか。
シェルスクリプト内容
#!/bin/sh IP_ADDR_ARRAY=("192.168.10.10"); NUM=0 for IP in ${IP_ADDR_ARRAY[@]} do ping ${IP} -c 1 >> /dev/null if [ $? == 0 ] ; then echo "" else echo "${IP} : NG" command1="service keepalived stop" eval $command1 command2="service pound stop" eval $command2 fi NUM=`expr ${NUM} + 1` done ```※IPは適当なものを記載しています。 crontab -e 内容
LOCALE=C
*/1 * * * * cd /etc/keepalived/script && ./ping.sh
■コードの内容 冗長化先のサーバのIPアドレスへpingを飛ばして、うまくいかなければkeepalived及びpoundというサービスを止めたい。 ■背景 CentOS6のサーバにpoundを入れてロードバランサーとして利用しようとしているのですが、障害対策でもう一台同じ内容のサーバを作成してkeepalivedというサービスを利用してVIPを付与して、マスターのサーバが落ちたときにスレーブ側がVIPを引き継ぐようにしました。 サービス、サーバが落ちたときはこれで大丈夫なのですが、サーバ間の通信が切れてしまった場合にどちらも生きているにもかかわらず、相互に落ちているという認識になりどちらもVIPが付与されてしまう状態になりました。 そのため、ホスト側からスレーブ側に定期的にpingを飛ばして、飛ばなくなったらホスト側のサービスを停止してスレーブが生きている状態にしようとしております。 以上です。 基本的な部分で何か間違っていて本質とは違う部分からミスがありましたら申し訳ありません。 宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/28 04:58