💭

GCE インスタンスの外部IP設定とnetwork-tierの選択: コスト最適化と安定性の両立

に公開

Google CloudでCompute Engine(GCE)インスタンスを運用する際、外部IPアドレスの設定は重要な設計要素である。特に、エフェメラルIPと静的IP、そしてPremium TierとStandard Tierの選択は、コストと性能に大きな影響を与える。

本記事では、実際の運用で遭遇したIP変更問題の解決と、ネットワーク層の最適化について、具体的な手順とともに解説する。

問題の背景

エフェメラルIPによる運用課題

検証環境などでは、コスト削減のためにGCEインスタンスをインスタンススケジュールにより停止することがある。しかし、エフェメラルIPを使用している場合、以下の問題が発生する:

# インスタンスの停止・起動でIPが変更される例
# 停止前: xxx.xxx.xxx.x
# 起動後: yyy.yyy.yyy.y (異なるIP)

この問題により、以下の運用課題が生じる:

  • DNS設定の頻繁な更新が必要
  • 外部システムとの連携でIP変更による接続エラー
  • 運用チームの手動作業増加

そのため、IPを固定するということが上記課題に対する有効な対策となる。

ネットワーク層の理解

Premium Tier vs Standard Tier

GCPは2つのネットワーク層を提供している:

項目 Premium Tier Standard Tier
ルーティング Googleプライベートネットワーク経由 一般的なISPネットワーク経由
SLA 99.99% 99.9%
料金 高い 安い(30-40%程度の削減)
無料枠 なし 月200GB
用途 本番環境、グローバル展開 検証環境、コスト重視

技術的な違い

Premium Tier

ユーザー → Google PoP (最寄り) → Googleバックボーン → GCEインスタンス

Standard Tier

ユーザー → ISP → 複数ネットワーク → Google PoP (リージョン近傍) → GCEインスタンス

https://cloud.google.com/network-tiers/docs/overview

https://cloud.google.com/load-balancing/docs/choosing-load-balancer?utm_source=chatgpt.com

https://cloud.google.com/compute/sla

https://cloud.google.com/vpc/network-pricing

実装手順

1. 静的IPアドレスの作成

# Standard Tier静的IPの作成
gcloud compute addresses create sample-instance-2 \
  --region="asia-northeast1" \
  --network-tier="STANDARD" \
  --project="your-project"

# 作成確認
gcloud compute addresses describe sample-instance-2 \
  --region="asia-northeast1"

2. インスタンスの設定変更

# インスタンス停止
gcloud compute instances stop sample-instance-2 \
  --zone="asia-northeast1-b"

# 既存のエフェメラルIP削除
gcloud compute instances delete-access-config sample-instance-2 \
  --access-config-name="external-nat" \
  --zone="asia-northeast1-b"

# 静的IP割り当て
gcloud compute instances add-access-config sample-instance-2 \
  --access-config-name="external-nat" \
  --address="xxx.xxx.xxx.x" \
  --network-tier="STANDARD" \
  --zone="asia-northeast1-b"

# インスタンス起動
gcloud compute instances start sample-instance-2 \
  --zone="asia-northeast1-b"

3. 設定確認

# ネットワーク設定の確認
gcloud compute instances describe sample-instance-2 \
  --zone="asia-northeast1-b" \
  --format="yaml(networkInterfaces[].accessConfigs)"

期待される出力:

networkInterfaces:
- accessConfigs:
  - kind: compute#accessConfig
    name: external-nat
    natIP: xxx.xxx.xxx.x
    networkTier: STANDARD
    type: ONE_TO_ONE_NAT

重要な注意点

ネットワーク層変更時の制約

IPアドレスプールの分離

  • PremiumとStandardで異なるIPプールを使用
  • 層変更時は必ずIPアドレスが変更される
  • 既存IPの層変更は不可能

機能制限の理解

Standard Tierで利用できない機能

  • グローバルロードバランサー
  • Cloud CDN
  • IPv6サポート(制限あり)
  • Cloud VPN(一部制限)

https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts

https://cloud.google.com/network-tiers/docs/overview?utm_source=chatgpt.com

トラブルシューティング

よくある問題と対処法

1. SSH接続エラー

# 原因: ファイアウォール設定
# 対処: セキュリティグループ確認
gcloud compute firewall-rules list --filter="direction:INGRESS"

2. サービス起動失敗

# 原因: IPアドレス変更によるバインドエラー
# 対処: サービス設定の0.0.0.0バインド確認
ss -tlnp | grep :3000

監視とメンテナンス

設定状況の確認

# 静的IP使用状況の確認スクリプト
#!/bin/bash
echo "=== 静的IP使用状況 ==="
gcloud compute addresses list \
  --format="table(name,address,networkTier,status)"

echo "=== インスタンス設定状況 ==="
gcloud compute instances list \
  --format="table(name,status,networkInterfaces[0].accessConfigs[0].natIP,networkInterfaces[0].accessConfigs[0].networkTier)"

まとめ

GCEインスタンスのネットワーク設定最適化により、以下の効果を得られる:

  1. 安定性向上: 静的IPによるIP変更問題の解決
  2. コスト削減: Standard Tierと無料枠活用で最大100%削減
  3. 運用効率: 統一された設定による管理性向上

特に検証環境においては、Standard Tierの採用により大幅なコスト削減が可能である。ただし、本番環境では性能とSLAを重視してPremium Tierの継続利用を推奨する。

Discussion