【AWS】VPC ピアリング接続を試してみる
以前こんな記事を書きました。異なるリージョンからグローバルIPの無い、MySQLサーバに接続する方法ですね。これもっと簡単な方法があってVPC ピアリングを使えばいいのです(笑) 前回それをやらなかったのは、転送料金がかかるからです。ちなみに、データの転送料金は、0.01 USD/GB です。 しかし、よくよく考えたら、VPC ピアリングを使わなくても、一度はインターネットにアウトするので転送量がかかるからそーであれば、VPC ピアリングも料金的には変わらないかも。
ちなみに、VPCピアリングとは、2 つのピア VPC 間のトラフィックをプライベート IP アドレス経由でルーティングできるサービスのことです。(つまり異なるリージョン間で通信できます)
今回は、バージニアと東京のリージョンでVPC ピアリング接続接続ができるか試してみました。
環境
バージニアリージョン
VPC
DB-Server
IP ADDR : 10.0.1.155
東京リージョン
VPC
WEB-SERVER
IP ADDR : 10.200.0.124
ここで注意いただきたいのが、VPC ピアリングは同じプライベートネットワークアドレス帯だと利用することができないということです。
例えば、上記を例のように
東京リージョンは、
IPv4 CIDR : 10.200.0.0/16
であり
バージニアリージョンは、
IPv4 CIDR : 10.0.0.0/16
の場合。つまり、IP帯が別なので、これは、リージョン間のVPC ピアリング接続が可能ですが、
それぞれが同じネットワークの場合は、利用できないことに注意してください それぞれ同じネットワークという意味は、例えば、東京もバージニアも10.0.0.0/16で設定していることを言います
ピアリング接続の確立
バージニアリージョン、および東京リージョンそれぞれでVPC ピアリングの設定が必要です。
東京リージョン
VPCの管理コンソールから、ピアリング接続を選択します
「ピアリング接続の作成」ボタンをクリックします
ピアリング接続の作成画面にて以下の値を設定します
リクエスタ VPC ID : この東京インスタンスのVPCを選択
アクセプタ VPC ID : ヴァージニアリージョンのVPCを選択
その他もろもろの設定値に関しましては、VPCを選択時に自動的にプリセットされます
上記の設定が完了すると、以下のような画面がでます。問題なければOKで閉じてください
まずは、東京リージョンの設定でこれで終わりです
バージニアリージョン
東京リージョンと同様に、VPCの管理コンソールから、ピアリング接続を選択します
ステータスが、「承諾の保留中」となっているのがわかります
チェックを入れて、アクションからリクエストの承諾を選択します
以上でピアリング接続は確立されました。しかしこれだけですと、まだリージョン間接続ができません。ルーティング設定と、セキュリティグループの設定が必要になります
ルーティングの設定
余談ですが、私はネットワークが超苦手です。意味不明な説明がありましたらやさしく見守ってください(笑)
バージニアリージョン
当方の環境では、複数のサブネットに分けて運用しており、サブネット毎に接続するNATインスタンスを変えております。なのでこんなにいっぱいルートテーブルがあります。 今回は、RouteTBL-MAIN,RouteTBL-GLOBALの設定のみ行います。この設定は、環境によって異なりますのでご注意ください。
RouteTBL-MAIN
対象のルートテーブルのチェックボックスにチェックを入れて、「ルートの編集」ボタンをクリックします
- 送信先に、10.200.0.0/16 ターゲットにPerring Connectionを選択し、対象のPEERING IDを選択します
- こんな感じになりました、「ルートの保存」ボタンでこれを確定してください
RouteTBL-GLOBAL
上記作業と同様の手順でルートを設定しますので、編集方法については割愛します
東京リージョン
編集方法は基本的に同じですが、編集し、追加するVPCのネットワークセグメントは、10.0.0.0/16 です。お間違えのないようにご注意ください
セキュリティグループ(以下、SG)の設定
VPC PEERINGの設定の前にそれぞれにインスタンスにすでにSGを設定しているものと思います。今回はその既存のSGに、東京リージョンからのアクセスも受け付ける設定をします
バージニアリージョン
今回は、東京リージョンから、バージニアリージョンにあるデータベースサーバに接続できれば良いので、東京リージョンのSGは設定しません
対象インスタンス(10.0.1.155)のインバウンドに以下の設定を登録しました
ざっくり説明すると、10.200.0.0/16 からくるポート、3306リクエストは許可するよ。。です(笑) これで一通りの設定はできたと思います。
東京リージョンのインスタンスからバージニアにあるデータベースサーバに接続テストする
東京リージョンにあるインスタンス(10.200.0.124)から、バージニアにあるデータベースサーバ(10.0.1.155)にmysqladmin pingコマンドで疎通確認ができるかテストします
[ec2-user@ip-10-200-0-124 ~]$ mysqladmin ping -h 10.0.1.155 -u myuser -p mysqladmin: [Warning] Using a password on the command line interface can be insecure. mysqld is alive
mysqld is aliveと出ています!これでリージョン間の接続はばっちりです!