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>"
スキーマ
- <top_level>
- <resource_definition>
- <parent_definition>
- <resource_selector>
- <name_or_resource_selector>
- <id_or_name_or_resource_selector>
- <handler>
- <autoscaler_config>
基本データ型
: 文字列 : 真偽値 : 数値 : ファイルパス。相対パスを指定した場合、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
cpu_model: <"amd_epyc_7713p" | "" | default="">
gpu: <number> # GPU
# 接続するディスクをリストで指定
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
を省略した場合、size
にmin_size
からmax_size
までの値を持つプランが存在するとみなします。
template.plan
の指定例はTipsを参照してください。
<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">