LoginSignup
2
1

More than 5 years have passed since last update.

GCEの既存インスタンスからインスタンステンプレートを作りマネージドインスタンスグループを作る

Last updated at Posted at 2018-08-20

既存インスタンスからインスタンステンプレートを作りマネージドインスタンスグループを作てみた備忘録です。

既存インスタンスを作るところ

(参考)
https://qiita.com/smallpalace/items/bc07c00d1583dbe53a79

mypj=komitest-XXXXXX
myregion=asia-northeast1
mynode1=test-web1   
gcloud compute --project "$mypj" ssh --zone "${myregion}-b" "$mynode1"

vi /etc/sysconfig/selinux
Disabledに更新

# yum install git ansible

ちょっとansibleでbaseを入れてから停止してディスクからイメージを作成するなど
(sshまわりの設定してdefaultプロジェクトをcloneして初期設定をしてシャットダウンした)

ディスクからイメージを作成

gcloud compute --project=komitest-XXXXXX images create image-1 --family=test --source-disk=test-web1 --source-disk-zone=asia-northeast1-b

イメージからテンプレートを作成

vCPU1(3.5GB)
gcloud beta compute --project=komitest-XXXXXX instance-templates create instance-template-1 \
 --machine-type=n1-standard-1 --network=projects/komitest-XXXXXX/global/networks/default \
 --network-tier=PREMIUM --maintenance-policy=MIGRATE --service-account=xxxxxxxxxxxx-compute@developer.gserviceaccount.com \
 --scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/source.read_only,https://www.googleapis.com/auth/sqlservice.admin,https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/userinfo.email  \
 --tags=http-server,https-server --image=image-1 --image-project=komitest-XXXXXX \
 --boot-disk-size=10GB --boot-disk-type=pd-ssd --boot-disk-device-name=instance-template-1

micro
gcloud beta compute --project=komitest-XXXXXX instance-templates create instance-template-1 --machine-type=f1-micro --network=projects/komitest-XXXXXX/global/networks/default --network-tier=PREMIUM --maintenance-policy=MIGRATE --service-account=xxxxxxxxxxxx-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/source.read_only,https://www.googleapis.com/auth/sqlservice.admin,https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/userinfo.email --tags=http-server,https-server --image=image-1 --image-project=komitest-XXXXXX --boot-disk-size=10GB --boot-disk-type=pd-standard --boot-disk-device-name=instance-template-1

使いそうなAPIエンドポイントを--scopeで有効化してるっぽい。pubsub,sourcerepository,conputeengine,cloudsql,storageなどを一応選んでおいた。

gcloud compute instance-templates list
NAME                 MACHINE_TYPE  PREEMPTIBLE  CREATION_TIMESTAMP
instance-template-1  f1-micro                   2018-08-08T22:36:34.079-07:00

テンプレートからインスタンスグループを作成

gcloud compute --project "komitest-XXXXXX" instance-groups managed create "instance-group-1" \
 --base-instance-name "instance-group-1" --template "instance-template-1" --size "1" --zone "asia-northeast1-b"

オートスケーリングポリシー作成

gcloud compute --project "komitest-XXXXXX" instance-groups managed set-autoscaling "instance-group-1" \
 --zone "asia-northeast1-b" --cool-down-period "60" --max-num-replicas "3" --min-num-replicas "1" --target-cpu-utilization "0.6"

これをlbのバックエンドにすると勝手にスケールされると思われる。
指標はCPUだけではなく他に3種類ほどありStackdriverなども選べるようだった。(CPU60%だと最大1でも気軽にいつの間にかさし変わる動きをしてた。)

つくったインスタンスグループの画面にいくと、グループを編集、ローリング更新、ローリング再起動などのボタンが出ていて便利そうかなと思いました。

たとえばテンプレート設定のときにSSDとかインスタンスのスペックとか選べるので、別のテンプレつくるか更新してグループ編集してからスケールアップのためにローリング更新とかそういうのにも使うっぽいですね。

ローリング更新画面はテンプレート差し替えるとかカナリアリリースのためにテンプレート追加するとか、一度に入れ替えるインスタンス数とか指定できる感じで、たしかにkubernetesの思想を転用してみたみたいな感じでした。(テンプレートのファミリーを指定しとくとその中で最新のやつが勝手にテンプレートとして使われるが設定は要gcloudコマンドな模様)
https://cloudplatform-jp.googleblog.com/2017/09/meet-Compute-Engines-new-managed-instance-group-updater.html
https://qiita.com/sinmetal/items/2c880e88924403e2b13c

なんかインスタンスグループ作ってオートスケール有効にすると作った瞬間に指定したテンプレートのVMが再小数で作られるっぽいです。
起動しているVMが増えてた。これ監視Stackdriver今の感じで追随してくれるか確認いりそう。

起動時の処理が必要な場合、cloud_init的なスタートスクリプトがある模様
https://cloud.google.com/compute/docs/startupscript
https://qiita.com/web_se/items/ed014a8ecf338db5c6f9

あと、マネージドインスタンスグループを削除すると中身のインスタンスも一緒に消えるので、必要なら外すかスナップショットとってから消すとよさそうです。
オートスケーリング縮退削除でログ消える問題についてはStackDriverに飛ばしとくとよさそうです。
https://qiita.com/munaita_/items/e59765d1861e690e6c4c
外部IPがエフェメラルになる(静的IPじゃない)のはオートスケーリングだと固定は難しそう。
運用中に更新する場合はテンプレート作り直す別インスタンス複製して作業することになるのかなと。
https://cloud.google.com/compute/docs/autoscaler/?hl=ja&_ga=2.109017284.-779814870.1500864087#autoscaling_options
https://cloud.google.com/compute/docs/instance-groups/apply-sizing-recommendations-managed-instance-groups?hl=JA

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1