Amazon Web Serviceと連携して、オートスケールを利用した分散実行を行う場合の構成を以下に示します。
定義手順
上記構成を構築するための手順を以下に示します。
なお、クラウドサービスの詳細については、Amazon Web Serviceが提供するドキュメントを参照してください。
Amazon Elastic Compute Cloud(以降、Amazon EC2と呼びます)で、実行サーバ用にSystemwalker Operation Managerをインストールしたマシンに対し、以下を設定します。
分散実行に必要な設定
分散実行で使用する実行ユーザの登録と分散実行を利用する際に必要なジョブ実行制御の定義を行います。詳細については、“2.8 ジョブ実行制御の定義”を参照してください。
複数サブシステム環境の作成(複数サブシステムを利用する場合のみ)
複数サブシステムを利用する場合は、下記手順の前にサブシステム環境を作成してください。複数サブシステム運用の設定方法については、“2.5 複数サブシステム運用の定義”を参照してください。
Amazon EC2で、手順1.の設定をした実行サーバ用のマシンから、実行サーバ用のAmazon マシンイメージ(以降、AMIと呼びます)を作成します。
Amazon EC2のAuto Scalingで“起動テンプレート”を作成します。
AMIには、手順2.で作成したAMIを選択します。
スケジュールサーバと実行サーバ間で通信が行えるよう、セキュリティグループを設定します。スケジュールサーバと実行サーバの双方向通信で使用するポート番号については、“C.1 ポート番号一覧”を参照してください。
Amazon EC2のAuto Scalingで“Auto Scalingグループ”を作成します。
起動テンプレートには、手順3.で作成した起動テンプレートを選択します。
スケジュールサーバとAuto Scalingグループの実行サーバは、プライベート接続できるように設定します。
Auto Scalingグループ内では、常に1台以上のインスタンスが起動されている必要があります。そのため、スケーリングポリシーで、起動するインスタンスの最小容量を1以上に設定します。
スケールインと同時にインスタンスが削除されないよう、Auto Scalingグループにインスタンス終了のライフサイクルフックを追加します。
ライフサイクルフックのハートビートタイムアウトで、スケールインの一時停止時間を設定します。設定時間内に実行サーバで実行中のジョブが終了しない場合は、ジョブは異常終了となります。
スケジュールサーバで、分散実行を利用するためのキューを作成します。
分散実行キューに割り当てるホストグループの構成ホストには、手順4.で起動済みとなったAuto Scalingグループのインスタンスを構成ホストとして登録します。
分散実行の設計例については、“Systemwalker Operation Manager 活用ガイド”の“ジョブを自動的に負荷の少ないサーバに分散して実行させたい”を参照してください。
AWS Lambdaで、構成ホストの追加/削除をSystmwalker Operation Managerに依頼する関数を作成します。関数は、Auto Scalingグループと同一のAWSアカウント、リージョンに作成してください。
以下を実行する関数を作成します。
オートスケール時にAWS Lambdaに送られてくるイベントデータからスケールアウトかスケールインかを判定し、インスタンスIDを抽出。
イベントデータの“detail-type”の値から、スケールアクション種別を判定
EC2 Instance Launch Successfulの場合:スケールアウト
EC2 Instance-terminate Lifecycle Actionの場合:スケールイン
イベントデータの“EC2InstanceId”の値から、インスタンスIDを抽出
対象のインスタンスIDから分散実行先として追加/削除依頼するホスト名を抽出し、構成ホストの追加/削除をリクエスト
スケールアウトの場合:構成ホストの追加をSystemwalker Operation Managerにリクエスト
スケールインの場合:構成ホストの削除をSystemwalker Operation Managerにリクエスト
構成ホストの追加/削除のリクエストには、Web APIを使用します。Web APIの使用方法については“Systemwalker Operation Manager リファレンス集”の“Web API【Windows版】【Linux版】”を参照してください。
ポイント
構成ホストの追加をリクエストする時に、多重度を指定できます。省略した場合は、多重度10が設定されます。必要に応じて多重度を設定してください。
Amazon CloudWatch Eventsで、オートスケールイベントを契機にLambda関数を実行する設定をします。
Amazon CloudWatch Eventsで以下のルールを作成します。ルールはAuto Scalingグループと同一のAWSアカウント、リージョンに作成してください。
イベントソース
サービス名:Auto Scaling
イベントタイプ:Instance Launch and Terminate
特定のインスタンスイベント:以下を選択
EC2 Instance Launch Successful
EC2 Instance-terminate Lifecycle Action
ターゲット:手順6.で作成したLambda関数
参考
手順4.で設定したハートビートタイムアウトの時間内に実行中のジョブが終了せず異常終了となる場合は、Auto Scalingグループの設定を見直し、再度ジョブを実行してください。