コンテンツにスキップ

Configuration Reference

sacloud/autoscalerのコンフィギュレーションファイルはYAML形式で書かれた、操作対象のリソース定義や動作を調整するためのものです。

コンフィギュレーションファイルの例:

# 操作対象のリソースの定義
# スケールさせたいリソース群をここで定義する
resources:
  # サーバ(垂直スケール)
  - type: Server
    name: "server"
    selector:
      names: ["example"]
      zones: ["is1a"]
    shutdown_force: true

    # 親リソース(GSLB)
    # GSLB配下のサーバが垂直スケールする際にサーバのデタッチ&アタッチが行われる
    parent:
      type: GSLB
      selector: "example-gslb"

# カスタムハンドラーの定義
# handlers:
#   - name: "fake"
#     endpoint: "unix:autoscaler-handlers-fake.sock"

# オートスケーラーの動作設定
autoscaler:
  cooldown: 600 

# さくらのクラウド API関連
# sakuracloud:
#   # Usacloud互換のプロファイル機能でAPIキーを指定
#   profile: "<your-profile-name>"
#
#   # APIキーの直接指定も可能
#   token: "<your-token>"
#   secret: "<your-secret>"

スキーマ

基本データ型

  • : 文字列
  • : 真偽値
  • : 数値
  • : ファイルパス。相対パスを指定した場合、AutoScaler Coreのカレントディレクトリが基準

<top_level>

# オートスケール対象リソースの定義
resources:
        [ - <resource_definition> ]

# カスタムハンドラーのリスト(省略可能)
handlers:
        [ - <handler> ]

# オートスケーラーの動作設定(省略可能)
autoscaler:
  <autoscaler_config>

# さくらのクラウドAPI関連設定(省略可能)
# Note: APIキーにはアクセスレベル`作成・削除`または`設定編集`が必要です
sakuracloud:
  # Usacloud互換のプロファイルの名称
  # 環境変数SAKURACLOUD_PROFILEでの指定も可能
  # 省略した場合は~/.usacloud/currentの値を参照します
  profile: <string>

  # APIトークン、省略した場合は環境変数SAKURACLOUD_ACCESS_TOKENを参照します
  token: <string>
  # APIシークレット、省略した場合は環境変数SAKURACLOUD_ACCESS_TOKEN_SECRETを参照します
  secret:  <string>

<resource_definition>

操作対象となるさくらのクラウド上のリソースの定義 resource_def_xxxのいずれかを指定します。

<resource_def_elb> | <resource_def_router> | <resource_def_server> | <resource_def_server_group>

<resource_def_elb>

エンハンスドロードバランサの定義。
ここで定義したリソースは垂直スケール可能になります(ハンドラelb-vertical-scaler)。

type: "ELB" # or EnhancedLoadBalancer
name: <string>
selector:
  # idかnames or tagsのどちらかを指定、必須
  id: <string> | <number>
  # 部分一致、複数指定した場合はAND結合
  names:
          [ - <string> ]
  tags:
          [ - <string> ]
# 垂直スケールさせる範囲(省略可能)
plans:
  [ - name: <string> # プラン名、省略可能 
      cps: <number> ]

# スケール後のセットアップ猶予時間(省略時は0秒)
setup_grace_period: <number>

plansを省略した場合のデフォルト値は以下の通りです。

# ELBのデフォルトの垂直スケール範囲
plans:
  - cps: 100
  - cps: 500
  - cps: 1000
  - cps: 5000
  - cps: 10000
  - cps: 50000
  - cps: 100000
  - cps: 400000

<resource_def_router>

ルータの定義。
ここで定義したリソースは垂直スケール可能になります(ハンドラrouter-vertical-scaler)。

type: "Router"
name: <string>
selector:
  # idかnames or tagsのどちらかを指定、必須
  id: <string> | <number>
  # 部分一致、複数指定した場合はAND結合
  names:
          [ - <string> ]
  tags:
          [ - <string> ]
  # ゾーン(必須) 
  zones:
          [ - <"is1a" | "is1b" | "tk1a" | "tk1b" | "tk1v"> ]
# 垂直スケールさせる範囲(省略可能)
plans:
  [ - name: <string> # プラン名、省略可能 
      band_width: <number> ]

