web-dev-qa-db-ja.com

同じVPC上のEC2からRDSに接続する

NATなしの1つのサブネットで実行されているRDSインスタンスと、インターネットゲートウェイが構成されている別のサブネットで実行されているEC2インスタンスがあり、どちらも同じVPCに配置されています。 RDSインスタンスをパブリックにアクセスできないように設定しました。

リモートEC2(2番目のサブネットで実行)で次のコマンドを使用して、RDSインスタンスに接続しています。

mysql -h xxxx.eu-central-1.rds.amazonaws.com -P 3306 -u root -p

RDSの構成時に設定した正しいパスワードを入力しましたが、次のエラーが発生します。

エラー2003(HY000): 'XXX.eu-central-1.rds.amazonaws.com'(110)のMySQLサーバーに接続できません

チェックしましたが、名前解決の問題ではありません。 ec2はエンドポイントを正しい内部IPに変換します。


これが私の設定です:

RDS

[〜#〜] vpc [〜#〜]:EC2と同じ

利用可能ゾーンeu-central-1b

[〜#〜] subnet [〜#〜]:RDSパネルですべてのサブネットを表示できますが、ゾーンbのプライベートサブネットで使用可能なIPが1つ少ないことがわかります

セキュリティグループ:プライベートセキュリティグループ(アウトバウンドルールなし、およびmysqlポートとパブリックセキュリティグループをソースとするインバウンドの単一ルール内)

パブリックアクセス可能:いいえ

マルチAZ:いいえ

EC2

[〜#〜] vpc [〜#〜]:RDSと同じ

利用可能ゾーンeu-central-1b

[〜#〜] subnet [〜#〜]:ゾーンbのパブリックサブネット

セキュリティグループ:パブリックセキュリティグループ(任意のソースからのすべてのポートを受信規則として、任意のソースからのssh、httpおよびhttpsポートを送信規則として)

httpとsshを使用してEC2インスタンスにアクセスできます。期待どおりに動作します。

VPC

[〜#〜] vpc [〜#〜]:RDSとEC2の両方が同じものを使用します

[〜#〜] subnets [〜#〜]:各AZに対して1つのパブリックと1つのプライベート、合計4つ

[〜#〜] dhcp [〜#〜]:デフォルトのもの(domain-name = eu-central-1.compute.internaldomain-name-servers = AmazonProvidedDNS

ルートテーブル:パブリックサブネットの場合はlocal(自動)に、インターネットゲートウェイにルーティングし、プライベートの場合はlocalのみ(自動)にルーティングします。

ACLs:public:allow allインバウンドとアウトバウンドの両方。プライベート:allow allインバウンドのみ。また、インバウンドとアウトバウンドの両方のACLに、IDが*の行とdeny allの行があります。 。

何が悪いのですか?何か不足していますか?

2
Theodore

セキュリティグループを確認してください。これが原因の可能性があります。 DNS名を使用するVPC内のホストは常にリモートリソースのプライベートIPを使用するため、NAT/IGの部分は重要ではありません。

3
Jason Martin

VPC/EC2セキュリティグループとNACLが適切なアクセスを許可することを確認する必要があります。

私は EC2/RDSセキュリティグループのセットアップをカバーするチュートリアル があると便利です。

SOに関するこの回答 でも確認する必要があります。

0
Tim