サーバーレスVPCアクセスコネクタのスケールインをダウンタイムなしで行う方法

記事タイトルとURLをコピーする

G-gen の佐々木です。当記事では、Cloud Run などのサーバーレス サービスが VPC リソースにプライベート IP で接続するために使用するサーバーレス VPC アクセスのスケールインをダウンタイムなしで行う方法を解説します。

サーバーレス VPC アクセスとは

サーバーレス VPC アクセスとは、Cloud Run、Cloud Functions などのサーバーレスなサービスがプライベート IP を使用して Cloud NAT や Cloud SQL、Memorystore などの VPC リソースに接続するための機能です。

サーバーレス VPC アクセスでは、接続先となる VPC 内のサブネット、もしくは専用に確保した IP アドレス範囲を使用して VPC 内にサーバーレス VPC アクセスコネクタと呼ばれるインスタンス(以下、コネクタインスタンス)を作成します。

VPC の外にあるサーバーレスサービスは、このコネクタインスタンスを経由することで VPC 内リソースにプライベート IP アドレスで接続できるようになります。

サーバーレスVPCアクセスコネクタを使用したVPCリソースへの接続例

コネクタインスタンスのスケールイン問題

問題

サーバーレス VPC アクセスでは、VPC に接続するために作成するコネクタインスタンスの最小数(2~9)と最大数(3~10)をあらかじめ設定します。コンテナインスタンスの負荷が高まると、最大で設定した値までインスタンスがスケールアウトします。

このスケーリングの仕様として、一度スケールアウトしたインスタンス数は二度とスケールインすることがありません

サーバーレス VPC アクセスの料金はコネクタインスタンスの数に比例して増加するため、一度のスパイクでスケールアウトしただけであっても、スケールアウト後のコストがずっと発生してしまうことになります。

コスト節約のため一度スケールアウトしたコネクタインスタンスを減らしたい場合、コネクタインスタンスを再作成する必要があります。

再作成を安全に行う方法

コネクタインスタンスを減らすためには一度削除してから再作成が必要ですが、コネクタインスタンスを一度削除すると、アプリケーションから Cloud SQL などへの接続は一時的にできなくなってしまいます。

この接続断の影響を最小限に抑えるためには、以下のような手順を踏みます。

  1. 旧コネクタインスタンスを残したまま新コネクタインスタンスを作成
  2. 接続元のサービス側設定において使用するコネクタインスタンスを新コネクタインスタンスに切り替え
  3. 旧コネクタインスタンスを削除

コネクタインスタンスはサブネット、もしくは IP アドレス範囲に紐づくリソースであり、VPC 内には複数のコネクタインスタンスを作成することができます(アドレス重複は不可)。これを利用して、サービスがコネクタインスタンスを使用できない時間が発生しないようにします。

手順

前提条件

当記事では、Cloud Run からコネクタインスタンスを経由して Cloud SQL に接続しているケースを例として使用します。

初期状態として、以下の図のようにコネクタインスタンスがスケールアウトした後の状況を想定します。

コネクタインスタンスがスケールアウトした後の状態

新コネクタインスタンスの作成

既存のコネクタインスタンスを残したまま、任意のインスタンス数を設定したコネクタインスタンスを新規に作成します。

新規作成するために、コネクタインスタンス用のサブネット、もしくは IP アドレス範囲を新たに確保する必要があります。

コネクタインスタンスを新規作成する

使用するコネクタインスタンスの切り替え

接続元のサービス側でサーバーレス VPC アクセスの設定を修正します。

Cloud Run の場合はリビジョン機能を使用して、新規作成したコネクタインスタンスを使用するように設定し直した新しいリビジョンをデプロイします。

使用するコネクタインスタンスを切り替える

旧コネクタインスタンスの削除

最後に、無駄なインスタンス料金が発生しないように、古いコネクタインスタンスを削除します。

注意点として、使用中のコネクタインスタンスも削除できてしまいます。現在使用されているほうを削除してしまい、接続断が発生してしまうといったことが起こらないように気をつけましょう。

古いコネクタインスタンスを削除する

佐々木 駿太 (記事一覧)

G-gen最北端、北海道在住のクラウドソリューション部エンジニア

2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2024に選出。好きなGoogle CloudプロダクトはCloud Run。

趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。