##目的
IBMCloudのVPC Gen2において、バックエンドインスタンスのCPU負荷状況に応じたAutoScaleを試す
今回は、AutoScaleルールに従って正常にインスタンスが上下するか確認する
またフロントにLBを構成し、インスタンスが上下した際もサービス停止が発生しない事を確認する
##構成
- ローカル端末:macOS Catalina 10.15.6 1台
- プラットフォーム:IBMCloud
- AutoScale:インスタンステンプレート/インスタンスグループ 1サービス
- VPC:ロードバランサー 1サービス
- 仮想マシンインスタンス(1~2台)
AutoScaleルール
- 最低仮想マシンインスタンスを1台稼働させる
- CPU負荷が平均50%を上回り続けた場合、インスタンスを増加させる(集約期間の90秒間の平均)
- CPU負荷が平均50%を下回り続けた場合、インスタンスを減少させる(集約期間の90秒間の平均)
詳しいAutoScaleの仕組みはこちらを参照:オートスケールのためのインスタンス・グループの作成
##インスタンステンプレートの作成
AutoScaleする際の仮想マシンを予め定義しておくルールを作成する。
このテンプレートに従って、インスタンスが作成される。
- 名前:任意名
- 仮想プライベートクラウド:自分のVPC
- リソースグループ:自分のリソースグループ
- ロケーション:任意のロケーション
- イメージ:AutoScaleでデプロイする仮想マシンの種類を選択
- プロファイル:AutoScaleでデプロイする仮想マシンのプロファイルを選択
- SSH鍵:デプロイした仮想マシンに予め組み込ませるSSH鍵を選択
- ユーザデータ:デプロイした際に、一緒に実行しておきたいスクリプトなどを入力
- yum -y install httpd :Apacheをインストールする
- hostname > /var/www/html/index.html :hostnameを表示させるhtmlを生成
- ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime :ローカルタイムを変更
- systemctl start httpd : apacheを起動
#!/bin/sh
yum -y install httpd
hostname > /var/www/html/index.html
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
systemctl start httpd
##インスタンスグループの作成
- 名前:任意名
- リソースグループ:自分のリソースグループを選択
- Region:任意のリージョンを選択
- 名前:先ほど作成したインスタンステンプレートを選択
- サブネット:バックエンドで動作する仮想マシンインスタンスのサブネットを選択
- ロードバランサー:フロントで動作するLBを指定し、バックエンド側のアプリケーションポートを指定
- スケーリング方式:CPU負荷に応じてスケールさせるため、動的を選択
- 最小インスタンス:最低1台稼働させるため、1とする
- 最大インスタンス:CPU負荷に応じて、最大2台とするため、2とする
- 集約時間:最小値の90とする(90秒間の平均でスケールを判断)
- クールダウン:最小値の120とする(頻繁にスケールしないようにクール時間を指定)
- メトリックタイプ:CPUの負荷でスケールさせるため、**CPU使用率(%)**を選択
- 平均ターゲット使用量:仮想マシンのCPU使用率を50%でスケールさせるため、50を入力
最後に、保存 -> 右上の✓をいれて、インスタンスグループの作成を選択
##動作確認
###AutoScale動作前のロードバランサ配下インスタンスの状態
ロードバランサのIDを確認
% ibmcloud is lbs
ID 名前 ファミリー サブネット パブリックです プロビジョン状況 作動状況 リソース・グループ
r006-b386228d-4792-4570-8e8d-27fbf749d182 kh-alb Application khsubnet true active online khoshina
ロードバランサ配下のプールIDを確認
% ibmcloud is lb r006-b386228d-4792-4570-8e8d-27fbf749d182
プール ID 名前
r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9 kh-alb-backend
プール配下の仮想サーバインスタンスの状態を確認、まだ何もない状態
% ibmcloud is lb-pms r006-b386228d-4792-4570-8e8d-27fbf749d182 r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9
メンバーが見つかりませんでした。
AutoScaleのグループを有効にすると、最小インスタンス1に従って、自動で仮想サーバインスタンス1台が作成される
% ibmcloud is lb-pms r006-b386228d-4792-4570-8e8d-27fbf749d182 r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-4b3b605e-ea00-4f93-8053-a51796225eff 80 10.240.128.20 50 unknown 2020-09-22T20:56:26.914+09:00 create_pending
|
|
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-4b3b605e-ea00-4f93-8053-a51796225eff 80 10.240.128.20 50 faulted 2020-09-22T20:56:26.914+09:00 active
|
|
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-4b3b605e-ea00-4f93-8053-a51796225eff 80 10.240.128.20 50 ok 2020-09-22T20:56:26.914+09:00 active
##負荷掛け開始
仮想サーバインスタンスへ負荷を開始
AutoScaleの発動条件である、CPU負荷率は50%以上をキープしている(%idleが30%程度)
2020年 9月 22日 火曜日 21:13:51 JST
# dd if=/dev/urandom | gzip -9 >> /dev/null &
[1] 1744
# sar -p 1
CPU %user %nice %system %iowait %steal %idle
21時13分50秒 all 0.00 0.00 0.00 0.00 0.00 100.00
21時13分51秒 all 0.50 0.00 0.50 0.00 0.00 99.00
21時13分52秒 all 21.72 0.00 6.57 0.51 0.00 71.21
21時13分53秒 all 52.08 0.00 14.58 0.00 0.00 33.33
21時13分54秒 all 51.02 0.00 15.82 0.00 0.00 33.16
21時13分55秒 all 52.33 0.00 14.51 0.00 0.00 33.16
21時13分56秒 all 51.30 0.00 13.47 0.00 1.04 34.20
AutoScale開始
負荷がけ開始から、およそ2分後にAutoScaleが発動した
#ibmcloud is lb-pms r006-b386228d-4792-4570-8e8d-27fbf749d182 r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9 & date
2020年 9月22日 火曜日 21時15分57秒 JST
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-4b3b605e-ea00-4f93-8053-a51796225eff 80 10.240.128.20 50 ok 2020-09-22T20:56:26.914+09:00 update_pending
r006-533248b5-816a-47ae-986c-6a066099853f 80 10.240.128.21 50 unknown 2020-09-22T21:15:58.447+09:00 create_pending
仮想サーバインスタンスの作成完了
#ibmcloud is lb-pms r006-b386228d-4792-4570-8e8d-27fbf749d182 r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9 & date
2020年 9月22日 火曜日 21時16分18秒 JST
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-4b3b605e-ea00-4f93-8053-a51796225eff 80 10.240.128.20 50 ok 2020-09-22T20:56:26.914+09:00 active
r006-533248b5-816a-47ae-986c-6a066099853f 80 10.240.128.21 50 faulted 2020-09-22T21:15:58.447+09:00 active
ロードバランサのヘルスチェックが通り、分散対象リソースとしてロードバランサに組み込まれた
負荷がけ開始から、実際に利用可能になったのは2分45秒後
#ibmcloud is lb-pms r006-b386228d-4792-4570-8e8d-27fbf749d182 r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9 & date
2020年 9月22日 火曜日 21時16分36秒 JST
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-4b3b605e-ea00-4f93-8053-a51796225eff 80 10.240.128.20 50 ok 2020-09-22T20:56:26.914+09:00 active
r006-533248b5-816a-47ae-986c-6a066099853f 80 10.240.128.21 50 ok 2020-09-22T21:15:58.447+09:00 active
###LB分散動作の確認
httpsアクセスによる分散確認、均等にロードバランスされているのがわかる
% while true; do curl -w "gettime:%{time_total} " https://alb.xcloudyx.com; done
gettime:0.615598 kh-autoscale-grp-gmq28w1800-7qm3u
gettime:0.570493 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.611571 kh-autoscale-grp-gmq28w1800-7qm3u
gettime:0.614285 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.573616 kh-autoscale-grp-gmq28w1800-7qm3u
gettime:0.597437 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.594196 kh-autoscale-grp-gmq28w1800-7qm3u
gettime:0.568270 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.592016 kh-autoscale-grp-gmq28w1800-7qm3u
gettime:0.590057 kh-autoscale-grp-q2n803tsol-ev9ce
###負荷掛け停止
2020年 9月 22日 火曜日 21:28:57 JST
# kill %1
[1]+ Terminated dd if=/dev/urandom | gzip -9 >> /dev/null
#sar -p 1
21時28分57秒 all 52.63 0.00 13.16 0.00 0.00 34.21
21時28分58秒 all 53.44 0.00 12.17 0.00 0.00 34.39
21時28分59秒 all 1.51 0.00 0.00 0.00 0.00 98.49
21時29分00秒 all 0.00 0.00 0.00 0.00 0.00 100.00
21時29分01秒 all 0.00 0.00 0.00 0.00 0.00 100.00
21時29分02秒 all 0.00 0.00 0.00 0.00 0.00 100.00
21時29分03秒 all 0.00 0.00 0.00 0.00 0.00 100.00
AutoScale開始(縮小)
負荷がけ停止から、およそ90秒後にAutoScaleが発動した
2020年 9月22日 火曜日 21時30分36秒 JST
k.calc.cca1129@Koujis-MacBook-Pro ~ % ユーザー Kouji.Hoshina@ibm.com としてアカウント IBM の下でロード・バランサー・プール r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9 のメンバーをリストしています...
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-4b3b605e-ea00-4f93-8053-a51796225eff 80 10.240.128.20 50 unknown 2020-09-22T20:56:26.914+09:00 delete_pending
r006-533248b5-816a-47ae-986c-6a066099853f 80 10.240.128.21 50 ok 2020-09-22T21:15:58.447+09:00 update_pending
インスタンスが削除された
2020年 9月22日 火曜日 21時30分49秒 JST
k.calc.cca1129@Koujis-MacBook-Pro ~ % ユーザー Kouji.Hoshina@ibm.com としてアカウント IBM の下でロード・バランサー・プール r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9 のメンバーをリストしています...
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-533248b5-816a-47ae-986c-6a066099853f 80 10.240.128.21 50 ok 2020-09-22T21:15:58.447+09:00 update_pending
2020年 9月22日 火曜日 21時31分09秒 JST
k.calc.cca1129@Koujis-MacBook-Pro ~ % ユーザー Kouji.Hoshina@ibm.com としてアカウント IBM の下でロード・バランサー・プール r006-f4c2012e-7bba-4871-a4b2-1206b3af20c9 のメンバーをリストしています...
ID ポート ターゲット 重み ヘルス 作成済み プロビジョン状況
r006-533248b5-816a-47ae-986c-6a066099853f 80 10.240.128.21 50 ok 2020-09-22T21:15:58.447+09:00 active
###インスタンス増加時
インスタンス増加時は、Webページのgetに一時5秒以上かかっている場面が見られた
gettime:0.610742 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.609017 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.596975 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.585924 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.446488 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.607215 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:5.610640 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.578460 kh-autoscale-grp-q2n803tsol-ev9ce
###インスタンス減少時
減少時も同様にwebページのgetに5秒ちょっとかかる場面が見られた
gettime:0.602480 kh-autoscale-grp-lpm7yldef6-qyz06
gettime:0.581108 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.612629 kh-autoscale-grp-lpm7yldef6-qyz06
gettime:0.599119 kh-autoscale-grp-q2n803tsol-ev9ce
gettime:0.590478 kh-autoscale-grp-lpm7yldef6-qyz06
gettime:0.610427 kh-autoscale-grp-lpm7yldef6-qyz06
gettime:5.608297 kh-autoscale-grp-lpm7yldef6-qyz06
gettime:0.581778 kh-autoscale-grp-lpm7yldef6-qyz06