Amazon Aurora への接続に関する問題をトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

Amazon Aurora を実行している Amazon Relational Database Service (Amazon RDS) クラスターまたはインスタンスに接続する際に問題が発生します。

簡単な説明

Amazon Aurora DB クラスターまたはインスタンスに接続するときに、次のいずれかの理由で問題が発生する可能性があります。

  • Aurora DB クラスターまたはインスタンスはまだ作成中で、まだ使用可能な状態ではありません。
  • DB インスタンスのセキュリティグループ、ACL、またはローカルファイアウォールが、ソースインスタンスまたはその IP アドレスからの接続をブロックしています。
  • Amazon Virtual Private Cloud (Amazon VPC) サブネットのルートテーブルは、マシンまたはインスタンスからのトラフィックを許可していません。
  • パブリックインターネットを使用してローカルマシンから接続している場合、インスタンスはパブリックサブネットでパブリックにアクセスできない可能性があります。
  • DNS の名前解決が失敗しています。これは、クライアントが正しい Aurora エンドポイントに接続していない場合に発生する可能性があります。
  • Amazon RDS DB インスタンスは、インスタンスの復旧またはフェイルオーバー中です。これは、基盤となるハードウェアまたはデータベースプロセスに問題がある場合に発生する可能性があります。

解決方法

一般的な接続問題の解決方法については、「Amazon RDS DB インスタンスに接続する際の問題を解決するにはどうすればよいですか?」を参照してください。

Aurora DB クラスターの場合は、クライアントが正しいエンドポイントに接続していることを確認します。Amazon Aurora はマネージドサービスであるため、MySQL クライアントツールまたは PostgreSQL クライアントツールを使用して Aurora DNS エンドポイントに接続する必要があります。

Aurora エンドポイントへの接続を確認する

正しい Aurora エンドポイントに接続していることを確認してください。

クライアントが現在接続しているクラスター、ライター、リーダー、カスタムエンドポイントを確認するには、次の手順を実行します。

1.    Amazon RDS コンソールを開きます。

2.    ナビゲーションペインから [データベース] を選択します。

3.    リソースのグループから DB クラスターを選択します。次に、「接続とセキュリティ」の「エンドポイント」セクションでクラスターの詳細を確認します。

4.    telnet / nc を使用してエンドポイントへの接続を確認します。

telnet <RDS endpoint> <port number>
nc -vz <RDS endpoint> <port number>

Telnet の結果の例:

[root@ip-172-XX-X-XX ~]# telnet postgres.cluster-XXXXXXX.us-east-1.rds.amazonaws.com 5432
Trying 172.XX.X.XX...
Connected to postgres.cluster-XXXXXXX.us-east-1.rds.amazonaws.com.

ネットキャットの結果の例:

[root@ip-172-XX-X-XX ~]# nc -vz postgres.cluster-XXXXXXX.us-east-1.rds.amazonaws.com 5432
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 172.XX.X.XX:5432.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

5.    接続した後、使用しているエンジンに応じて次のコマンドを実行して、リーダーエンドポイントまたはライターエンドポイントに接続していることを確認します。

"SHOW GLOBAL VARIABLES LIKE 'innodb_read_only';"  --> MySQL
"SHOW transaction_read_only;" --> PostgreSQL

Amazon Aurora PostgreSQL 互換エディションのライターとリーダーからの出力例をご覧ください。

ライター:

postgres=> SHOW transaction_read_only;
 transaction_read_only
-----------------------
 off
(1 row)

リーダー:

postgres=> SHOW transaction_read_only;
 transaction_read_only
-----------------------
 on
(1 row)

Amazon Aurora MySQL 互換エディションのライターとリーダーによるこれらの結果例を参照してください。

ライター:

SHOW GLOBAL VARIABLES LIKE 'innodb_read_only';
innodb_read_only | OFF

リーダー:

SHOW GLOBAL VARIABLES LIKE 'innodb_read_only';
innodb_read_only | ON

変数が ON に設定されている場合、Aurora レプリカに接続されています。この変数が OFF に設定されている場合は、プライマリインスタンスに接続しています。

Amazon EC2 インスタンスから DB インスタンスへの自動接続をセットアップする

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから DB インスタンスへの接続を確立できます。そのためには、Amazon RDS コンソールから EC2 接続を設定するオプションを使用します。

この接続をセットアップする前に、EC2 インスタンスが DB インスタンスと同じ VPC に存在することを確認してください。DB インスタンスと同じ VPC に EC2 インスタンスがない場合は、コンソールを使用してサブネットで新しい EC2 インスタンスを起動します

接続の設定に使用しているユーザーに正しい権限があることを確認してください。

  • ec2: セキュリティグループの退出を許可
  • ec2: セキュリティグループの進入を許可
  • ec2: セキュリティグループの作成
  • ec2: インスタンスの説明
  • ec2: ネットワークインターフェースの説明
  • ec2: セキュリティグループの説明
  • ec2: ネットワークインターフェース属性の変更
  • ec2: セキュリティグループの退出の取り消し

権限を確認したら、DB インスタンスを設定して自動接続を設定します。

1.    Amazon RDS コンソールを開きます。

2.    ナビゲーションペインで、[Databases] (データベース) を選択してから、DB インスタンスを選択します。Aurora データベースを使用している場合は、代わりにクラスターを選択してください。

3.    [アクション] で [EC2 接続のセットアップ] を選択します。

4.    EC2 接続の設定ページで、DB インスタンスまたはクラスターに接続する EC2 インスタンスを選択します。同じ VPC に EC2 インスタンスが存在しない場合は、[EC2 インスタンスを作成] を選択してインスタンスを作成します。この場合、新しい EC2 インスタンスが DB インスタンスまたはクラスターと同じ VPC にあることを確認してください。

5.    [続行] を選択します。

6.    確認と確認ページで、Amazon RDS が EC2 インスタンスとの接続を設定するために行う変更を確認します。変更が正しければ、[接続をセットアップ] を選択します。


関連情報

Amazon RDS DB インスタンスに接続できない

Amazon RDS のセキュリティ

Amazon Virtual Private Cloud のセキュリティ

EC2 インスタンスと RDS データベースを自動的に接続する

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