動的なマシンプロビジョニング
Autoscale™ は、マシンを動的に作成および削除する機能を提供します。PowerShell スクリプトを使用することで、この機能を活用できます。このスクリプトは、現在の負荷状況に基づいて、デリバリーグループ内のマシンの数を動的にスケールアップまたはスケールダウンするのに役立ちます。
このスクリプトは、以下の利点(その他にも)を提供します。
-
ストレージコストの削減。コンピューティングコストの削減に役立つ Autoscale とは異なり、このスクリプトはマシンをプロビジョニングするためのより費用対効果の高いソリューションを提供します。
-
負荷の変化に効果的に対応。このスクリプトは、現在のデリバリーグループの負荷に基づいてマシンの数を自動的にスケールアップまたはスケールダウンすることで、負荷の変化に対応するのに役立ちます。
スクリプトをダウンロードする
PowerShell スクリプトは
<https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs> で入手できます。
スクリプトの仕組み
重要:
-
スクリプトによって管理される複数のデリバリーグループで、マシンカタログを指定することはできません。つまり、複数のデリバリーグループが同じマシンカタログを共有している場合、スクリプトはそれらのどのデリバリーグループでも機能しません。
-
同じデリバリーグループに対して、複数の場所からスクリプトを同時に実行することはできません。
このスクリプトはデリバリーグループレベルで機能します。負荷(負荷インデックス の観点から)を測定し、マシンの作成または削除を決定します。
このスクリプトを通じて作成されたマシンは、後で識別できるように一意にタグ付けされます(
ScriptTag パラメーターを通じて)。マシンの作成または削除は、以下に基づいています。
-
デリバリーグループの最大負荷率。Autoscale が追加の負荷に対処するためにマシンを作成する最大レベルを指定します。このしきい値を超えると、現在の負荷がしきい値以下に減少するように、マシンがバッチで作成されます。
-
デリバリーグループの最小負荷率。アクティブなセッションがない、このスクリプトを通じて作成されたマシンを削除する最小レベルを指定します。このしきい値を超えると、アクティブなセッションがない、このスクリプトを通じて作成されたマシンは削除されます。
このスクリプトは、デリバリーグループ全体を監視し、トリガー条件が満たされたときにマシンを作成または削除することを目的としています。これは実行ごとに実行されます。つまり、意図したとおりに機能するように、定期的にスクリプトを実行する必要があります。スクリプトは最低5分間隔で実行することをお勧めします。そうすることで、全体的な応答性が向上します。
スクリプトは、動作するために以下のパラメーターに依存します。
| パラメーター | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
| DeliveryGroupName | 文字列 | X | 現在の負荷を判断するために監視するデリバリーグループの名前。セミコロンで区切られた名前のリストを指定できます。例: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile。 |
| XdProfileName | 文字列 | X | リモートサーバーへの認証に使用するプロファイルの名前。このパラメーターを使用してリモートサーバーに認証する方法の詳細については、認証APIを参照してください。 |
| HighWatermark | 整数 | 80 | Autoscale が追加の負荷に対応するためにマシンを作成する際の最大負荷率(負荷インデックスの観点から)。 |
| LowWatermark | 整数 | 15 | アクティブなセッションがない、このスクリプトで作成されたマシンを削除する際の最小負荷率(負荷インデックスの観点から)。 |
| MachineCatalogName | 文字列 | X | マシンを作成するマシンカタログの名前。 |
| MaximumCreatedMachines | 整数 | -1 | 指定されたデリバリーグループで作成できるマシンの最大数。値が 0 以下の場合、スクリプトはこのパラメーターを処理しません。 |
| ScriptTag | 文字列 | AutoscaledScripted | スクリプトによって作成されたマシンに適用されるタグ。 |
| EventLogSource | 文字列 | X | Windows イベントビューアーに表示されるソース名。 |
注:
「X」は、そのパラメーターにデフォルト値が指定されていないことを示します。
既定では、スクリプトは初回実行時にすべてのパラメーター(
ScriptTag パラメーターを除く)を必要とします。それ以降の実行では、DeliveryGroupName と XdProfileName パラメーターのみが必要です。オプションで、最小および最大パーセンテージ負荷を更新することを選択できます。
スクリプトを初回実行する際は、単一のデリバリーグループを指定する必要があることに注意してください。たとえば、スクリプトを初回実行する際に、次の PowerShell コマンドを使用して2つのデリバリーグループを指定すると、スクリプトは機能しません。
-
Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1;dg2' -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName 'cat1'\
代わりに、まず次のコマンドを使用して単一のデリバリーグループ(この例では dg1)を指定します。
-
Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1' -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName 'cat1'\
その後、次のコマンドを使用して、2番目のデリバリーグループ(この例ではdg 2)のスクリプトを実行します。
-
Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1;dg2' -XdProfileName profile
前提条件
スクリプトを実行するには、次の前提条件が満たされていることを確認してください。
-
マシンは、マシンが作成されているのと同じドメイン内に存在します。
-
そのマシンにRemote PowerShell SDKがインストールされていること。Remote PowerShell SDKの詳細については、「SDKとAPI」を参照してください。
-
その他の前提条件:
-
監視するデリバリーグループ
-
Machine Creation Services™ (MCS) を介して作成され、関連するプロビジョニングスキーム(テンプレート)を持つマシンカタログ
-
プロビジョニングスキームに関連付けられているIDプール
-
スクリプトがWindowsイベントログに情報を書き込めるように作成されるイベントログソース
-
リモートサーバーへの認証を可能にするセキュアクライアント
-
権限、推奨事項、および注意事項
スクリプトを実行する際は、次の点に注意してください。
-
XdProfileNameパラメーターを使用してリモートサーバーに認証するには、Citrix Cloudコンソールで作成されたAPIアクセスセキュアクライアントを使用して認証プロファイルを定義する必要があります。詳細については、「認証API」を参照してください。 -
Active Directory でマシンアカウントを作成および削除する権限が必要です。
-
PowerShell スクリプトを Windows タスクスケジューラで自動化することをお勧めします。詳細については、「Windows タスクスケジューラを使用して自動タスクを作成する」を参照してください。
-
スクリプトで情報 (たとえば、失敗やアクション) を Windows イベントログに書き込む場合は、まず
New-EventLogコマンドレットを使用してソース名を指定する必要があります。たとえば、New-EventLog -LogName Application –Source <sourceName>のように指定します。その後、Windows イベントビューアの アプリケーション ペインでイベントを表示できます。 -
スクリプトの実行中にエラーが発生した場合は、スクリプトを手動で実行し、スクリプトチェックを実行して問題をトラブルシューティングしてください。
認証 API
スクリプトを実行する前に、API アクセスセキュアクライアントを使用して認証プロファイルを定義する必要があります。スクリプトが実行されるのと同じアカウントを使用してセキュアクライアントを作成する必要があります。
セキュアクライアントには、次の権限が必要です。
-
MCS を使用してマシンを作成および削除する。
-
マシンカタログを編集する (マシンを追加および削除するため)。
-
デリバリーグループを編集する (マシンを追加および削除するため)。
セキュアクライアントを作成するときは、セキュアクライアントが現在のあなたのアカウントから権限を自動的に継承するため、あなたのアカウントに上記の権限があることを確認してください。
セキュアクライアントを作成するには、次の手順を実行します。
-
Citrix Cloud™ にサインインし、Identity and Access Management > API Access に移動します。
-
セキュアクライアントの名前を入力し、Create Client をクリックします。
リモートサーバーに認証するには、
Set-XDCredentials PowerShell コマンドを使用します。例:
-
Set-XDCredentials -APIKey <key_id> -CustomerId <customer_id> -SecretKey <secret_key> -StoreAs <name specified by the XdProfileName parameter>
Windows タスク スケジューラを使用して自動タスクを作成する
PowerShell スクリプトは Windows タスク スケジューラで自動化できます。これにより、スクリプトは特定の時間間隔で、または特定の条件が満たされたときに自動的に実行されます。このスクリプトを Windows タスク スケジューラで実行するには、タスクの作成 > 設定タブで新しいインスタンスを開始しないを選択してください。これにより、スクリプトがすでに実行中の場合に、Windows タスク スケジューラがスクリプトの新しいインスタンスを実行するのを防ぎます。
スクリプトの実行例
スクリプトの実行例を以下に示します。スクリプトファイルが複数回呼び出されていることに注意してください。この例では、負荷をシミュレートするために、1つのセッションが起動され、その後終了されます。
スクリプトの実行例(/en-us/citrix-daas/media/script-execution-example.png)
スクリプトに関するトラブルシューティングのチェックリスト
スクリプトは、情報(エラーやアクションなど)を Windows イベント ログに書き込みます。この情報は、スクリプトの実行時に発生する問題のトラブルシューティングに役立ちます。以下のトラブルシューティングのチェックリストを念頭に置くと役立つ場合があります。
-
リモートサーバーとの通信の失敗。考えられる対処法:
-
サーバーへの接続を確認します。
-
使用している API キーが有効であることを確認します。
-
-
マシンの作成の失敗。考えられる対処法:
-
スクリプトを実行しているユーザーアカウントが、ドメインにユーザーアカウントを作成するための十分な権限を持っていることを確認します。
-
API キーを作成したユーザーが、MCS を使用してマシンをプロビジョニングするための十分な権限を持っていることを確認します。
-
マシンカタログの有効性(つまり、そのイメージがまだ存在し、良好な状態であること)を確認します。
-
-
マシンカタログまたはデリバリーグループにマシンを追加できない。考えられる対処法:
-
APIキーを作成したユーザーが、マシンカタログおよびデリバリーグループにマシンを追加および削除するための十分な権限を持っていることを確認します。
-