ElastiCache for Redis クラスターに接続できないのはなぜですか。

所要時間3分
0

Amazon ElastiCache for Redis クラスターに接続できません。これをトラブルシューティングするにはどうすればよいですか。

簡単な説明

接続の問題には、複数の根本的な原因が考えられます。最も一般的な問題は次のとおりです。

  • クラスターの準備ができていません。
  • クラスターが異常です。
  • ネットワーク設定が正しくありません。
  • クライアントの設定が正しくありません。

解像度

クラスターの準備ができていることを確認します

最近クラスターを作成した場合は、クラスターの作成が完了し、クラスターが接続を受け入れる準備ができていることを確認してください。

ElastiCache コンソール、AWS コマンドラインインターフェイス (AWS CLI)、または ElastiCache API を使用して、クラスターのステータスを確認します。次のステータス列を確認します。

  • ステータス列に使用可能と表示されている場合、クラスターは準備完了です
  • ステータス列に作成中と表示されている場合、クラスターの作成はまだ進行中です。[Available] (利用可能) に更新されるまで数分待ちます。
  • ステータス列に変更中と表示されている場合は、クラスターの設定が更新されています。変更が完了し、ステータスが利用可能に変わるまで数分待ちます。

クラスターが正常であることを確認します

正常なクラスターでは、個々のノードが使用可能状態になっている必要があります。クラスターの状態を確認するには、次の手順を実行します。

クラスターとクライアントリソース間のネットワークレベルの接続を確認します

レイテンシーを最小限に抑えるには、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから ElastiCache にアクセスします。同じ Amazon Virtual Private Cloud (Amazon VPC) 内の他のリソースから Amazon ElastiCache にアクセスすることも、待ち時間を最小限に抑えるのに役立ちます。ただし、VPC の外部から、または AWS の外部からでも接続することは可能です。

ElastiCache への接続の詳細については、以下を参照してください。

接続プロセスを自動化するには、VPC Network Access Analyzer サービスを使用して、AWS リソース間の接続の問題をトラブルシューティングします。

セキュリティグループとネットワーク ACL が接続を許可していることを確認します

このステップは、ElastiCache クラスターと接続を開始しているリソースで実行します。クライアントリソースの例は次のとおりです。

  • Amazon EC2 インスタンス
  • AWS Lambda 関数
  • Amazon Elastic Container Service (Amazon ECS) またはAmazon Elastic Kubernetes Service (Amazon EKS) コンテナなど。

ElastiCache で、セキュリティグループが正しく設定されていることを確認します。その他のリソースについては、セキュリティグループとネットワーク ACL を確認してください。

ElastiCache クラスターのセキュリティグループを確認します

1.    Redis クラスターメニューからクラスター名を選択し、ネットワークとセキュリティタブを選択します。

2.    関連するセキュリティグループの少なくとも 1 つが、クライアントリソースからクラスターのポート上のクラスタへのインバウンド接続を許可していることを確認します。

3.    ポート番号を確認するには、クラスターのいずれかのエンドポイントを確認します。エンドポイントは domain_name:port 形式です。

**注:**クラスターのポートは、デフォルトで 6379/TCP です。クラスターの作成中にポート番号を上書きできます。

4.    クライアントリソースで、セキュリティグループがクラスターのポートおよびクラスターのサブネットの CIDR ブロックへのアウトバウンド接続を許可していることを確認します。

5.    ネットワーク ACL が、クライアントとクラスター間の発信および着信接続を許可していることを確認します。デフォルトのネットワーク ACL は通常、すべての接続を許可します。

注: VPC Network Access Analyzer サービス を使用して、セキュリティグループとネットワーク ACL の設定のトラブルシューティングを行うことができます。

接続の正しいエンドポイントを特定する

推奨される接続エンドポイントは、クラスター設定によって異なります。正しいエンドポイントと可能な構成を見つける方法の詳細については、「接続エンドポイントの検索」を参照してください。

DNS 解決がクライアント側で機能することを確認します

DNSの問題は通常、名前またはサービスが不明であり、NXDOMAIN エラーメッセージによって識別されます。

$ nslookup nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com
Server:         172.31.0.2
Address:        172.31.0.2#53

** server can't find nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com: NXDOMAIN
$ redis-cli -h nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com
Could not connect to Redis at nonexistent.1234id.clustercfg.euw1.cache.amazonaws.com:6379: Name or service not known

上記のエラーが表示された場合は、VPC クライアントリソースの DNS 属性を確認してください。

可能であれば、Amazon DNS サーバーを使用することをお勧めします。詳細については、「Amazon DNS サーバー」をご覧ください。

クライアントと Redis 間の TCP 接続を確認します

curl または telnet コマンドを使用して、TCP 接続を確立し、接続を確認します。

