自分で設計した Redis 用 ElastiCache クラスターの接続問題をトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

自分で設計した Redis 用 Amazon ElastiCache クラスターの接続に関する問題をトラブルシューティングしたいと考えています。

解決策

自分で設計した Redis 用 ElastiCache クラスターの接続問題をトラブルシューティングするには、以下を実行します。

クラスターが使用可能な状態であることを確認します

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

最近クラスターを作成した場合は、クラスターの作成が完了し、クラスターが接続を受け入れる準備ができていることを確認します。クラスターのステータスを確認するには、ElastiCache コンソール、AWS CLI、または ElastiCache API を使用してクラスターの詳細を表示しますステータス列を確認して、次のことをチェックします。

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

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

正常なクラスター内のノードは使用可能状態です。クラスターの状態を確認するには、次の手順を実行します。

クラスターとクライアントリソース間のネットワーク接続を確認する

レイテンシーを最小限に抑えるには、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから、または同じ Amazon Virtual Private Cloud (Amazon VPC) 内のリソースから ElastiCache にアクセスします。また、Amazon VPC の外部または AWS の外部から接続することも可能です。詳細については、Access Patterns for accessing an ElastiCache cache in an Amazon VPCAccessing your cluster or replication group を参照してください。AWS リソース間の接続を分析し、接続に関する問題をさらにトラブルシューティングするには、Amazon VPC Network Access Analyzer を使用します。

セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) が接続を許可していることを確認する

接続が開始されたクラスターとリソースのセキュリティグループとネットワーク ACL を確認します。セキュリティグループとネットワーク ACL が正しく設定されていることを確認します。クライアントリソースの例は次のとおりです。

  • Amazon EC2 インスタンス
  • AWS Lambda 関数
  • Amazon Elastic Container Service (Amazon ECS) コンテナ
  • Amazon Elastic Kubernetes Service (Amazon EKS) コンテナ

クラスターセキュリティグループを確認する

クラスターのセキュリティグループを確認するには、次の手順を実行します。

  1. ElastiCache コンソールを開きます。
  2. Redis クラスターメニューからクラスター名を選択し、ネットワークとセキュリティタブを選択します。
    **注:**デフォルトでは、セキュリティグループが関連付けられていない場合、クラスターは Amazon VPC セキュリティグループを使用します。
  3. 関連するセキュリティグループの少なくとも 1 つが、クライアントリソースからクラスターのポート上のクラスターへのインバウンド接続を許可していることを確認します
  4. ポート番号を確認するには、クラスターのいずれかのエンドポイントを確認します。エンドポイントはdomain_name:port 形式です。
    **注:**デフォルトでは、クラスターのポートは 6379/TCP です。クラスターの作成中に、ポート番号を上書きできます。
  5. クライアントリソースで、セキュリティグループがクラスターのポートおよびクラスターのサブネットの CIDR ブロックへのアウトバウンド接続を許可していることを確認します。
  6. ネットワーク ACL が、クライアントとクラスター間の発信および受信接続を許可していることを確認します。
    **注:**デフォルトのネットワーク ACL は通常、すべての接続を許可します。
  7. セキュリティグループとネットワーク ACL の設定をさらにトラブルシューティングするには、Amazon VPC Network Access Analyzer を使用します。

接続に正しいエンドポイントが使用されていることを確認する

接続エンドポイントは、クラスター構成に基づいて推奨されます。詳細については、接続エンドポイントの検索を参照してください。

クライアント側の DNS 解決を確認する

DNS に問題がある場合は、Name or service not known または NXDOMAIN エラーが表示されることがあります。これらのエラーを解決するには、Amazon VPC クライアントリソースに正しい DNS 属性があることを確認してください。Amazon DNS サーバーを使用するのがベストプラクティスです。

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

Redis とクライアント間の接続を確立して確認するには、curl コマンドを使用します。
**注:**example-cluster-endpoint をクラスターのエンドポイントに置き換えてください。

$ curl -v telnet://example-cluster-endpoint:6379

出力例:

*   Trying 172.31.1.242:6379...
* Connected to example-cluster-endpoint (172.31.1.242) port 6379

前の例では、Connected キーワードは、TCP 接続が機能していることを示しています。コマンド出力に Connected が表示されない場合は、以下を確認してください。

  • クラスターで、セキュリティグループがクラスターのポートでの接続を許可していることを確認します。クラスター設定ページでポート値を確認します(デフォルトのポートは TCP/6379)。 詳細については、ElastiCache クラスターの変更を参照してください。
  • クラスターで、すべてのシャードとノードが 使用可能な状態であることを確認します。詳細については、Viewing a cluster's detailsを参照してください。
  • クライアントリソースで、セキュリティグループがクラスターの IP アドレスとポートへの発信接続を許可していることを確認します。
  • クライアントリソースで、ルーティングテーブルに適切なルートがあり、クラスターに到達できることを確認します。
  • クライアントリソースで、正しい接続が設定されていることを確認します。クライアントリソースは、同じ Amazon VPC、別の Amazon VPC、AWS の外部にある可能性があります。接続は、VPN、Amazon VPC Peeringトランジット Amazon VPCAWS Transit Gateway、または AWS Direct Connectを使用するように設定できます。詳細については、Access Patterns for accessing an ElastiCache cache in an Amazon VPCAccessing your cluster or replication group を参照してください。

**注:**Amazon ElastiCache は同じ Amazon VPC からアクセスできるように設計されており、低レイテンシーを実現します。Amazon VPC の外部に接続すると、レイテンシーが増加する可能性があります。レイテンシーの増加は、パブリックインターネットを直接またはトンネリングを介して使用する接続で発生します。また、レイテンシーが増加すると、接続またはタイムアウトの問題が発生する可能性があります。アクセスをブロックした場合は、Amazon VPC Reachability Analyzer を使用してさらにトラブルシューティングを行います。

転送中に暗号化されているクラスターへの接続を確認する

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

redis-cli がインストールされていて、TLS がサポートされている場合は、コマンドに --tls 引数を追加します。
**注:**example-encrypted-cluster-endpoint をクラスターの暗号化されたエンドポイントに置き換えてください。

$ redis-cli -h example-encrypted-cluster-endpoint --tls

出力例:

example-encrypted-cluster-endpoint:6379>

TLS をサポートしていない redis-cli を使用している場合は、次のエラーが表示されます。

"Unrecognized option or bad number of args for: '--tls'"

上記のエラーをトラブルシューティングするには、TLS サポートを使用して redis-cl をインストールするか、TLS サポートなしで redis-cliopenssl コマンドを使用します。詳細については、ステップ 4 のRedis クラスターまたはレプリケーショングループ (Linux) への接続セクションを参照してください。 クラスターのノードに接続します

認証が有効になっているクラスターへの接続を確認する

認証されたクラスターへの接続を確認するには、redis-cli または openssl コマンドを使用します。詳細については、ステップ 4 の暗号化/認証が有効なクラスターへの接続セクションを参照してください。 クラスターのノードに接続します

注:redis-cli コマンドには、--tls 引数と --askpass (または**-a**) 引数の両方が必要です。これらの引数が指定されていない場合、または誤ったパスワードを使用した場合は、NOAUTH または AUTH failed のメッセージが表示されます。redis-cli--tls を使用する場合は、接続後に AUTH パスワードを使用して認証を完了します。

関連情報

Additional troubleshooting steps

AWS公式
AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