SoftLayerにAutoScaleが発表されました。 先日からAPIにはScale関数が登場していたのですがようやく管理ポータル側から設定ができるようになっていました。

  • この文章はRelease後の検証のため誤りが含まれている可能性がありますのでご注意下さい。

これは何?

SoftLayerのAutoScale機能についての説明

AutoScaleでは、トリガーの条件を元にサーバの台数を自動的に増やすことが出来る機能です。

トリガーには

  • CPU%の値
  • 毎日の時間
  • 特定の日時

を選択することが出来ます。 またその際に実行できるアクションは

  • 相対的にサーバを増やす(追加台数指定)
  • 指定の台数にする(固定)
  • CPU%を指定する

が選択できます。 これによって、朝6時に10台へ夜8時に1台に変更などという事が出来ます。またトリガーは複数選択できるためこの間もCPUに応じてAutoScaleを取ることが出来ます。

またAutoScaleの際には、Local Load Balancer(DataCenter内で利用可能なロードバランサーオプションの名前)に自動的に追加することが可能です。 これ意外にも、「Auto」ではなく「Manual」でスケールさせることも出来ます、これは便利そうです。

使い方

管理ポータル上から、DevicesAuto Scale を選択します。なにも設定がないので右上の Add Auto Scale Groupより追加を行います。

設定値を記載しておきます。まだ全ての動作を見ていないので不明な箇所は※で記載しておきます。以下の設定をした後に右下の Add Groupから構成を追加します。

Group Configuration

参考 Auto Scale Terms

Group Details

分類 設定値 補足
Group Details Group Name グループの名前 ユニークになっていれば何でも良いみたい
  Region 地域の選択  
  DataCenter サーバを置くデータセンターを選択  
  Termination Policy Closest to next Charge, Newest , Oldest サーバをRemoveする際にどのサーバから消すかの指定
Network Private Network Only ON/OFF プライベートのネットワークのみ利用
  Private (VLAN) VLAN名  
  Public (VLAN) VLAN名  
Group Setting Minimum Member Count 最小の起動数  
  Maximum Member Count 最大の起動数  
  CloodDown Prelod 時間(min),Max 10day AutoScale動作後の非監視期間(だと思う)

Member Configuraion

| 分類 | 設定値 | 値 | 補足 | |:—-|:——|:–|:—-|

ここは一般的な仮想サーバのパラメータが指定可能、ホスト名とドメイン名が仮にwebautoscale.comだとすると実際にプロビジョニングされる際にはweb-xxxxxx.autoscale.comのような名称が割り振られる。ここでは Provision Scirptが指定可能。

Policies

Policyは何個でも作ることが出来る

分類 設定値 補足  
Policy Details PolicyName 必須    
  Cooldown Preiod 0(min)-10(day) 全体の設定を利用するか、個別に作るか  
Triggers 指定 CPU%を指定可能( 30%以上や10%以下等,複数組みあせ可能),特定の曜日, 特定の期間    
Action Scale By Exact(固定) , Relative(相対的に), Percentage(%) 値は符号なしの場合「増加」、マイナス符号の場合「削減」となる  

Local Load Balancers

| 分類 | 設定値 | 値 | 補足 | |:—-|:——|:–|:—-|

  • あとで時間が有る時に追記する

Policiesでは、どの様に増やすのかが指定可能です。設定できるLoadBalancersはLocal Load Balancersのみですが基本的には問題無いと思います。指定したLBに自動的に組み込みが行われます。

実験

その1

最初にプロビジョニングされたサーバ上でcpuを100%にするスクリプトを実施

  • Termination Policy : Newest
  • Cooldown Period : 3min
  • 指定したポリシー:80%以上3分間経過すると「Relatively 1 Members」(相対的に1つ追加)
  • LLB: 80番ポート、ヘルスチェックはDefaultを指定

この状態でCPUを100%にすることで1台が追加されます。 合計にすると追加後は全体で平均CPU使用率50%(100%+0%)になっているはずです。したがって動きとしては3分後に1台追加 ~~ 、その後 3分で Cooldown し新しい方が消える(Terminate)予定です。 ~~ この設定の場合全体で80%以下になるまで1台づつAutoscaleで増加

結果

  • 3分後に1台が追加
  • 6分後特に変化なし(2台のまま継続)
  • その後経か無いため1台目のCPUを0%に変更
  • ~~ 30分放置したが結果変わらず ~~ これで正しい
  • ~~ LogにもCooldownしたとかそういう結果は出てこない(事が正しのか不明だ) ~~ 正しいCooldown経過後の数値はログに出て欲しいが出ない

そもそもTerminateの指定は削除の指定であるのか、CPUの使用率は台数分の平均値なのか等が不明。

その2

最初にプロビジョニングされたサーバ上でcpuを100%にするスクリプトを実施

  • Termination Policy : oldest
  • Cooldown Period : 3min
  • 指定したポリシー:30%以上3分間経過すると「Relatively 1 Members」(相対的に1つ追加)
  • LLB: 80番ポート、ヘルスチェックはDefaultを指定

この状態でCPUを100%に1:することで1台が追加されます。

結果

  • CPUは平均で30%なのか3までAutoScaleで起動、ログからは13分単位で追加されてる
  • これにより監視しているCPUは合計の平均値であることは確実のようです。
  • その後変化なし

その3

  • Termination Policy : oldest
  • Cooldown Period : 3min
  • 指定したポリシー:30%以下3分間経過すると「Relatively -1 Members」(相対的に1つ削減)
  • LLB: 80番ポート、ヘルスチェックはDefaultを指定

前提として「その2」の状態である

結果

  • CPUの使用を0.x%にする
  • その後1台づつ terminate policyに従い削除される

まとめ

  • 一番最初上手くCPUを100にしても動いていませんでしたがその後動きました。Nimsoftは導入されていない状態のサーバがデプロイされています(CentOS)
  • ~~ 2014/08/21 増えたサーバの「始末」をどうするのか?Termination Policy動いている?よくわからない ~~
  • 問題なく増加、削除が可能である
  • トリガー条件でスケジュールベースが選択できることは便利
  • 監視トリガーで全体で%の指定が可能なので余力を常に確保するようにAutoScale出来る
  • 手動で設定の変更ことなしに「QuickScale」が出来るのは面白い
  • Regionの名前が初めて出てきた気がします。香港の場合には「as-hkg-central-1」そしてその中のDataCenter名が「Hong Kong2」という構成ですね。

参考