(第2回)GCPでオートスケーリング

(第2回)GCPでオートスケーリング

目次

はじめに
マネージドインスタンスグループの作成
オートスケーリングポリシーの設定
VPC・ファイアウォールの作成
次回予告

はじめに

前回記事では、GCPのコマンドラインの使い方から実際インスタンスのテンプレートを作成するところまで紹介させていただきました。
今回は、本題であるオートスケーリングを実行できる環境を作成し、実際の動きを確認していきたいと思います。

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

インスタンスの自動スケーリングを行うには、マネージドインスタンスグループ(以降MIG)を作成します。
MIGを作成する前に、前回作成したインスタンスのテンプレートを取得します。

$ gcloud compute instance-templates list
NAME           MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
testautoscale  n1-standard-1               2020-05-15T00:22:26.936-07:00

上記コマンドを打つと、前回作成したテンプレートが取得できると思います。

こちらが確認できたら、次にMIGを作成します。

$ gcloud compute instance-groups managed create testautoscale-mig \
  --base-instance-name test \
  --template  testautoscale \
  --size 2

上記コマンドを実行するとMIGが作成されます。
※gcloud compute instance-groups managed createコマンドのパラメーターについて

  • NAME         :  作成するMIGの名前 (今回はtestautoscale-migを設定)
  • base-instance-name :  MIGで作成されるCompute Engineインスタンスに使用するベース名を設定
  • template       :  新しいインスタンスを作成するときに使用するインスタンステンプレートを指定
  • size          :  このグループに含めるインスタンスの初期数を設定
Created [https://www.googleapis.com/compute/v1/projects/lucid-clone-277305/zones/asia-east1-b/instanceGroupManagers/testautoscale-mig].
NAME               LOCATION      SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE  AUTOSCALED
testautoscale-mig  asia-east1-b  zone   test                0     2            testautoscale      no

オートスケーリングポリシーの設定

MIGは上記で作成しましたので、次は起動設定を作成します。
設定値は下記の通りです。

  • 最大インスタンス数は10台
  • CPU負荷率70%
  • クールダウンタイム60秒

クールダウンタイムが短すぎると、インスタンス起動時のCPU負荷で一気にインスタンスが増えることになるので、適切な値を設定してください。(逆に時間が長いと、急激なスパイクに対応できません)

gcloud compute instance-groups managed set-autoscaling testautoscale-mig \
  --max-num-replicas 10 \
  --target-cpu-utilization 0.7 \
  --cool-down-period 60

コマンド実行後、設定した内容が表示されれば、スケーリングポリシーの設定は完了です。
※gcloud compute instance-groups managed set-autoscalingコマンドのパラメーターについて

  • NAME         :  操作するマネージドインスタンスグループの名前(今回はtestautoscale-migを設定)
  • max-num-replicas    :  自動スケーリング時に設定するレプリカの最大数
  • cool-down-period    :  自動スケーリング時に新しいインスタンスから情報収集を開始するまでの待機時間
  • target-cpu-utilization  :  対象インスタンスのCPU使用率を設定値に維持するようにスケーリング

上記作成後、インスタンスを確認すると、2台起動しているのが確認できます。
plefixもtestがついており、設定どおりに起動していることが確認できます。

VPC・ファイアウォールの作成

インスタンスの構成設定などは準備できたので、インスタンスを立てる環境の準備を行います。
基本的には最初にVPCを作成することが多いのですが、今回順番が逆になってしまいました…

※インスタンスの自動スケーリングがオンになっていると、インスタンスを削除しても、次々に新しいインスタンスが生成されてしまうので、一旦ここで自動スケーリングをオフにしておくことを推奨します。

インスタンスグループの自動スケーリングモードの設定を「自動スケーリングしない」に設定
「自動スケーリングはオフになっています。」と表示されれば設定完了。生成されたインスタンスは一旦削除しておく。

本題に戻りまして、VPCを構築します。
左メニューのVPCネットワークを選択すると、VPC作成の画面が表示されます。
さらにVPC作成を押すと、下記画面が表示されます。

今回設定した項目は名前とサブネットの作成モードを設定しました。
サブネット作成モードは今回「自動」で設定しています。

次にネットワークのファイアウォールルールを設定します。
ファイアウォールルールはVPCをターゲットとしています。
設定画面はVPCネットワーク < ファイアウォールに進んでいただくと下記画面が表示されます。

設定項目は画像の通りですが、ネットワークの項目に先ほど設定したVPCを選択します。
ターゲットの項目に関しては、今回は対象のネットワーク上のすべてのインスタンスに設定しています。
IP範囲に関しては、「0.0.0.0/0」で設定しました。

プロトコルとポートの設定はHTTPリクエストの許可のみとしたいので、tcp:80にしております。
これでインスタンスの実行環境が出来上がりました。

ただ先にインスタンステンプレートの作成方法の紹介をしてしまいましたので、ターゲットのVPCの設定などがdefaultのままになっていることに気が付きました…
基本的には、VPCの作成→インスタンステンプレートの作成の流れになると思いますので、
前回記事と前後してしまいますが、この辺りの順番にご注意いただけたらと思います。

記事が長くなりますので、次回記事でインスタンステンプレートの修正~ロードバランサーの作成~負荷テスト
の流れを紹介したいと思います。

次回予定

全2回で完結の予定でしたが、次回記事も書かせていただきます。
自動スケーリングの動きに興味がある方はぜひ次回記事も読んでみてください。