LoginSignup
6
5

More than 3 years have passed since last update.

Cloud Load Balancing+GCE+Cloud NATで出口IPを固定して外部APIへアクセス

Last updated at Posted at 2019-05-09

やりたいこと

1.自サービスから、IP制限のある外部APIに接続したい
2.自サービスはGAEで動いており接続元IPが固定できないので、GCEを中継サーバ + Cloud NATで出口のIPを固定
3.自サービス(GAE)→中継サーバ(GCE)はサブドメインを用意し、SSL接続したい

簡単に図にすると・・・

※「internet」の前段には自サービス(GAE)が居ます
API構成図.png

GCEインスタンスグループの設定

まずインスタンステンプレートを作成し、そのテンプレートを元にインスタンスグループを生成します。
インスタンスグループ作成時、オートスケールする/しない や インスタンス数(スケールしない場合のみ)を選択します。
デプロイ時、ダウンタイムを発生させたくない場合ローリング更新を行います。
ローリング更新するとき、【リージョンの数 > インスタンス数】にしておかないと、同時に全部更新されます。
(1リージョンに対して2つ以上のインスタンスが配置されているリージョンが最低1つ必要?)
スクリーンショット 2019-05-08 14.06.38.png

Cloud Load Balancingの設定

今回はHTTP(S) 負荷分散を作成していきます。
スクリーンショット 2019-05-08 14.09.33.png

スクリーンショット 2019-05-08 14.10.40.png

バックエンドの設定

新たにバックエンドサービスを作成します。
先ほど作成したGCEインスタンスグループを選択します。
今回の場合、APIが8080で起動しているので、ポートは8080としました。
バックエンドサービス作成時、ヘルスチェックを新規作成します。同じくポートは8080としました。
スクリーンショット 2019-05-08 14.14.00.png

ホストとパスのルール

今回はデフォルトのままとしました。

フロントエンドの設定

IPを固定する場合、外部IP アドレスを開き、IPアドレスを確保してからフロントエンドに割り当てます。
スクリーンショット 2019-05-08 14.16.56.png
(IP固定しない場合エフェメラルを選択します。)

HTTPSプロトコルにしたい場合、既存の証明書をアップロードするかSSL証明書を新規作成します。
スクリーンショット 2019-05-08 14.18.47.png

今回は、先程確保した固定IPアドレスに対して、ドメインを紐づけてあるので、その情報で証明書を新規作成します。
スクリーンショット 2019-05-08 14.22.09.png

完了ボタンを押してしばらく待ちます。

ロードバランサの詳細を開いて、バックエンドの「n/n個のインスタンスが正常です」と表示されていれば成功です。
スクリーンショット 2019-05-08 14.25.18.png

ファイアウォールの設定

※ロードバランサから各インスタンスへのヘルスチェック時、ヘルスチェックのソース元IPアドレスを許可しないといけません。
IP範囲は公式ドキュメントに記載されています。
https://cloud.google.com/compute/docs/load-balancing/health-checks?hl=ja

Cloud NATの設定

インスタンスグループが外部に出ていくときのIPアドレス=NATのIPアドレスとなるように設定をします。
Cloud Routerの選択で、
・VPCネットワーク(今回はdefault)
・リージョン(任意のリージョン)
・Cloud Router
を入力し、作成を完了させます。

スクリーンショット 2019-05-09 16.23.09.png

Cloud Routerはnameを決めて作成するだけです。
スクリーンショット 2019-05-09 16.26.02.png

確保しているIPアドレスをNATのIPアドレスとして設定してあげます。
スクリーンショット 2019-05-09 16.27.44.png

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5