3

私の目的のために、実行中の redis のインスタンスを 1 つと、redis センチネルを 1 つだけ必要です。Redis 3.0.6 を実行しています。Mysentinel.confは、quorum が 1 で、通知スクリプト行がコメント解除されていることを除いて、すべてデフォルトです: sentinel notificication-script mymaster /etc/redis/notify_me.sh. 内部notify_me.shでは、テスト目的でprint "HEY SOMETHING IS UP WITH REDIS".

監視目的のみに redis センチネルを使用したい。後で、redis がダウンしたときにメール/テキスト メッセージを送信する Python スクリプトに何かを記述します。ただし、現在のように、あまりにも頻繁に発砲しています。センチネルがredisが死んだと判断したときに、メッセージを1回だけ受け取りたいです。今すぐ開始すると、ステートメントは最初に1回出力され、次にfailover-state-select-slaveの後にさらに数回出力されます

23863:X 06 Jan 15:26:18.422 # Sentinel runid is db267af1b9257ced70eee9cbd076291db31f9335
23863:X 06 Jan 15:26:18.422 # +monitor master mymaster 127.0.0.1 6380 quorum 1
HEY SOMETHING IS UP WITH REDIS
23863:X 06 Jan 15:27:07.602 # +sdown master mymaster 127.0.0.1 6380
23863:X 06 Jan 15:27:07.602 # +odown master mymaster 127.0.0.1 6380 #quorum 1/1
23863:X 06 Jan 15:27:07.602 # +new-epoch 1
23863:X 06 Jan 15:27:07.602 # +try-failover master mymaster 127.0.0.1 6380
23863:X 06 Jan 15:27:07.604 # +vote-for-leader db267af1b9257ced70eee9cbd076291db31f9335 1
23863:X 06 Jan 15:27:07.604 # +elected-leader master mymaster 127.0.0.1 6380
23863:X 06 Jan 15:27:07.604 # +failover-state-select-slave master mymaster 127.0.0.1 6380
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
23863:X 06 Jan 15:27:07.682 # -failover-abort-no-good-slave master mymaster 127.0.0.1 6380

最初に印刷したくありません。サーバーが停止したときに一度だけ印刷したいので、後でメール/テキストを1つだけ受け取ります。誰でも、私ができることについて何かヒントはありますか?ありがとう!

4

2 に答える 2

0

確かではありませんが、おそらく、sentinel.conf のコメントに記載されている再試行ルールと関係があります。

スクリプトは、次のエラー処理ルールに従って実行されます。

スクリプトが「1」で終了した場合、実行は後で再試行されます (現在 10 に設定されている最大回数まで)。

スクリプトが「2」(またはそれ以上の値) で終了した場合、スクリプトの実行は再試行されません。

シグナルを受信したためにスクリプトが終了した場合、動作は終了コード 1 と同じです。

スクリプトの最大実行時間は 60 秒です。この制限に達すると、スクリプトは SIGKILL で終了し、実行が再試行されます。

于 2016-01-07T05:16:04.700 に答える