やさしいEC2からRDS疎通確認(TCPレイヤー接続)

AWS,RDS

概要

はじめに

  • 今回は、同一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にアタッチする方法です。

AWS,RDS

Posted by takaaki