# スケール後のセットアップ猶予時間(省略時は0秒)
setup_grace_period: <number>

plansを省略した場合のデフォルト値は以下の通りです。

# ルータのデフォルトの垂直スケール範囲
plans:
  - band_width: 100
  - band_width: 250
  - band_width: 500
  - band_width: 1000
  - band_width: 1500
  - band_width: 2000
  - band_width: 2500
  - band_width: 3000
  - band_width: 3500
  - band_width: 4000
  - band_width: 4500
  - band_width: 5000

<resource_def_server>

サーバの定義。
ここで定義したリソースは垂直スケール可能になります(ハンドラserver-vertical-scaler)。
parentを定義した場合、サーバの垂直スケール前後にparentが示すリソースからのデタッチ/アタッチが行われます。

type: "Server"
name: <string>
selector:
  # idかnames or tagsのどちらかを指定、必須
  id: <string> | <number>
  # 部分一致、複数指定した場合はAND結合
  names:
          [ - <string> ]
  tags:
          [ - <string> ]
  # ゾーン(必須) 
  zones:
          [ - <"is1a" | "is1b" | "tk1a" | "tk1b" | "tk1v"> ]

# コア専有プランを利用するか
dedicated_cpu: <bool>

# 強制シャットダウンを行うか(ACPIが利用できないサーバの場合trueにする)
shutdown_force: <bool> 

# 垂直スケールさせる範囲(省略可能)
plans:
  [ - name: <string> # プラン名、省略可能 
      core: <number> # コア数
      memory: <number> #メモリサイズ、GB単位 
  ]

# スケール後のセットアップ猶予時間(省略時は60秒)
setup_grace_period: <number>

# 親リソースの定義(省略可能)
parent: <parent_definition>

plansを省略した場合のデフォルト値は以下の通りです。

# サーバのデフォルトの垂直スケール範囲
plans:
  - core: 2
    memory: 4
  - core: 4
    memory: 8
  - core: 4
    memory: 16
  - core: 8
    memory: 16
  - core: 10
    memory: 24
  - core: 10
    memory: 32
  - core: 10
    memory: 48

<resource_def_server_group>

サーバグループの定義。
ここで定義したリソースは水平スケール可能になります(ハンドラserver-horizontal-scaler)。 parentを定義した場合、サーバの垂直スケール前後にparentが示すリソースからのデタッチ/アタッチが行われます。

type: "ServerGroup"
name: <string> 

# 対象サーバの指定
server_name_prefix: <string> #グループ内の各サーバ名のプレフィックス、省略した場合はnameが利用される
server_name_format: <string> #グループ内の各サーバ名のフォーマット、省略した場合は"%s-%03d"が利用される
zones: [ - <"is1a" | "is1b" | "tk1a" | "tk1b" | "tk1v"> ]

# 最小/最大サーバ数
min_size: <number>
max_size: <number>

# 名前付きプラン(サーバグループの場合はサーバ数をプランとして表す)
plans:
  [ - name: <string> # プラン名、省略可能 
      size: <number> # サーバ数
  ]

# スケール後のセットアップ猶予時間(省略時は0秒)
setup_grace_period: <number>

# 強制シャットダウンを行うか(ACPIが利用できないサーバの場合trueにする)
shutdown_force: <bool>

