Database JUNKY

MySQL,MariaDBを中心としたブログです

【AWS】VPC ピアリング接続を試してみる

以前こんな記事を書きました。異なるリージョンからグローバルIPの無い、MySQLサーバに接続する方法ですね。これもっと簡単な方法があってVPC ピアリングを使えばいいのです(笑) 前回それをやらなかったのは、転送料金がかかるからです。ちなみに、データの転送料金は、0.01 USD/GB です。 しかし、よくよく考えたら、VPC ピアリングを使わなくても、一度はインターネットにアウトするので転送量がかかるからそーであれば、VPC ピアリングも料金的には変わらないかも。

ちなみに、VPCピアリングとは、2 つのピア VPC 間のトラフィックをプライベート IP アドレス経由でルーティングできるサービスのことです。(つまり異なるリージョン間で通信できます)

hit.hateblo.jp

今回は、バージニアと東京のリージョンでVPC ピアリング接続接続ができるか試してみました。

環境

バージニアリージョン

VPC

f:id:hit10231023:20200601114956j:plain

DB-Server

IP ADDR : 10.0.1.155

東京リージョン

VPC

f:id:hit10231023:20200601120353j:plain

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の管理コンソールから、ピアリング接続を選択します

f:id:hit10231023:20200601122816j:plain

「ピアリング接続の作成」ボタンをクリックします

f:id:hit10231023:20200601123415j:plain

ピアリング接続の作成画面にて以下の値を設定します

f:id:hit10231023:20200601123629j:plain

リクエスVPC ID : この東京インスタンスVPCを選択

アクセプタ VPC ID : ヴァージニアリージョンのVPCを選択

その他もろもろの設定値に関しましては、VPCを選択時に自動的にプリセットされます

上記の設定が完了すると、以下のような画面がでます。問題なければOKで閉じてください

f:id:hit10231023:20200601124334j:plain

まずは、東京リージョンの設定でこれで終わりです

バージニアリージョン

東京リージョンと同様に、VPCの管理コンソールから、ピアリング接続を選択します

f:id:hit10231023:20200601122816j:plain

ステータスが、「承諾の保留中」となっているのがわかります

f:id:hit10231023:20200601130359j:plain

チェックを入れて、アクションからリクエストの承諾を選択します

f:id:hit10231023:20200601130525j:plain

f:id:hit10231023:20200601130743j:plain

f:id:hit10231023:20200601130804j:plain

以上でピアリング接続は確立されました。しかしこれだけですと、まだリージョン間接続ができません。ルーティング設定と、セキュリティグループの設定が必要になります

ルーティングの設定

余談ですが、私はネットワークが超苦手です。意味不明な説明がありましたらやさしく見守ってください(笑)

バージニアリージョン

当方の環境では、複数のサブネットに分けて運用しており、サブネット毎に接続するNATインスタンスを変えております。なのでこんなにいっぱいルートテーブルがあります。 今回は、RouteTBL-MAIN,RouteTBL-GLOBALの設定のみ行います。この設定は、環境によって異なりますのでご注意ください。

f:id:hit10231023:20200601133210j:plain

RouteTBL-MAIN

対象のルートテーブルのチェックボックスにチェックを入れて、「ルートの編集」ボタンをクリックします

f:id:hit10231023:20200601133251j:plain

  • 送信先に、10.200.0.0/16 ターゲットにPerring Connectionを選択し、対象のPEERING IDを選択します

f:id:hit10231023:20200601133506j:plain

  • こんな感じになりました、「ルートの保存」ボタンでこれを確定してください

f:id:hit10231023:20200601133836j:plain

RouteTBL-GLOBAL

上記作業と同様の手順でルートを設定しますので、編集方法については割愛します

f:id:hit10231023:20200601134041j:plain

東京リージョン

編集方法は基本的に同じですが、編集し、追加するVPCのネットワークセグメントは、10.0.0.0/16 です。お間違えのないようにご注意ください

f:id:hit10231023:20200601135547j:plain

f:id:hit10231023:20200601135612j:plain

セキュリティグループ(以下、SG)の設定

VPC PEERINGの設定の前にそれぞれにインスタンスにすでにSGを設定しているものと思います。今回はその既存のSGに、東京リージョンからのアクセスも受け付ける設定をします

バージニアリージョン

今回は、東京リージョンから、バージニアリージョンにあるデータベースサーバに接続できれば良いので、東京リージョンのSGは設定しません

対象インスタンス(10.0.1.155)のインバウンドに以下の設定を登録しました

f:id:hit10231023:20200601140731j:plain

ざっくり説明すると、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と出ています!これでリージョン間の接続はばっちりです!

f:id:hit10231023:20180309123622p:plain