💭
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インスタンス
実装手順
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(一部制限)
トラブルシューティング
よくある問題と対処法
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インスタンスのネットワーク設定最適化により、以下の効果を得られる:
- 安定性向上: 静的IPによるIP変更問題の解決
- コスト削減: Standard Tierと無料枠活用で最大100%削減
- 運用効率: 統一された設定による管理性向上
特に検証環境においては、Standard Tierの採用により大幅なコスト削減が可能である。ただし、本番環境では性能とSLAを重視してPremium Tierの継続利用を推奨する。
Discussion