# グループ内のサーバのテンプレート
template:
  use_group_tag: <bool> # @groupタグによるホスト分散を行うか
  tags: [ - <string> ] 
  description: <string>

  icon: <id_or_name_or_selector>
  cdrom: <id_or_name_or_selector>
  private_host: <id_or_name_or_selector>

  interface_driver: <"virtio" | "e1000" | default="virtio">

  plan:
    core: <number>           # コア数
    memory: <number>         # メモリサイズ、GB単位 
    dedicated_cpu: <bool> # コア専有の場合true

  # 接続するディスクをリストで指定  
  disks:
    [ - name_format: "%s-disk%03d" # 省略した場合は 'サーバ名+ディスク連番' (例: server-group-001-disk001)
        tags: [ - <string> ]
        description: <string>

        icon: <id_or_name_or_selector>

        source_archive: <name_or_resource_selector>
        source_disk: <name_or_resource_selector>
        os_type: <string> # 指定可能な値は https://github.com/sacloud/iaas-api-go/blob/7cfcd90757d27993640bbc412e7e32526ba9218b/ostype/archive_ostype.go#L97 を参照

        plan: <"ssd" | "hdd">
        connection: <"virtio" | "ide">
        size: <number>
    ]

  # ディスクの修正パラメータ、cloud_configとの併用は出来ない
  edit_parameter:
    disabled: <bool>        # ディスクの修正を行わない場合true
    host_name_format: "%s-%03d" # ホスト名フォーマット、サーバ名とインデックスが利用可能(例: %s-%02d)。省略した場合はサーバ名が利用される
    password: <string>
    disable_pw_auth: <bool>
    enable_dhcp: <bool>
    change_partition_uuid: <bool>
    startup_scripts: [ - <string> | <filepath> ]
    ssh_keys: [ - <string> | <filepath> ]

  # cloud-init用のパラメータ、edit_parameterとの併用は出来ない  
  cloud_config: <string> | <filepath>

  network_interfaces:
    # 上流ネットワーク
    upstream: <"shared"> | <resource_selector>

    packet_filter: <id_or_name_or_selector>
    # 以下はupstreamがshared以外の場合のみ指定可能
    assign_cidr_block: <string>
    assign_netmask_len: <int>
    default_route: <string>

    # 上流リソースの操作のためのメタデータ
    # サーバグループの上流にELB/GSLB/LB/DNSを定義している場合のみ指定可能
    expose:
      # 公開するポート番号のリスト
      ports: [ - <number> ] 

      # ELB向け: 実サーバ登録時のサーバグループ名
      server_group_name: <string>

      # GSLB向け: 実サーバ登録時の重み値
      weight: <number>

      # LB向け: 対象VIPのリスト
      # 省略した場合、このNICと同じネットワーク内に存在するVIP全てが対象となる
      vips: [ - <string> ]

      # LB向け: 実サーバ登録時のヘルスチェック
      health_check:
        # ヘルスチェックで用いるプロトコル
        protocol: < "http" | "https" | "ping" | "tcp" >

        # プロトコルがhttp/httpsの場合のリクエスト先パス 例:/index.html
        path: <string>
        # プロトコルがhttp/httpsの場合の期待するレスポンスステータスコード
        status_code: <number>

      # DNS向け: レコード登録時のレコード名 例:www
      record_name: <string>
      # DNS向け: レコード登録時のTTL
      record_ttl: <number>

# 親リソースの定義(省略可能)
parent: <parent_definition>

plansを省略した場合、sizemin_sizeからmax_sizeまでの値を持つプランが存在するとみなします。

<parent_definition>

type: < "DNS" | "EnhancedLoadBalancer" | "ELB" | "GSLB" | "LoadBalancer" >
selector: <name_or_resource_selector>

<resource_selector>

id: <string>
names: [ - <string> ]
tags: [ - <string> ]

<name_or_resource_selector>

<string> | <resource_selector>

文字列が指定された場合はnamesのみが指定されたresource_selectorと同等とみなします。

# 文字列を指定した場合
selector: "name"

# 以下と同等
# selector:
#   names: ["name"]

<id_or_name_or_resource_selector>

<string> | <name_or_resource_selector>

文字列が指定された場合、数値に変換できればIDとして、それ以外はname_or_resource_selectorとして扱われます。

<handler>

カスタムハンドラーの定義。

name: <string> #ハンドラ名
endpoint: <string> #gRPCのエンドポイントアドレス(例: unix:/var/run/your-custom-handler.sock)

<autoscaler_config>

オートスケーラーの動作設定

cooldown: # 同一ジョブの連続実行を抑制するためのクールダウン期間、秒単位で指定
  up: <number | default = 600>
  down: <number | default = 600>

# ビルトインハンドラの設定
handlers_config:
  disabled: <bool> # すべてのビルトインハンドラの無効化(handlersでの指定より優先される)
  handlers:        # ビルトインハンドラごとの設定、ハンドラ名をキーにもつmap
    <string>:          # ビルトインハンドラ名
      disabled: <bool> # このハンドラを無効化するか

# Exporterの設定
exporter_config:
  enabled: <bool>
  address: <string | default=":8081">