サービスの可用性や性能を考慮した構成の1つとして、稼働させておく仮想サーバを一定の台数で固定したいといった要求事項に対応するパターンです。
一般に、サーバは突如停止する可能性が 0 ではありません。
クラウドでも、設備等の物理的なトラブルや、トラフィック増による性能劣化など、
何らかの理由でサービス継続ができない場合があります。
そこで本パターンでは、K5で提供しているオートスケールの以下の機能を利用して、
稼働させておく仮想サーバを一定の台数で固定するパターンを記載します。
ヘルスチェック機能で検知した異常仮想サーバへの自動復旧機能の動作イメージ
本パターンでは、「オートスケール(負荷分散構成)」 で使用したシングルAZ構成で、負荷分散かつオートスケールに対応した以下のサンプルについて記載します。
(1) 本パターンのテンプレートの設定内容
本パターンのテンプレートでは、以下の内容を設定します。
パラメータ名 | 設定値 | 内容 |
---|---|---|
az | "jp-east-1b" | AZを設定 |
subnet-id | (IDを設定) | 仮想サーバやロードバランサーを配備する サブネットID を設定 |
param-image-id | (IDを設定) | 仮想サーバの イメージID を設定 |
param-flavor | "S-1" | 仮想サーバの フレーバー を設定 |
key-name | "cdp_keypair2" | 仮想サーバにログインするための キーペア を設定 |
autoscale-security-group | "SG_default", "SG_Web_Local", "SG_Maintenance" | 仮想サーバ用セキュリティグループを 名称 で設定 |
lb-security-group | ("SG_default","SG_LB_Local"の ID を設定) | ロードバランサー用セキュリティグループを ID で設定 ※ロードバランサー用のセキュリティグループは名称では設定できません |
lb-name | (任意の名称) | ロードバランサー名 を設定 |
(2) resources セクションの設定内容詳細
オートスケールの基本的な設定を行うリソースと、アラーム設定とアラーム検知時の実行内容のリソースのペアの設定内容を記載します。
- 基本的な設定を行うリソース
web-server-group
- ヘルスチェックで仮想サーバの異常を検知するアラーム設定と、アラーム検知時の実行内容
elb_status_abnormal、web_server_recovery_policy
(3-a) 基本的な設定を行うリソース
プロパティ | 設定値 | 内容 |
---|---|---|
AvailabilityZones | {get_param: az} | AZの設定を get_resource で参照 |
LaunchConfigurationName | {get_resource: launch_config} | 仮想サーバの設定を get_resource で参照 |
MinSize | "2" | 最小2台で設定 |
MaxSize | "6" | 最大6台で設定 |
VPCZoneIdentifier | { get_param: subnet-id } | 仮想サーバを配備する サブネット を指定 |
HealthCheckGracePeriod | "120" | ロードバランサーによるヘルスチェックを 有効 に設定 |
HealthCheckType | "ELB" | ヘルスチェックは "ELB" で固定 |
Cooldown | "750" | 次のスケール処理を行わない時間を 750秒(12分) で設定 |
LoadBalancerNames | {get_resource: fj-elb} | ロードバランサーの設定を get_resource で参照 |
(3-d) ヘルスチェックで仮想サーバの異常を検知するアラーム設定と、アラーム検知時の実行内容
プロパティ | 設定値 | 内容 |
---|---|---|
meter_name | fcx.loadbalancing.instance.unhealthy | ヘルスチェックのアラームを設定 |
statistic | "min" | 統計種別:異常となった仮想サーバ数を数えるよう、"min"を指定 |
period | "60" | 監視間隔を 60秒間 で設定 |
evaluation_periods | "1" | アラーム判定回数(しきい値超えの回数)を 1回 で設定 |
repeat_actions | true | アクション繰り返し※ヘルスチェック機能を使用する場合は"true"を指定 |
threshold | "1" | しきい値となる異常仮想サーバの数を指定、'1' なら、1台でも異常となればスケールアウト |
alarm_actions | { get_attr: [web_server_recovery_policy, AlarmUrl]} | しきい値超えと判定した際に行うアクション |
matching_metadata | { 'resource_id': {get_param: lb-name}} | メタデータ検索条件(監視対象を設定) |
comparison_operator | "ge" | 条件判定式で ge:以上 を設定 |
プロパティ | 設定値 | 内容 |
---|---|---|
AdjustmentType | ChangeInCapacity | 仮想サーバの増減タイプ "ChangeInCapacity" の場合、 "ScalingAdjustment" で指定した数を追加/削除する |
AutoScalingGroupName | { get_resource: web-server-group } | スケーリングポリシーを設定するスケーリンググループを get_resource で設定 |
ScalingAdjustment | "1" | 仮想サーバの増減数 を、1台追加 で設定 |
負荷分散機能、オートスケール機能を利用した場合のメリット・効果は以下の通りです。