Redis クラスターでの障害検出の方法: まず Python スクリプトを変更して 1 秒ごとにデータを書き込み、次にループで Redis クラスターにデータを書き込み、マスター ノードを強制的に強制終了してアプリケーションを観察します。接続状況; 最後に、ダウンした 8001 ノードを再起動します。
Redis クラスターでの障害検出の方法: 自動フェイルオーバー テスト
Python スクリプトを変更し、1 秒ごとに書き込みます。データを入力する目的は、マスター ノードがダウンしてクラスターが自動的にフェイルオーバーするまでの期間 (約 1 秒) 内のアプリケーションへの影響、または自動フェイルオーバーの前後のアプリケーションのパフォーマンスを観察しやすくすることです。 。
次のスクリプトは、ループで Redis クラスターにデータを書き込み、実行中にマスター ノードを強制的に強制終了し、アプリケーションの接続ステータスを監視します。
同時に、例外が発生した場合は、上で設定したクラスターのフェイルオーバー時間が 1 秒であるため、アプリケーションを 2 秒間一時停止します。アプリケーションを 2 秒間一時停止すると、フェイルオーバー プロセスをスキップできます。フェイルオーバーが完了すると、アプリケーションは通常の状態に戻りました。ノード 8001 がダウンしていても、アプリケーションはノード 8001 に接続し続けましたが、アプリケーションはまったく認識していませんでした。
関連する学習の推奨事項: redis ビデオ チュートリアル
import timefrom time import ctime,sleepfrom rediscluster import StrictRedisCluster startup_nodes = [ {"host":"111.231.253.***", "port":8001}, {"host":"111.231.253.***", "port":8002}, {"host":"111.231.253.***", "port":8003}, {"host":"111.231.253.***", "port":8004}, {"host":"111.231.253.***", "port":8005}, {"host":"111.231.253.***", "port":8006} ] redis_conn= StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True,password="root")for i in range(0, 100000): try: redis_conn.set('name' + str(i), str(i)) print('setting name' + str(i) +"--->" + time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) time.sleep(1) except: print("connect to redis cluster error") time.sleep(2)
マスター ノードを強制終了した後、接続エラーが 1 つだけ発生し、その後Redis のおかげで、クラスターの自動フェイルオーバーは成功し、プログラムに対して透過的であるため、アプリケーションは正常に動作し、マスター ノードの 1 つの障害の影響を受けません。
#現時点でのクラスタのステータスは、ノード 8001 がダウンしていることです。明らかに、8001 に対応するスレーブ ノード 8004 がマスター ノードを引き継ぎ、マスターにアップグレードされ、外部の世界にサービスを提供します マスター ノードにアップグレードされた 8004 インスタンスのログを観察すると、元の 8001 マスター ノードが強制的に強制終了された後、 1 秒以内に、8001 はマスター ノードに正常にアップグレードされます。If フェイルオーバー プロセス中に、Redis にアクセスするアプリケーションはなく、アプリケーションは Redis クラスターでフェイルオーバーが発生したことさえ認識しません。クラスタ内の特定のノードのスレーブノードが同時にダウンすることはなく、クラスタ全体に問題はなく、アプリケーションにも影響を与えず、プロセスは完全に透過的です。
# 次に、ダウンした 8001 ノードを再起動すると、8001 ノードが自動的に元のスレーブ ノード (8004) のスレーブ ノードになることがわかります
以上がRedis クラスターの障害を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。