【入門編】 GCP Cloud NATの最小ポート数(Min Ports Per VM)自動割当アルゴリズム – クラウド&コンテナネットワーク実践ガイド

郵便局の「窓口」はなぜ混雑するのか?GCP Cloud NATの「ポート自動割当」を紐解く

こんにちは!クラウドの深淵を歩くSREの視点から、今日は皆さんと一緒に「GCP Cloud NAT」の知られざる舞台裏を覗いてみたいと思います。

「インターネットに出ていくためのNAT(ネットワーク・アドレス・トラランスレーション)」と聞くと、なんだか難しそうな装置をイメージしませんか?でも実はこれ、「超優秀な郵便局の仕分け人」と考えると、驚くほどスッキリ理解できるんです。

今回は、特に現場でトラブルの種になりやすい「最小ポート数(Min Ports Per VM)」と、GCPが裏で勝手にやってくれている「ポートの自動拡張」という、ちょっと気の利いた仕組みについてお話しします。

—

1. NATゲートウェイは「郵便局の窓口」である

パブリックサブネットにいるVMインスタンスたちが、外部のAPIやサービスと通信したいとします。でも、彼らにはプライベートなIPアドレスしかありません。そこで登場するのが「NATゲートウェイ」です。

NATゲートウェイは、VMからの手紙(パケット)を一度すべて預かり、自分の住所(パブリックIP)に書き換えてから外の世界へ送り出します。

ここで重要になるのが「ポート番号」です。
郵便局で例えるなら、「窓口の数」。窓口が1つしかないと、1人しか同時に手続きできませんよね?VMも同じで、外部との通信を識別するために、この「窓口(ポート)」を借りて通信を行う必要があります。

2. なぜ「最小ポート数」の設定が重要なのか?

GCP Cloud NATでは、VM1台につき最低これだけは窓口を確保しておくよ、という「最小ポート数(min_ports_per_vm)」を設定できます。デフォルトでは「64」ですが、これを適当に設定していると、ある日突然、「ポート枯渇(SNATポート枯渇)」という悪夢が訪れます。

  • ポート枯渇とは?

窓口(ポート)が全部埋まってしまい、VMが「もう外に出る窓口がないよ!」と通信エラーを起こす現象です。

「じゃあ、最初からめちゃくちゃ多い数を割り当てればいいんじゃない?」と思いますよね。でも、そうすると今度は「IPアドレスの無駄遣い」になってしまいます。そこで登場するのが、GCPの誇る「動的割当アルゴリズム」です。

3. GCPの魔法:ポートの自動拡張(オートスケーリング)

GCP Cloud NATのすごいところは、「混雑したら窓口を増やす」という判断を、裏で自動的にやってくれる点です。

これを専門用語で「エンドポイント独立マッピング」と呼んだりしますが、要はこういうことです。

1. 通常時: 最小ポート数(例:64)だけを確保して節約。
2. 急な混雑時: VMが「足りない!」と叫ぶと、NATゲートウェイが「わかった、じゃあ今は256まで使っていいよ」と、動的に窓口を広げてくれる。
3. 余裕がある時: 使わなくなった窓口は、自動的に回収する。

これのおかげで、私たちは「どのくらいの通信量になるか正確に予測できない…」と夜も眠れなくなる必要がないんです。GCPが、郵便局の列の長さに応じて窓口を柔軟に開け閉めしてくれるイメージですね。

—

4. 実践:Cloud NATを賢く設定する

では、実際にインフラを構築する際のコードを見てみましょう。Google Cloud CLI (gcloud) を使った設定例です。

# Cloud NATの設定例
gcloud compute routers nats create my-nat-config \
    --router=my-router \
    --region=asia-northeast1 \
    --nat-all-subnet-ip-ranges \
    --min-ports-per-vm=64 \      # 最初は64からスタート!
    --enable-dynamic-port-allocation # これが重要!自動拡張を有効化します

ポイント解説

  • --min-ports-per-vm: ここは「最低限の安心材料」です。アプリの通信頻度に合わせて設定しましょう。
  • --enable-dynamic-port-allocation: これを有効にすることで、初めて「自動拡張」の恩恵を受けられます。現場ではほぼ必須の設定です。

—

5. 最後に:トラブルシューティングの心構え

もし皆さんのサービスで「外部APIと繋がりにくい時間帯がある」という事象が発生したら、まずはこの「ポート数」を疑ってみてください。

GCPのコンソール(モニタリング)を見て、「NATポート使用率」のグラフが右肩上がりになっていないか確認しましょう。もし90%を超えていたら、それは郵便局の窓口に行列ができすぎているサインです。

SREからのアドバイス:
設定をいじる前に、まずはアプリ側の「コネクションプール」を見直すことも忘れずに。郵便局の窓口を増やすより、そもそも「用事をまとめて済ませる(コネクションの使い回し)」方が、インフラには優しい場合が多いですからね。

ネットワークは目に見えませんが、こうした一つひとつの仕組みを理解することで、まるでパケットの流れが手に取るように見えるようになります。これからも一緒に、クラウドの深層を楽しく学んでいきましょう!

それでは、また次回の記事でお会いしましょう!

コメント

タイトルとURLをコピーしました