ApsaraDB for Redis は、複数の接続方法をサポートしています。 ここでは、さまざまな接続の問題のトラブルシューティングについて説明します。
ApsaraDB for Redis インスタンスと ECS インスタンスの間の接続問題
ApsaraDB for Redis インスタンスは、イントラネット経由の接続のみをサポートします。 そのため、ECS インスタンスが ApsaraDB for Redis インスタンスに接続可能であることを確認する必要があります。 これらのインスタンスが相互に接続できない場合、考えられる原因は次のとおりです。
- ApsaraDB for Redis インスタンスと ECS インスタンスが同じアカウントに属していない。 解決策:
- ApsaraDB for Redisインスタンスを、ECS インスタンスが属するアカウントの仮想プライベートクラウド (VPC) に移行します。 ApsaraDB for Redisインスタンスをアカウント間で移行する方法の詳細については、「redis-shake ツールを使用して、RDB ファイルからデータを移行する」をご参照ください。
- 異なるアカウント間で ECS インスタンスと ApsaraDB for Redis インスタンスを接続するにはどうすればよいですか。
- ECS インスタンスと ApsaraDB for Redis インスタンスが別のリージョンにある。 解決策:
どちらかのインスタンスをリージョン間で移行します。詳細は「redis-shake を使用して、同じアカウントでデータを移行する」をご参照ください。
- ECS インスタンスと ApsaraDB for Redis インスタンスがタイプの違うネットワークで実行されている (一方はクラシックネットワークで、もう一方は
VPC で実行されている)。 解決策:
- Redis インスタンスのネットワークタイプをクラシックネットワークから VPC に切り替えます。 詳細については、「ネットワークタイプの設定」をご参照ください。
- 異なるネットワークの ECS インスタンスと ApsaraDB for Redis インスタンスの接続
- ECS セキュリティグループルールが、ApsaraDB for Redis インスタンスの接続アドレスとポートに対する接続を制限している。 解決策:
セキュリティグループルールを追加し、ApsaraDB for Redis インスタンスの接続アドレスとポートへの接続を許可します。
- ApsaraDB for Redis インスタンスのホワイトリストに、ECS インスタンスのイントラネット IP アドレスが含まれていない。 解決策:
ECS インスタンスのイントラネット IP アドレスを含むように IP ホワイトリストの設定を行います。
注 次のエラーの場合:Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused
、ApsaraDB for Redis インスタンスのホワイトリストを確認してください。 ホワイトリスト設定が正しく、ECS インスタンスが ping コマンドで ApsaraDB for Redis インスタンスに到達できる場合は、アプリケーションの接続設定を確認してください。 - ECS インスタンスの異常な動作により、セキュリティポリシーが適用され、サービスが無効になる。 通常、複数の ECS インスタンスが ApsaraDB for Redis
インスタンスに接続します。 次に、ECS インスタンスの 1 つに突然の接続の問題が発生します。 たとえば、ECS インスタンスから ApsaraDB for Redis
インスタンスへは ping コマンドのメッセージが到達できるが、ECS インスタンスが telnet コマンドで 6379 番ポートに接続しようとすると失敗します。 この場合、ECS インスタンスに対するアウトバウンド攻撃などの異常な動作により、サービスが無効になる場合があります。
解決策:
ECS インスタンスを確認し、セキュリティグループに正確なアウトバウンドルールを設定します。 たとえば、ECS インスタンスが、ApsaraDB for Redisインスタンスの 6379 番ポートなど、必要な IP アドレスとポートにのみ接続できるように定義できます。 問題が解決しない場合は、チケットを起票して、サポートセンターにお問い合わせください。
- DNS 名前解決中に、クライアントに次のエラーが発生する:
UnknownHostException
またはfailed to connect: r-***************.redis.rds.aliyuncs.com could not be resolved
。 解決策:ping コマンドまたは telnet コマンドを使用して、ApsaraDB for Redis インスタンスのDNS 名前解決の結果をテストします。 名前解決に失敗した場合は、DNS 設定を確認してください。
インターネットから ApsaraDB for Redis インスタンスへの接続
パスワードのリセット
サービスに接続するためのパスワードを忘れた場合、コンソールでパスワードをリセットします。
クライアントの ApsaraDB for Redis インスタンスへの接続
Jedis、phpredis、redis-py、C/C++、.NET、node-redis、および C# クライアントを ApsaraDB for Redis インスタンスに接続できます。 詳細については、「Redis クライアントを使用する」をご参照ください。
また、Redis コマンドラインインターフェイス (redis-cli) プログラムを使用して、ApsaraDB for Redis インスタンスに接続して管理することもできます。 詳細については、「redis-cli の使用」をご参照ください。
クライアント接続の問題
帯域幅の制限による接続エラーの発生
ApsaraDB for Redis インスタンスの各タイプには、最大帯域幅が設定されています。 詳細については、「仕様とパフォーマンス」をご参照ください。 ネットワークリソースが十分である場合、ApsaraDB for Redis インスタンスの帯域幅は無制限です。 ただし、ネットワークリソースが不十分な場合、指定された最大帯域幅がインスタンスに対して有効になります。 ネットワークトラフィックが多い場合、最大帯域幅によりサービスリクエストが制限されます。 解決策:
- インスタンスのメモリ分布を分析するか、SCAN コマンドを使用して大きなキーを見つけて ApsaraDB for Redis サービスを最適化します。
- インスタンスタイプをアップグレードして、帯域幅効率を高めます。
- 同じタイプのクラスターインスタンスを使用して、帯域幅効率を高めます。
パフォーマンスの問題による接続不良または失敗
- モニタリングデータをチェックして問題の原因を特定し、対応する措置を講じます。
- スローログをクエリし、スローログの詳細に基づいて ApsaraDB for Redis サービスを最適化します。 コンソールでスローログを表示するか、SHOW LOG コマンドを実行します。
- ApsaraDB for Redis インスタンスが本番環境で稼働しているときは、KEYS、FLUSHALL、および FLUSHDB コマンドを実行しないでください。 これらのコマンドを無効にするには、ApsaraDB for Redis の RENAME 機能を使用するか、SCAN コマンドを使用してデータを徐々に処理します。
- ApsaraDB for Redis インスタンスがエンジンバージョン 4.0 を使用している場合、Lazyfree 機能の UNLINK、FLUSHALL ASYNC、および FLUSHDB ASYNC コマンドおよび関連パラメーターを使用してサービスコードを最適化できます。
- インスタンスのメモリ分布を分析するか、SCANコマンドを使用して大きなキーを見つけ、ApsaraDB for Redis サービスを最適化します。
- ホットキーを最適化します。 クラスターインスタンスを使用する場合、指定された子ノードでホットキーを分析できます。
概要
ApsaraDB for Redis インスタンスへの接続に障害がある場合、前述の方法に従って、環境の前提条件、接続方法、エラーメッセージ、帯域幅制限、そしてパフォーマンス条件に関連する問題を見つけることができます。