【Google Cloud associate Engineer】Instance Groups

インスタンスグループ

  • 単一のエンティティとして管理できる仮想マシン(VM)インスタンスの集まり
  • 2種類のインスタンスグループ
    • マネージドインスタンスグループ(MIG):複数の同一 VM でのアプリケーション操作が可能です。自動スケーリング、自動修復、リージョン(マルチゾーン)デプロイメント、自動更新などの自動化
    • 非マネージドインスタンスグループ:ユーザー自身が管理する一連のVM
      オートスケーリングやオートヒーリングは非対応
      異なる種類のVMが必要な場合を除き、非推奨
  • ロケーションはゾーンまたはリージョン
    • リージョンを選択する方が高い可用性(推奨)

出典:https://cloud.google.com/compute/docs/instance-groups?hl=ja

 

マネージドインスタンスグループ(MIG)

  • インスタンステンプレートを使用して作成された同一のVM
  • 重要な特徴:
    • 一定数のインスタンスを維持
      インスタンスがクラッシュした場合は、別のインスタンスを起動する
    • ヘルスチェックによるアプリケーションの障害検知(Self Healing)
    • 負荷に応じてインスタンスの増減(Auto Scaling)
    • ロードバランサー(Load Balancer)の追加による負荷分散
    • 複数のゾーンにインスタンスを作成(regionals MIGs)
      • ゾーンMIG: 単一のゾーンにデプロイ
      • リージョンMIG: 複数のゾーンにデプロイ
    • ダウンタイムなしでアプリケーションの新バージョンをリリース
      Rolling update, Canary Deployment

マネージドインスタンスグループ(MIG)の作成

  • インスタンステンプレートが必須
  • 負荷に応じてインスタンス数を自動的に調整するオートスケーリングの設定
    • 最小・最大のインスタンス数
    • オートスケーリングメトリクス:CPUの利用率、ローダバランサーの利用率、スタックドライバからのその他のメトリクスなど
    • クールダウン期間:オートスケーリングメトリクスを確認するまでの時間
    • スケールいん制御:VMインスタンス数の急激な減少の防止
  • オートヒーリングでヘルチェックを構成

マネージドインスタンスグループ(MIG)の更新

  • Rolling update:新しいインスタンステンプレートに徐々に更新する
    • 新しいカナリアテスト用のテンプレートを指定
    • アップデートの方法
      • 最大サージ(maxSurge):どの時点でも追加されるインスタンスの数
      • オフライン上限(maxUnavailable):アップデート中にオフラインにできるインスタンスの数
      • 最小待機時間(minReadySec)オプションを使用して、新しいインスタンスまたは再起動されたインスタンスを更新済みとみなすまでの待機時間
  • Rolling Restart/replace:グループ内の全インスタンの段階的な再起動または置き換え
    • デフォルトでは、MIG をプロアクティブに更新すると、グループが VM インスタンスを削除し、新しい名前の新しいインスタンスに置き換えます。
    • インスタンス名を保持するには、gcloud CLI または Compute Engine API を使用して MIG を更新するときに、置換メソッドを SUBSTITUTE ではなく RECREATE に設定します。


出典:https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances?hl=ja

  • カナリア更新グループ内のインスタンスのサブセットに適用される更新
    • ランダムなインスタンスのサブセットで新しい機能または更新をテスト
    • 更新がうまくいかない場合、単にインスタンスのサブセットをロールバックするだけで済む
    • カナリア更新を開始するには、最大 2 つのインスタンス テンプレート バージョンを指定

マネージドインスタンスグループ(MIG)へのCLI

  • gcloud compute instance-groups managed create my-mig –zone us-central1-a –template my- instance-template –size 1:インスタンスグループの作成
  • gcloud compute instance-groups managed set-autoscaling my-mig –max-num-replicas=10:オートスケーリングの設定
  • gcloud compute instance-groups managed update my-mig:既存のMIGポリシーを更新
  • gcloud compute instance-groups managed resize my-mig –size=5:グループのサイズ変更
  • gcloud compute instance-groups managed recreate-instances my-mig –instances=my- instance-1,my-instance-2:1つまたは複数のインスタンスを再作成
  • gcloud compute instance-groups managed update-instances my-mig –instances=my-instance- 3,my-instance-4 (Update specific instances from the group):特定のインスタンスの更新
  • gcloud compute instance-groups managed set-instance-template my-mig –template=v2- template:インスタンステンプレートを更新

Rolling Actions

  • 新しいリソース(v1→v2)をダウンタイムなしで管理したい
  • gcloud compute instance-groups managed rolling-action restart my- mig:リスタート
    • –max-surge=5または10%(一度に更新されるインスタンス)
  • gcloud compute instance-groups managed rolling-action replace my-mig:置換
    • –max-surge=5 または 10%
    • -max-unavailable=5 または 10% (アップデートのために停止できるインスタンスの最大数)
  • インスタンスの更新
    • Basic Version (全インスタンを段階的に更新) – gcloud compute instance-groups managed rolling- action start-update my-mig –version=template=v1-template
    • カナリアンデプロイ (サブセットをv2に更新) – gcloud compute instance-groups managed rolling-action start-update my-mig –version=template=v1-template –canary-version=template=v2-template,target-size=10%
  • 1つの健全なインスタンが常に稼働している状態を確保
    • gcloud compute instance-groups managed set-autoscaling my-group –max-num- replicas=1 –min-num-replicas=1
  • インスタンス数を減らさずに1つずつ新しいリリース
    • gcloud compute instance-groups managed rolling-action start-update my-group –version=template=my-v1-template –max-surge 1 –max-unavailable 0

インスタンスグループの具体的なシナリオ

  • ゾーン障害に耐えられるようなMIGを作成したい
    • 複数ゾーンのMIG(リージョナルMIG)
  • 同じグループ内に異なる構成のVMをデプロイしたい
    • 非マネージドインスタンスグループの作成
  • MIGでVMを稼働し続けたい
    • ステートフルMIG:VMの状態を保持する。ステートフルなワークロードにおすすめ
  • 更新があってもMIGに高い可用性を求めたい
    • sutomatic restartが有効かつ、on-host maintenanceがmigrateとなる可用性ポリシーでインスタンステンプレートを作成
      この設定によって、ライブマイグレーションと自動再起動を保証する
  • 不健全なインスタンスを自動的に置き換える
    • MIGのヘルスチェックを有効にする
  • 頻繁なスケールアップとダウンを避ける
    • クールダウン期間/イニシャルディレイ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です