皆様、こんにちは!
アイレット株式会社 DX開発事業部の楊林と申します。
前回の投稿では、App Engine、Cloud Functions、Cloud Run など Google Cloud のコンピューティングサービスについて紹介しました。
しかし、どれだけ優れたアプリケーションを作っても、それらを繋ぐネットワークがなければ本番稼働はできません。そして、外部に公開するにも、システム同士をやり取りさせるにも、ネットワークの理解は避けて通れません。
今回から数回に分けて、Google Cloud のネットワークを紹介していこうと思います。まずは基礎の部分からスタートしましょう。
ネットワーク階層
Google Cloud では、物理的な構造をロケーション、リージョン、ゾーンの三階層で管理しています。
一番大きな単位がロケーションで、北米・南米・ヨーロッパ・アジアなど、大きな地理的区分です。
その下に独立した地理的エリアを表すリージョンがあり、例えば東京は asia-northeast1、ロンドンは europe-west2 といった具合に識別されます。
さらにリージョンの中には複数のゾーンが存在します。ソーンはGoogle Cloudのリソースがデプロイされるエリアのことを表します。
東京リージョンなら asia-northeast1-a / -b / -c のように 3 つのゾーンで構成されています。
VPC
VPC(Virtual Private Cloud)は、Google Cloud 上に構築できる仮想的なプライベートネットワークで、パブリッククラウドのスケーラビリティと利便性、プライベートクラウドのデータ分離を併せ持っています。
仮想マシンやデータベースなどが同じ VPC 内で安全に通信でき、外部とのやり取りは必要に応じて制御できます。
Google CloudのVPCネットワークはフローバルで、世界中のリージョンにサブネットを配置することもできて、ワークロードのシャットダウンや、ダウンタイムなしでサブネットのIPアドレス空間を拡張できます。異なるリージョンのリソースは相互接続を追加しなくても、内部IPアドレスを使用して互いに通信できます。
Google Cloudのプロジェクトごとに複数のネットワークを使用することができ、VPC内のリソースは相互に接続しながら、インターネットにも接続しています。
Google のグローバルネットワーク
Google Cloudは相互接続点の広大なグローバルネットワークを運用しているため、トラフィックをユーザーの近くまで運ぶことができます。これにより、費用の削減とユーザーエクスペリエンスの向上を実現できます。
1つのプロジェクトにはデフォルトで最大15個のVPCネットワークを割り当てられ、必要なら割り当て数を追加できます。ネットワークは別プロジェクトと共有したり、VPC ピアリングで接続することもできます。
VMには内部IPと外部IPの2種類が割り当てられます。
内部IPはGoogle Cloud の内部DNSで名前解決されて、同じVPC内ならリージョンに関係なく通信可能です。
外部IPはインターネットと通信したい場合に割り当てて、エフェメラルと静的の2種類あります。VMのOSは外部IPを直接認識できません。
ネットワークタイプ
Googleのネットワークは3種類に分類できます。
自動モード
全リージョンに /20 のサブネットが自動生成されて、/16まで拡張できて、すべては10.128.0.0/9 CIDRブロック内に収まります。
デフォルト
自動モードの特別版で、各プロジェクトに事前定義された既定のVPCネットワークです。
各リージョンにCIDR重複なしのサブネットが割り当てられます。
カスタムモード
サブネットは自動作成されず、同じネットワークのサブネット間でIP範囲が重複できない前提で、サブネットとIP範囲は管理者が完全に制御できます。
自動モードのネットワークをカスタムモードに変換できますが、その逆に変換できません。
サブネット
サブネットはリージョン単位で存在し、その中の複数のゾーンを横断できます。
各サブネットワークのIP範囲において、.0はネットワーク用に、.1はサブネットのゲートウェイのように、範囲内の最後から二つのアドレスも予約されていますから、合計4つのIPアドレスは予約済みで、VMなどに割り当てられません。
サブネットの拡張は可能ですが、縮小はできません。
また、VPC内ではサブネット同士のIPレンジが重複してはいけません。
DNSと名前解決
DNS(Domain Name System)はインターネットのホスト名をアドレスに変換するシステムです。
Google Cloud の内部DNSは、VMに割り当てられたホスト名を内部IPに解決します。
外部公開用のDNSを扱いたい場合は Cloud DNS を使用します。Cloud DNS は Google と同じインフラ上で動作するため、高速・高可用性で、レコードも大規模に管理できます。
ルーティングとファイアウォール
VPC にはルーティング機能が組み込まれており、サブネット間やリージョン間の通信も自動的にルートされます。専用ルーターの構築は不要です。
ただし、トラフィックが通るにはルートに一致するだけでなく、ファイアウォールルールにも一致している必要があります。
Google Cloudのファイアウォールルールはネットワーク単位で適用VMインスタンスを未承認の受信接続と送信接続の両方向から保護します、インスタンスと他のネットワークの間だけでなく、同じネットワーク内の個々のインスタンスの間にも存在します。
また、ファイアウォールルールはステートフルです。送信元とターゲットの間、またはターゲットと宛先の間で接続が許可されると、以降のトラフィックはいずれの方向でもすべて許可されます。セッションが確立されると双方向通信が許可されます。
すべてのファイアウォールルールを削除した場合は、受信に「Deny all」、送信に「Allow all」が暗黙的に適用されます。
ファイアウォールルールは次のパラメータで構成されています。
- ルールの方向:受信接続は内向きルールとのみ照合され、送信接続は外向きルールとのみ照合されます。
- 上り方向の送信元:IPアドレス、ソースタグ、或いはソースサービスアカウント。
下り方向の宛先:一つ以上のIPアドレス範囲。 - プロトコルとポート:指定したプロトコルにのみ、或いは指定したプロトコルとポートの組み合わせにのみ、適用されるように制限できます。
- アクション:ルールの方向、プロトコル、ポート、送信元、宛先に一致するパケットへの許可または拒否です。
- ルールの優先度:ルールを評価する順序を指定します、最初に一致したルールが適用されます。数字が小さければ小さいほど優先になります。
- ルールの割り当て方法:デフォルトではすべてのルールがすべてのインスタンスに割り当てられますが、特定のルールを特定のインスタンスにのみ割り当てることもできます。
最後に
今回は、Google Cloudのネットワークの基礎部分を紹介しました。
次回は、オンプレミスや他クラウドとの接続方法、VPN・Interconnect・Peering など、実際にネットワークをつないでいくための選択肢について解説します。
ぜひ続けて読んでいただけると嬉しいです!
以前の投稿
【Google Cloud入門】クラウドサービスの特徴とGoogle Cloudの触り方
【Google Cloud入門】リソースマネージメント
【Google Cloud入門】アクセス管理の基本 - IAM
【Google Cloud入門】サービスアカウントとCloud Identity
【Google Cloud入門】Compute Engineの基礎
【Google Cloud入門】コンピューティングオプションとマネージドインスタンスグループ
【Google Cloud入門】GKE入門の前準備-コンテナの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの構成
【Google Cloud入門】Googleのコンテナ仮想環境ーGoogle Kubernetes Engine
【Google Cloud入門】GCEとGKE以外のコンピューティングサービス