やさしいEC2からRDS疎通確認(TCPレイヤー接続)
Contents
概要
はじめに
- 今回は、同一VPCに配置されたEC2~RDS間の疎通確認について記載します。
- なお、DBクライアントからの接続ではなく、TCP/IPレイヤーでの接続確認となります。
目的
- EC2、RDSを起動した後にEC2~RDS間の疎通確認を行います。特に、インフラ構築とその後のアプリデプロイやDBのテーブル作成以降の構築が別担当となることが多く、責任分界点として、各プロダクト間のサブネット、ルーティングやセキュリティグループが正しいことを確認することが目的です。
- TCP/IPレイヤーの確認であれば、EC2にDBクライアントをインストールする必要がないため、DBクライアントのインストールが不要です。RDSの種別ごとにクライアントのソフトも異なるため、この段階で準備の煩わしさを回避できます。
RDS疎通確認の方法
EC2(Windows Server)からのRDS疎通確認
- 以下に、Windows Server 2012 R2, 2016等で確認した際の手順を記載します。
- PowerShell を起動します。
- PowerShellから下記のコマンドを実行し、「TcpTestSucceeded」の結果が「True」で返ることを確認します。
- Test-NetConnection [RDSインスタンスのエンドポイント] -Port [ポート番号]
- エンドポイントの例:"DB 識別子.ap-northeast-1.rds.amazonaws.com"
- ポート番号:3306(MySQL)、5432(postgreSQL)、1433(Microsoft SQL Server)
- 成功時:
- 失敗時:
EC2(Linux)からのRDS疎通確認
- 以下に、CentOS 7で確認した際の手順を記載します。
- curlコマンドを実行し、「Connected to エンドポイント」と表示されることを確認します。
- curl -v telnet://[RDSインスタンスのエンドポイント]:[ポート番号]
- エンドポイントの例:"DB 識別子.ap-northeast-1.rds.amazonaws.com"
- ポート番号:3306(MySQL)、5432(postgreSQL)、1433(Microsoft SQL Server)
- 以下、成功時のログです。
$ curl -v telnet://niikawa-database-1-instance-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306
* About to connect() to niikawa-database-1-instance-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com port 3306 (#0)
* Trying 10.10.3.74...
* Connected to niikawa-database-1-instance-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com (10.10.3.74) port 3306 (#0)
J
←ここでEnter押下
* Closing connection 0
5.6.10=}~#,UJP清Y?o4Qz7@x_Qmysql_native_password
- 以下、失敗時のログです。
$ curl -v telnet://niikawa-database-1-instance-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306
* About to connect() to niikawa-database-1-instance-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com port 3306 (#0)
* Trying 10.10.3.74...
* Connection timed out
* Failed connect to niikawa-database-1-instance-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306; Connection timed out
* Closing connection 0
curl: (7) Failed connect to niikawa-database-1-instance-1.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306; Connection timed out
トラブルシューティング
- EC2、RDS間のサブネットが通信できることを確認します。具体的には、ルーティングが設定されていることを確認します。(同一のVPCに配置されたEC2からのアクセスであれば、特に変更の必要はない)
- EC2、RDS間の通信が許可されていることをセキュリティグループで確認します。シンプルな方法は、自グループのみDBのアクセスを許可するセキュリティグループを作成し、EC2およびRDSにアタッチする方法です。