Amazon RDS DB インスタンスへの接続時に発生する問題をトラブルシューティングする方法を教えてください。
Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続できない原因をトラブルシューティングしたいと考えています。
簡単な説明
Amazon RDS DB インスタンスへの接続がブロックされる一般的な原因を次に示します。
- DB インスタンスの状態が Available、Storage optimization、Backing-up ではない場合。
- セキュリティグループ、ネットワークアクセスコントロールリスト (ACL)、またはローカルファイアウォールでは、DB インスタンスに接続するソースに対する認証アクセスが付与されていない場合。
- DB インスタンスへの接続に使用する DNS 名またはエンドポイントが誤っている場合。
- マルチ AZ DB インスタンスがフェイルオーバーしており、セカンダリ DB インスタンスがインバウンド接続を許可しないサブネットまたはルートテーブルを使用している場合。
- ユーザー認証に誤りがある場合。
解決策
接続の問題をトラブルシューティングするには、次の 1 つまたは複数の手順を実行します。
オートメーションランブックを使用する
AWS Systems Manager Automation ドキュメント AWS Support-ConnectivityToRDS を使用して問題を診断します。
このオートメーションドキュメントでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのプライマリ IP アドレスに基づいてネットワーク ACL を診断できます。ただし、エフェメラルポートは検証されません。このオートメーションドキュメントでは、Amazon EC2 インスタンスのプライマリ IP アドレスに基づいてセキュリティグループもチェックされますが、特定のポートはチェックされません。詳細については、「Systems Manager オートメーションを活用して自動操作を実行する」を参照してください。
ランブックの実行方法と確認内容の詳細については、AWSSupport-TroubleshootConnectivityToRDS を参照してください。
オートメーションが完了したら、[出力] セクションで詳細な結果を確認します。このランブックで問題を特定できない場合は、次の手動手順で続行してください。
DB インスタンスの状態が available であることを確認する
直近に DB インスタンスを起動またはリブートした場合は、その DB インスタンスが Amazon RDS コンソールで available ステータスと表示されることを確認します。DB インスタンスのサイズによっては、DB インスタンスがネットワーク接続に使用できるようになるまでに最大 20 分かかる場合があります。
DB インスタンスが接続を許可していることを確認する
次の 1 つまたは複数の構成要件により、DB インスタンスへの接続元からのトラフィックが遮断されていないことを確認します。
- DB インスタンスに関連付けられている Amazon Virtual Private Cloud (Amazon VPC) セキュリティグループ: Amazon VPC に関連付けられたセキュリティグループにルールを追加し、DB インスタンスを出入りするソースに関連するトラフィックを許可します。IP アドレス、IP アドレス範囲、または別の VPC セキュリティグループを指定できます。VPC と DB インスタンスに関する一般的な情報については、「VPC の DB インスタンスにアクセスするシナリオ」を参照してください。
- ネットワーク ACL: ネットワーク ACL は、VPC 内の特定のサブネットのリソースに対するファイアウォールとして機能します。VPC 内の ACL には、DB インスタンスとの間のインバウンドトラフィックとアウトバウンドトラフィックを許可するルールが必要です。
- VPC 外部の接続: DB インスタンスがパブリックアクセス可能であり、パブリックサブネットに関連付けられていることを確認します。たとえば、ルートテーブルでインターネットゲートウェイからのアクセスを許可します。詳細については、「VPC 内の DB インスタンスにアクセスするシナリオ」を参照してください。
プライベートサブネットの DB インスタンスの場合は、VPC ピアリングまたは AWS Site-to-Site VPN を使用すると、インスタンスに安全に接続できます。Site-to-Site VPN を使用して、VPC がリモートネットワークに接続できるように、カスタマーゲートウェイを設定します。VPC ピアリングを使用してソース VPC とインスタンスの VPC の間にピアリング接続を作成し、VPC の外部からインスタンスにアクセスします。Amazon EC2 インスタンスを踏み台 (ジャンプ) ホストとして使用することもできます。 - ネットワークまたはローカルのファイアウォール: DB インスタンスがインバウンドとアウトバウンドの通信に使用するポートを出入りするトラフィックがネットワークで許可されているかどうかを、ネットワーク管理者に確認してください。
注: Amazon RDS は、ping などのインターネット制御メッセージプロトコル (ICMP) トラフィックを受け入れません。
Amazon RDS と VPC 間の接続に関連する問題をトラブルシューティングする補助として、Reachability Analyzer を使用します。
DNS 名またはエンドポイントの潜在的な問題
DB インスタンスへの接続時には、Amazon RDS コンソールから取得した DNS 名 (エンドポイント) を使用します。正しいエンドポイントを使用していることを確認します。また、DB インスタンスへの接続に使用するクライアントには、エンドポイントを適切な形式で指定する必要があります。DB エンジン接続の詳細および、さまざまなクライアントアプリケーションでのエンドポイントの使用方法については、「Amazon RDS のスタート方法」を参照してください。
たとえば、nslookup を使用すると、VPC 内の Amazon EC2 インスタンスからの DB インスタンスエンドポイントを確認できます。
nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com Server: xx.xx.xx.xx Address: xx.xx.xx.xx#53
信頼できない回答の例:
Name: myexampledb.xxxx.us-east-1.rds.amazonaws.comAddress: 172.31.xx.x
接続を確認する
次のいずれかのコマンドを実行して接続を確認します。
telnet <RDS endpoint> <port number> nc -zv <RDS endpoint> <port number>
telnet コマンドと nc コマンドは、クライアントとサーバー間の接続をテストします。telnet コマンドまたは nc コマンドのいずれかが成功した場合は、ネットワーク接続が確立されています。この接続は、データベースへのユーザー認証が問題の原因であることを示しています (例: ユーザーネームやパスワードの問題)。
データベースレベルの問題
次のデータベースレベルの設定が正しく構成されていることを確認します。
- DB クライアントからインスタンスにアクセスするための正しいユーザー名とパスワードを使用している。
- ユーザーには、DB インスタンスに接続するためのデータベース権限が存在する。
- Amazon RDS のリソースには、CPU またはメモリの競合などのスロットリングが発生していない。インスタンスへの新しい接続を確立するときに、メモリ競合が原因で問題が発生する可能性があります。Amazon RDS Proxy など、接続プーリングソリューションでアプリケーションのスケーリング機能を改善し、新規接続を開くたびに発生するメモリと CPU のオーバーヘッドを防ぐことを検討してください。
- Amazon RDS MySQL 互換において、インスタンスが max_connections 制限に達していない。
- Amazon RDS MySQL 互換において、max_user_connections、max_updates などのアカウントリソース制限を超過していないことを確認する。
- Amazon RDS MySQL 互換において、あるホストからクライアント接続処理エラーが連続して発生すると、max_connect_errors システム変数に対してカウントされます。この変数を超えると、ホストはブロックされ、同じホストからの接続は拒否されます。この問題を解決するには、MySQL バージョン 8.0.23 以前では、ホストキャッシュをフラッシュします。それ以降のバージョンでは、performance_schema host_cache テーブルを切り捨ててください。詳細については、Troubleshoot Amazon RDS for MySQL and Amazon RDS for MariaDB Errors (Amazon RDS for MySQL と RDS for MariaDB のエラーをトラブルシューティングする) を参照してください。
インスタンスに関連付けられているルートテーブルを確認する
各 DB インスタンスに関連付けられたサブネットは、同一または同等のルートテーブルに関連付けられている必要があります。プライマリ DB インスタンスが、別のルートテーブルに関連付けられたスタンバイレプリカにフェイルオーバーした場合、トラフィックは正しくルーティングされない可能性があります。以前のトラフィックが正常にルーティングされていた場合も、正しくルーティングされなくなる可能性があります。
詳細については、「ルートテーブルを設定する」および「Amazon RDS でのマルチ AZ 配置の設定と管理」を参照してください。
注: DB インスタンスには接続できるが、エラーが発生する場合は、「Amazon RDS DB インスタンスのマスターユーザーパスワードをリセットする方法を教えてください」を参照してください。
関連情報
VPC のパブリックサブネットまたはプライベートサブネットを使用する Amazon RDS DB インスタンスへの接続をトラブルシューティングする方法を教えてください
SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化
VPC Reachability Analyzer を使用して Amazon RDS データベースへのネットワーク接続をトラブルシューティングする
関連するコンテンツ
- 質問済み 10ヶ月前

