ホームページ  >  記事  >  データベース  >  Redis クラスターの障害を検出するにはどうすればよいですか?

Redis クラスターの障害を検出するにはどうすればよいですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-06-30 12:56:292668ブラウズ

Redis クラスターでの障害検出の方法: まず Python スクリプトを変更して 1 秒ごとにデータを書き込み、次にループで Redis クラスターにデータを書き込み、マスター ノードを強制的に強制終了してアプリケーションを観察します。接続状況; 最後に、ダウンした 8001 ノードを再起動します。

Redis クラスターの障害を検出するにはどうすればよいですか?

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 つの障害の影響を受けません。

Redis クラスターの障害を検出するにはどうすればよいですか?

#現時点でのクラスタのステータスは、ノード 8001 がダウンしていることです。明らかに、8001 に対応するスレーブ ノード 8004 がマスター ノードを引き継ぎ、マスターにアップグレードされ、外部の世界にサービスを提供します

Redis クラスターの障害を検出するにはどうすればよいですか?

マスター ノードにアップグレードされた 8004 インスタンスのログを観察すると、元の 8001 マスター ノードが強制的に強制終了された後、 1 秒以内に、8001 はマスター ノードに正常にアップグレードされます。

If フェイルオーバー プロセス中に、Redis にアクセスするアプリケーションはなく、アプリケーションは Redis クラスターでフェイルオーバーが発生したことさえ認識しません。クラスタ内の特定のノードのスレーブノードが同時にダウンすることはなく、クラスタ全体に問題はなく、アプリケーションにも影響を与えず、プロセスは完全に透過的です。

Redis クラスターの障害を検出するにはどうすればよいですか?# 次に、ダウンした 8001 ノードを再起動すると、8001 ノードが自動的に元のスレーブ ノード (8004) のスレーブ ノードになることがわかります

以上がRedis クラスターの障害を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。