自分で設計した Amazon ElastiCache for Redis クラスターのフェイルオーバー後に表示される READONLY エラーのトラブルシューティングを行いたいと考えています。
簡単な説明
プライマリノードが ElastiCache の自己設計クラスター内のレプリカノードにフェールオーバーすると、レプリカノードがプライマリノードになります。これにより、受信したリクエストを処理できます。READONLY エラーは、アプリケーションでクラスターのプライマリエンドポイントではなくノードエンドポイントを使用する場合に発生します。また、このエラーは、アプリケーションの DNS キャッシュがトラフィックを古いプライマリノードにルーティングする場合にも発生します。
解決策
クラスターモードがオフになっている ElastiCache for Redis 自己設計クラスターの READONLY エラーをトラブルシューティングするには、次の手順を実行します。
クラスターモードがオフになっていることを確認する
ElastiCache コンソールを開き、Redis クラスターを選択します。クラスターのクラスターモードがオフになっていることを確認します。詳細については、「ElastiCache for Redis のレプリカノードではなくシャードのプライマリノードにリダイレクトされる Redis クライアント読み取りリクエストを解決するにはどうすればよいですか?」を参照してください。
エンドポイントを確認する
ノードエンドポイントではなく、プライマリエンドポイントが使用されていることを確認してください。書き込みコマンドがプライマリノードに送信されることを確認するには、次のいずれかの方法を使用します。
redis-cli を使う
-
redis-cli を使用してプライマリエンドポイントに接続し、クラスターに接続します。
-
キーを設定してからキーを読み取ります。
例:
set key1 "hello"
OK
-
キーが正しく設定されていることを確認します。
例:
get key1
"hello"
DNS 設定を確認する
DNS キャッシュの問題を防ぐには、アプリケーションで再試行ロジックを有効にしてください。使用する Redis クライアントライブラリのガイドラインに必ず従ってください。
受信コマンドを確認する
受信コマンドを確認するには、MONITOR コマンドを使用します。詳細については、Redis ウェブサイトの「MONITOR」を参照してください。MONITOR をオンにするには、redis-cli を使用してクラスターに接続します。MONITOR コマンドは、クラスターノードへのすべての受信コマンドを一覧表示します。
**注:**MONITOR コマンドはリソースを大量に消費するコマンドであり、ノードのパフォーマンスを大幅に低下させる可能性があります。このコマンドは、トラブルシューティングの最後のオプションとして使用してください。