Citrix DaaS™

マシンの動的プロビジョニング

  • Autoscale™ は、マシンの動的な作成および削除機能を提供します。この機能はPowerShellスクリプトを使用して活用できます。このスクリプトは、現在の負荷状況に基づいてデリバリーグループ内のマシン数を動的にスケールアップまたはスケールダウンするのに役立ちます。

このスクリプトには、以下の利点があります。

  • ストレージコストの削減。コンピューティングコストの削減に役立つAutoscaleとは異なり、このスクリプトはマシンをプロビジョニングするためのより費用対効果の高いソリューションを提供します。

  • 負荷変動への効果的な対応。このスクリプトは、現在のデリバリーグループの負荷に基づいてマシン数を自動的にスケールアップまたはスケールダウンすることで、負荷変動に対応するのに役立ちます。

スクリプトのダウンロード

PowerShellスクリプトは、https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs で入手できます。

スクリプトの動作

重要:

  • スクリプトで管理するデリバリーグループに、複数のマシンカタログを指定することはできません。つまり、複数のデリバリーグループが同じマシンカタログを共有している場合、スクリプトはいずれのデリバリーグループでも機能しません。
  • 同じデリバリーグループに対して、複数の場所からスクリプトを同時に実行することはできません。

このスクリプトはデリバリーグループレベルで動作します。負荷(負荷インデックスの観点から)を測定し、マシンの作成または削除を決定します。

このスクリプトによって作成されたマシンは、後で識別できるように一意にタグ付けされます(ScriptTagパラメーターを使用)。マシンの作成または削除は、以下に基づいています。

  • デリバリーグループの最大負荷率。Autoscaleが追加の負荷に対応するためにマシンを作成する最大レベルを指定します。このしきい値を超えると、現在の負荷がしきい値以下になるように、マシンがバッチで作成されます。

  • デリバリーグループの最小負荷率。アクティブなセッションがない、このスクリプトによって作成されたマシンを削除する最小レベルを指定します。このしきい値を超えると、アクティブなセッションがない、このスクリプトによって作成されたマシンが削除されます。

このスクリプトは、デリバリーグループ全体を監視し、トリガー条件が満たされたときにマシンを作成または削除することを目的としています。これは実行ごとに動作します。つまり、意図したとおりに機能させるには、スクリプトを定期的に実行する必要があります。スクリプトは最低5分間隔で実行することをお勧めします。これにより、全体的な応答性が向上します。

スクリプトは、機能するために以下のパラメーターに依存しています。

パラメーター デフォルト値 説明
  • DeliveryGroupName String X 現在の負荷を判断するために監視するデリバリーグループの名前。セミコロンで区切られた名前のリストを指定できます。例:Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile
  • XdProfileName String X リモートサーバーへの認証に使用するプロファイルの名前。このパラメーターを使用したリモートサーバーへの認証の詳細については、「認証API」を参照してください。
    HighWatermark Integer 80 Autoscaleが追加の負荷に対応するためにマシンを作成する最大負荷率(負荷インデックスの観点から)。
    LowWatermark Integer 15 アクティブなセッションがない、このスクリプトによって作成されたマシンを削除する最小負荷率(負荷インデックスの観点から)。
  • MachineCatalogName String X マシンを作成するマシンカタログの名前。
  • MaximumCreatedMachines Integer -1 指定されたデリバリーグループで作成できるマシンの最大数。値が0以下の場合、スクリプトはこのパラメーターを処理しません。
    • ScriptTag String AutoscaledScripted スクリプトによって作成されたマシンに適用されるタグ。
    • EventLogSource String X Windowsイベントビューアーに表示されるソース名。
    • 注:

    • 「X」は、そのパラメーターにデフォルト値が指定されていないことを示します。

デフォルトでは、スクリプトは初回実行時にすべてのパラメーター(ScriptTagパラメーターを除く)を必要とします。それ以降の実行では、DeliveryGroupNameXdProfileNameパラメーターのみが必要です。オプションで、最小および最大負荷率を更新することもできます。

  • スクリプトを初めて実行するときは、単一のデリバリーグループを指定する必要があることに注意してください。たとえば、スクリプトを初めて実行するときに、次の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番目のデリバリーグループ(この例ではdg2)に対してスクリプトを実行します。

  • 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](/ja-jp/citrix-daas/manage-deployment/autoscale/dynamic-machine-provisioning.html#authentication-api)」を参照してください。
  • Active Directory でマシンアカウントを作成および削除する権限が必要です。

  • スクリプトで情報(たとえば、失敗やアクション)を Windows イベントログに書き込む場合は、まず New-EventLog コマンドレットを使用してソース名を指定する必要があります。たとえば、New-EventLog -LogName Application –Source <sourceName> のように指定します。その後、Windows イベントビューアの [アプリケーション] ペインでイベントを表示できます。
  • スクリプトの実行中にエラーが発生した場合は、スクリプトを手動で実行し、スクリプトチェックを実行して問題をトラブルシューティングしてください。

認証 API

スクリプトを実行する前に、API アクセスセキュアクライアントを使用して認証プロファイルを定義する必要があります。スクリプトが実行されるのと同じアカウントを使用して、セキュアクライアントを作成する必要があります。

セキュアクライアントには、以下の権限が必要です。

  • MCS を使用してマシンを作成および削除する
  • マシンカタログを編集する(マシンの追加と削除)
  • デリバリーグループを編集する(マシンの追加と削除)

セキュアクライアントを作成する際は、セキュアクライアントが現在のアカウントから権限を自動的に継承するため、アカウントに上記の権限があることを確認してください。

セキュアクライアントを作成するには、以下の手順を実行します。

  1. Citrix Cloud™ にサインインし、[IDとアクセス管理] > [APIアクセス] の順に移動します。
  2. セキュアクライアントの名前を入力し、[クライアントの作成] をクリックします。

リモートサーバーに認証するには、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つのセッションが起動され、その後終了されます。

スクリプト実行の例

スクリプトのトラブルシューティングチェックリスト

スクリプトは、情報(たとえば、エラーやアクション)を Windows イベントログに書き込みます。この情報は、スクリプトの実行時に発生する問題のトラブルシューティングに役立ちます。以下のトラブルシューティングチェックリストを念頭に置くと役立つ場合があります。

  • リモートサーバーとの通信の失敗。考えられる対処法:
    • サーバーへの接続を確認する
    • 使用している API キーが有効であることを確認する
  • マシンの作成の失敗。考えられる対処法:
    • スクリプトを実行しているユーザーアカウントに、ドメインでユーザーアカウントを作成するための十分な権限があることを確認する
    • API キーを作成したユーザーに、MCS を使用してマシンをプロビジョニングするための十分な権限があることを確認する
    • マシンカタログの有効性を確認する(つまり、そのイメージがまだ存在し、良好な状態であること)
  • マシンカタログまたはデリバリーグループへのマシンの追加の失敗。考えられる対処法:
    • API キーを作成したユーザーに、マシンカタログおよびデリバリーグループへのマシンの追加と削除を行うための十分な権限があることを確認する
マシンの動的プロビジョニング