2015-10-08 8 views
8

私たちは、2つの赤いサーバを持つ赤い設定をしています。また、2つのインスタンスを監視し、必要に応じてフェイルオーバーを開始する3つの監視院を設置しています。センチネル・フェイルオーバーを開始せずにredis FLUSHALLを実行する方法は?

現在、私たちは定期的にredisサーバ上でFLUSHALLを実行する必要があります。これは、監視員がタイムアウトするために割り当てた時間よりも長い時間を要するブロック操作です。言い換えれば、私たちは私たちとセンチネル構成している:

sentinel down-after-milliseconds OurMasterName 5000

、サーバー上のRedis-CLI FLUSHALLをやって>は5000ミリ秒かかるので、歩哨はフェイルオーバを開始します。

FLUSHALLを実行することは素晴らしいことではないことを認識しています。また、この質問の目的では、これらのオプションはどちらもオプションではないと仮定しています。

問題は、FLUSHALLが5000ミリ秒を超えてブロックされたために、私たちのセンチネルがフェールオーバーを開始することなく、どのようにFLUSHALL(または同等の操作)を行うことができますか?誰もこの問題に遭遇し解決しましたか?

+0

いくつかのクラウドプラットフォームを使用している場合は、新しいインスタンスを作成することができます。マシンイメージを準備しておくか、devopsツールを使用してください。 –

+0

@LiviuCosteaこれはおそらく適切なオプションだと思います。これがどのように機能するかを少し詳しく説明したものを参照できる場合は、私はあなたの答えを受け入れることができます。 – jakejgordon

+0

AWSまたはAzureのようなものを使用している場合は、新しいRedisクラスタを作成するためのAPIを使用してください。それを起動し、データを読み込み、一度準備が整ったらDNSを変更して、もう一度APIコールを実行します。これらはすべてアプリケーションの一部で処理できます。しかし、敷地内では、不可欠な/シェフ/人形を使った自動化が必要になるため、より複雑になることがあります。 –

答えて

1

新しいインスタンスを作成することができます。新しいRedisクラスターを作成するためのAPIをAWSまたはAzureのように使用している場合。それを起動し、データを読み込み、一度準備が整ったらDNSを変更して、もう一度APIコールを実行します。これらはすべてアプリケーションの一部で処理できます。しかし、敷地内では、不可欠な/シェフ/人形を使った自動化が必要になるため、より複雑になることがあります。

0

次の最良の選択肢は、バッチ内のキーを削除して作業量を一度に減らすことです。あなたはリストを構築することができます。あなたが持っていないと仮定して、scanを使用してください。

編集:データを保持することに関心がないので、永続性を無効にし、RDBファイルを削除してからインスタンスを再起動してください。この方法では、新しいホストのプロビジョニングを行う場合と同じように、センチネルを更新する必要はありません。

好奇心を掻き立てるだけで、常にフラッシングしてデータを気にしなくても、それを消去すると、なぜセンチネルが気になるのですか?

+0

ここでの問題は、一貫性を保証しないということです。この場合、タイムアウトを> 5000ミリ秒に増やす方が良いでしょう(これは実際に行いました。一時的に私たちの問題を解決しますが、実際には容認できる解決策ではありません)。 – jakejgordon

関連する問題