$ curl -v telnet://test.1234id.clustercfg.euw1.cache.amazonaws.com:6379
*  Trying 172.31.1.242:6379...
* Connected to test.1234id.clustercfg.euw1.cache.amazonaws.com (172.31.1.242) port 6379 (#0)

前の例では、 Connected キーワードは、TCP 接続が機能することを示しています。

コマンド結果に Connected が表示されない場合は、以下を確認してください。

ElastiCache クラスターで

  • セキュリティグループは、クラスタータのポートでの接続を許可する必要があります。クラスター設定ページでポート値を確認します (デフォルトはTCP/6379)。詳細については、「ElastiCache クラスターの変更」を参照してください。
  • クラスターとそのすべてのシャードおよびノードは、使用可能な状態である必要があります。詳細については、「クラスターの詳細の表示」を参照してください。

クライアントリソースで

  • セキュリティグループは、クラスターの IP およびポートへの発信接続を許可する必要があります。
  • クラスターに到達できるように、ルーティングテーブルには適切なルートが必要です。
  • リソースは同じ VPC に含めることができます。または、リソースが別の VPC 内または AWS の外部にある場合は、適切な接続が設定されていることを確認してください。これは、VPN または VPC-Peering、DirectLink などである可能性があります。詳細については、「クラスターまたはレプリケーショングループへのアクセス」を参照してください。
    注: Amazon ElastiCache は、同じ VPC からアクセスできるように設計されており、低遅延を保証します。VPC の外部に接続すると、余分な遅延が発生します。この余分な遅延は、パブリックインターネットを直接またはトンネリングを介して使用する接続で特に一般的です。Redis はレイテンシーに非常に敏感であるため、余分なレイテンシーが接続とタイムアウトの問題を引き起こす可能性があります。

VPC Reachability Analyzer は、アクセスをブロックしているものを特定するのに役立つツールです。

転送中の暗号化を使用したクラスターへの接続のトラブルシューティング

転送中の暗号化は、TLS を介して Redis トラフィックを送信することで機能します。接続が機能するには、クライアントが TLS をサポートしている必要があります。

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com

redis-cli がインストールされていて、TLS がサポートされている場合は、コマンドに --tls 引数を追加します。

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com --tls
encrypted.1234id.clustercfg.euw1.cache.amazonaws.com:6379>

redis-cli が TLS サポートなしでコンパイルされた場合、次のエラーが表示されます。

$ redis-cli -h encrypted.1234id.clustercfg.euw1.cache.amazonaws.com --tls
Unrecognized option or bad number of args for: '--tls'

上記のエラーのトラブルシューティングを行うには、次のいずれかを実行します。

後で redis-cli を使用する場合は、TLS サポートを使用して redis-cli をコンパイルすることをお勧めします。Amazon Linux 2 および Amazon Linux のステップについては、「ステップ 4: クラスターのノードに接続する」の「redis-cli をダウンロードしてインストールする」を参照してください。

  • または -

openssl などの代替コマンドを使用します。openssl コマンドはほとんどのシステムで使用可能であり、TLS をサポートする redis-cli が使用できない場合に役立ちます。以下、openssl コマンドの例を示します。

$ openssl s_client -connect encrypted.1234id.clustercfg.euw1.cache.amazonaws.com:6379
CONNECTED(00000003)
----- omitted --------
INFO
# Server
redis_version:6.2.6
----- omitted -----

詳細については、「ステップ 4: クラスターのノードに接続する」の「暗号化/認証が有効なクラスターへの接続」セクションを参照してください。

認証を使用してクラスターに接続する際のトラブルシューティング

redis-cli

認証付きのすべてのクラスターには TLS が必要です。redis-cli コマンドには、-tls 引数と --askpass (または -a) 引数の両方が必要です。

--askpass 引数が指定されていない場合、次の出力が返されます。

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls
auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com:6379> INFO # or any other Redis command
NOAUTH Authentication required.

コマンドに誤ったパスワードが含まれている場合、次の出力が表示されます。

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls --askpass
Please input password: *************
Warning: AUTH failed

以下は、期待どおりに機能した正しいパスワードを使用した Redis コマンドの例です。

$ redis-cli -h auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com --tls --askpass
Please input password: ******************
auth-cluster.1234id.clustercfg.euw1.cache.amazonaws.com:6379> INFO
# Server
redis_version:6.2.6
----- omitted -----

openssl

openssl コマンドを使用して接続をテストできます。このコマンドは、デバッグ目的でのみ使用してください。

$ openssl s_client -connect master.auth-cluster.3i1yig.euw1.cache.amazonaws.com:6379
CONNECTED(00000003)
----- omitted -----
---
AUTH topsecretpassword
+OK
INFO
# Server
redis_version:6.2.6
----- omitted -----

詳細については、「ステップ 4: クラスターのノードに接続する」の「暗号化/認証が有効なクラスターへの接続」セクションを参照してください。

ElastiCache 接続のトラブルシューティングの詳細については、トラブルシューティングを参照してください。


AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