LoginSignup
4
1

More than 3 years have passed since last update.

IBMCloud CPU負荷によるAutoScale VPC

Last updated at Posted at 2020-09-23

目的

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する際の仮想マシンを予め定義しておくルールを作成する。
このテンプレートに従って、インスタンスが作成される。

インスタンステンプレート -> 作成を選択
IBM_Cloud_Infrastructure-8.png

  • 名前:任意名
  • 仮想プライベートクラウド:自分のVPC
  • リソースグループ:自分のリソースグループ
  • ロケーション:任意のロケーション
  • イメージ:AutoScaleでデプロイする仮想マシンの種類を選択
  • プロファイル:AutoScaleでデプロイする仮想マシンのプロファイルを選択

IBM_Cloud_Infrastructure.png

  • 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

IBM_Cloud_Infrastructure-2.png

インスタンスグループの作成

インスタンスグループ -> 作成を選択
IBM_Cloud_Infrastructure-3.png

  • 名前:任意名
  • リソースグループ:自分のリソースグループを選択
  • Region:任意のリージョンを選択

IBM_Cloud_Infrastructure-4.png

  • 名前:先ほど作成したインスタンステンプレートを選択
  • サブネット:バックエンドで動作する仮想マシンインスタンスのサブネットを選択
  • ロードバランサー:フロントで動作するLBを指定し、バックエンド側のアプリケーションポートを指定
  • スケーリング方式:CPU負荷に応じてスケールさせるため、動的を選択

IBM_Cloud_Infrastructure-5.png

  • 最小インスタンス:最低1台稼働させるため、1とする
  • 最大インスタンス:CPU負荷に応じて、最大2台とするため、2とする
  • 集約時間:最小値の90とする(90秒間の平均でスケールを判断)
  • クールダウン:最小値の120とする(頻繁にスケールしないようにクール時間を指定)
  • メトリックタイプ:CPUの負荷でスケールさせるため、CPU使用率(%)を選択
  • 平均ターゲット使用量:仮想マシンのCPU使用率を50%でスケールさせるため、50を入力

最後に、保存 -> 右上の✓をいれて、インスタンスグループの作成を選択
IBM_Cloud_Infrastructure-6.png

動作確認

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
4
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
4
1