🐥

GCEからVPNを利用してAWS EC2にあるMySQLへ接続する

2023/05/31に公開

はじめに

今回はタイトルの通り、Google Compute Engine からVPNを利用してAWS EC2にあるMySQLへの接続を構成します。AWSのEC2ではMySQLが稼働していて、GCP側は新規に作成するものとします。

ネットワークの構築

ネットワーク構築のため、AWSとGCPのそれぞれで操作する必要があります。手順が長くなりますので、ポイントの説明と画像を挟むだけにとどめたいと思います。公式のガイドにも手順が記載してありますので合わせてご確認ください。

ネットワーク構築イメージ

VPN接続のために必要な方法はいくつかありますが、今回はAWSでVPN接続を2本、GCP側でVPNトンネルを2本用意するパターンで構築します。

1.【AWS】VPCとサブネットの作成

  • VPCとパブリックサブネットを作成します

2.【GCP】VPCとサブネットの作成

  • 1個のサブネットを持つVPCネットワーク(vpn-network)を作成します

3.【GCP】Cloud VPN(HA VPN)の作成

  • 「ハイブリット接続」-「VPN」-「VPN接続を作成」-「高可用性VPN」を選択します
  • ①Cloud HA VPN ゲートウェイの作成
    • 「ネットワーク」欄に2.で作成したVPCネットワークを選択して、Cloud HA VPN ゲートウェイ(vpn-gateway)を作成します
  • ②VPN トンネルの追加
    • いったんキャンセルします(AWS側の設定が必要であるため)
    • ここで生成された2つのグローバルIPアドレスは、AWS側の設定で使用するためメモしておきます

4.【GCP】Cloud Routerの作成

  • AWSとのVPN接続にて使用するので Cloud Router を作成します
GCP側のASNを64513とします

5.【AWS】カスタマーゲートウェイの作成

  • 3.で作成したCloud HA VPN ゲートウェイのグローバルIPアドレス2つをカスタマーゲートウェイとして登録します
4.で作成したCloud RouterのASN(64513)を「BGP ASN」欄に指定します

6.【AWS】仮想プライベートゲートウェイの作成

  • カスタムASN(65182)を指定して、仮想プライベートゲートウェイを作成します
仮想プライベートゲートウェイを1.で作成したVPCにアタッチします

7.【AWS】VPNの作成

  • 仮想プライベートゲートウェイとCloud HA VPN ゲートウェイの1つ目のアドレスを指定してVPN接続を作成します

    • このとき仮想プライベートゲートウェイにはVPNトンネルが2つ作成されますが、今回の構成では1つだけ使用します
  • 同様に2つ目のアドレスを指定してVPN接続を作成します

作成したVPN接続を選択して、設定ファイルをダウンロードします

設定ファイルの中にはGCP側と接続するために必要な情報が含まれています

8.【GCP】ピアVPNゲートウェイの作成

AWS側でVPN接続を2つ作成した時に計4つグローバルIPアドレスが作成されていますが、1つのVPN接続につき1つのIPアドレスを登録します

9.【GCP】VPNトンネルの作成

  • 「Cloud HA VPN ゲートウェイ」と「ピアVPNゲートウェイ」はそれぞれ事前に作成したものを指定します
  • 「VPNトンネルのペアを作成する」を指定します
  • ルーティングにBGPを使用するため、4.で作成したCloud Routerを指定します
  • IKE事前共有キーは「生成してコピー」から生成して保管します
  • 同様にもう一つVPNトンネル設定を作成します

10.【GCP】BGPの構成

  • 2つのトンネルにBGPの構成を行います
ピアASNはAWS側ASNである65182とし、Cloud Router及びBGPピアのIPアドレスは、AWS側でVPN接続を作成した際に生成された設定ファイルに記載されているものを使用します

11.【AWS】ステータスの確認

VPN接続がAvailableに、トンネル1がUpになっていることを確認します

12.設定の確認

  • AWS側でGCP側への経路をサブネットのルートテーブルに追加します
    • ターゲットは仮想プライベートゲートウェイ
GCP側でAWS側へのルーティングが動的に設定されていることを確認します

13.疎通の確認

以下はGCP側のインスタンスから確認しています。

インスタンスを作成し、インスタンス間で疎通が可能かpingコマンドなどで確認します

  • 最後にMySQLに接続します

おわりに

いかがでしょうか。今回、Google Cloud と AWS 間のVPNを構築しました。次回は、構築したネットワークを利用してAWS EC2にあるMySQLからGCP Cloud SQLへのレプリケーションを構成してみようと思います。

参考

レスキューナウテックブログ

Discussion