独自設計の Amazon ElastiCache for Valkey および Amazon ElastiCache for Redis OSS クラスターでの接続に関する問題をトラブルシューティングしたいです。
解決策
クラスターの状態を確認する
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
クラスターを最近作成し、そのクラスターが Available 状態になっていない場合、接続の問題が発生する可能性があります。作成が完了したことを確認するには、クラスターおよび、そのクラスターにアタッチされた各ノードのステータスを確認します。
- [ステータス] 列に Available と表示されている場合は、そのクラスターは接続を受け入れられます。
- [ステータス] 列に Creating または Modifying と表示されている場合、クラスターの作成が進行中か、更新中です。ステータスが Available に更新されるまで数分待ちます。
クラスターの正常性を確認する
クラスターの正常性を確認するには、クラスターに関する情報を次のソースでレビューします。
セキュリティグループとネットワーク ACL の設定をレビューする
接続を開始する元であるクラスターとリソースで、セキュリティグループおよびネットワークアクセスコントロールリスト (ネットワーク ACL) の設定をレビューします。リソースにアクセスするには、セキュリティグループとネットワーク ACL を設定する必要があります。詳細については、「ElastiCache クラスターまたはレプリケーショングループへのアクセス」を参照してください。
クライアントリソースの例を次に示します。
- Amazon Elastic Compute Cloud (Amazon EC2) インスタンス
- AWS Lambda 関数
- Amazon Elastic Container Service (Amazon ECS) コンテナ
- Amazon Elastic Kubernetes Service (Amazon EKS) コンテナ
クラスターのセキュリティグループをレビューするには、次の手順を実行します。
- ElastiCache コンソールを開きます。
- ナビゲーションペインの [リソース] で [Valkey キャッシュ] または [Redis OSS キャッシュ] を選択し、クラスターを選択します。
- クラスターの詳細ページで [接続とセキュリティ] タブを選択します。
- 関連するセキュリティグループの少なくとも 1 つが、クライアントリソースからクラスターへのインバウンド接続を、クラスターのポートで許可していることを確認します。
- ポート番号を特定するには、いずれかのクラスターエンドポイントを確認します。エンドポイントは domain_name:port という形式です。
注: デフォルトでは、クラスターのポートは 6379/TCP です。クラスターの作成中に、ポート番号を上書きできます。
- クライアントリソースで、セキュリティグループがクラスターのポートから、クラスターのサブネットの CIDR ブロックへのアウトバウンド接続を許可していることを確認します。
- ネットワーク ACL が、クライアントとクラスター間の発信および受信接続を許可していることを確認します。さらに、ルートテーブルに適切なルートがあることを確認します。
注: ネットワーク ACL は、デフォルトではすべての接続を許可します。
ネットワーク設定を詳細にトラブルシューティングするには、Amazon Virtual Private Cloud (Amazon VPC) Network Access Analyzer を使用します。
接続に正しいエンドポイントを使用していることを確認する
クライアント側アプリケーションが、正しいエンドポイントを使用するように設定されていることを確認します。詳細については、「ElastiCache の接続エンドポイントを特定する」を参照してください。
Valkey または Redis OSS クラスターとクライアントとの間の TCP 接続を確認する
Valkey または Redis OSS クラスターとクライアントリソースの間に TCP 接続があることを確認します。ElastiCache クラスターとクライアント間の接続を確認するには、クライアントリソースから curl コマンドを実行します。
$ curl -v telnet://example-cluster-endpoint:6379
**注:**example-cluster-endpoint をクラスターのエンドポイントに置き換えてください。
出力例
* Trying 172.31.1.242:6379...* Connected to example-cluster-endpoint (172.31.1.242) port 6379
上記の例では、出力に Connected と表示されていれば、TCP 接続が成功したことを確認できます。
転送中の暗号化を行うクラスターへの接続をレビューする
TLS 経由で Valkey または Redis OSS クラスターのトラフィックを送信するには、転送中の暗号化を使用する必要があります。クライアントからの接続を確立するには、そのクライアントは TLS をサポートしている必要があります。
TLS をサポートする valkey-cli または redis-cli を使用している場合は、--tls 引数をコマンドに追加すると TLS サポートを有効化できます。
redis-cli の例
$ redis-cli -h example-encrypted-cluster-endpoint -p 6379 --tls
valkey-cli の例
$ valkey-cli -h example-encrypted-cluster-endpoint -p 6379 --tls
**注:**example-encrypted-cluster-endpoint をクラスターの暗号化されたエンドポイントに置き換えてください。
出力例
example-encrypted-cluster-endpoint:6379>
valkey-cli または redis-cli が TLS をサポートしていない場合、次のエラーが発生します。
"Unrecognized option or bad number of args for: '--tls' "
上記のエラーをトラブルシューティングするには、TLS をサポートする valkey-cli または redis-cli をインストールしてください。
認証を使用するクラスターへの接続を確認する
認証を使用するクラスターへの接続を確認するには、valkey-cli または redis-cli を使用します。詳細については、「クラスターのノードに接続する」の「暗号化/認証が有効なクラスターに接続する」セクションを参照してください。
redis-cli の例
redis-cli -h your-cluster-endpoint -p 6379 --tls -c --user your-user --askpass # Enter the password when prompted
valkey-cli の例
valkey-cli -h your-cluster-endpoint -p 6379 --tls -c --user your-user --askpass # Enter the password when prompted
注: valkey-cli コマンドと redis-cli コマンドには、--tls および、--askpass または -a の両方の引数が必要です。これらの引数が指定されていないか、使用したパスワードが誤っている場合、NOAUTH または AUTH failed というメッセージが表示されます。valkey-cli または redis-cli で --tls 引数のみを使用する場合は、AUTH <password> を使用して接続後に認証を完了させます。
クライアントリソースの DNS 属性を更新する
DNS に問題がある場合は、「Name or service not known」または「NXDOMAIN」というエラーが発生する場合があります。これらのエラーは、カスタム DNS サーバー経由での DNS ルックアップが失敗した場合に発生します。これらのエラーを解決するには、Amazon VPC クライアントリソースに正しい DNS 属性があることを確認してください。
注: 仮想プライベートクラウド (VPC) では、Amazon DNS サーバーの使用をおすすめします。
クライアント接続を確認する
CurrConnections や NewConnections などの、Valkey および Redis OSS 用のメトリクスを参照すると、ElastiCache クラスターのクライアント接続に関する詳細を確認できます。****ElastiCache は 4 ~ 6 個の接続を使用してクラスターを監視します。
クライアント接続の詳細を確認するには、次の valkey-cli または redis-cli コマンドを実行します。
$ CLIENT LIST
コマンドの出力には、IP アドレス、アイドル時間、その他の情報を含む、接続されているすべてのクライアントが一覧表示されます。詳細については、Valkey のウェブサイト「CLIENT LIST」および Redis OSS のウェブサイト「CLIENT LIST」を参照してください。
クラスターとクライアントリソース間のネットワーク接続をレビューする
ElastiCache クラスターへのアクセス方法によっては、遅延の問題が発生する可能性があります。遅延を最小限に抑えるには、Amazon EC2 または同じ Amazon VPC 内のリソースから ElastiCache にアクセスすることをおすすめします。詳細については、「Amazon VPC 内の ElastiCache キャッシュにアクセスするためのアクセスパターン」および「Elasticache クラスターまたはレプリケーショングループにアクセスする」を参照してください。
関連情報
持続的な接続の問題
Valkey または Redis OSS クラスター、またはレプリケーショングループに接続する (Linux)