今回は、VMware Horizon Cloud Service next-gen を構築していきたいと思います。
先ずは、作成するコンポーネントとサイジングについて確認したいと思います。
設定を進めて行くと、何箇所かユニーク名を求められる場面が登場します。
全体像を把握していないと、何と名付けたらいいものか悩むかと思いますので、
命名時の参考にして頂けたらと思います。
概要解説が気になる方はこちら
「VMware Horizon Cloud Service next-gen とは?」
【コンポーネント】
・サイト:表示名。リージョンを指定するとわかりやすい。
・プライマリプロバイダ:サブスクリプションとサービスプリンシパルの情報を保持
・セカンダリプロバイダ:サブスクリプションとサービスプリンシパルの情報を保持し、プライマリプロバイダのセッション数を拡張する。
・プールグループ:ユーザーに接続許可を与える範囲。複数のプールに下記設定を適用する。
[サイトの接続 / 電源管理 / 公開アプリ選択 / 負荷分散方式 / タイムアウト処理]
・プール:[プールタイプ / イメージ選択 / VMサイズ / VM台数]を決定する。
【サイジング】
・サイト:複数のプライマリプロバイダを紐づけ可能
・プライマリプロバイダ(サブスクリプション):最大5000 Session ※20000 Sessionまで
ーサービスプリンシパル:最大1000 Session x5
・セカンダリプロバイダ(サブスクリプション):最大5000 Session x3
ーサービスプリンシパル:最大1000 Session x5
※プライマリプロバイダには、Horizon Edge Gateway & UAGを作成する必要がある
1組のHorizon Edge Gateway & UAGでは、最大20000 Sessionの制限がある
※セカンダリプロバイダはプライマリプロバイダに対して、最大3つまで紐づけ可能
※各プロバイダには、サブスクとサービスプリンシパル(最大5つ)を紐づける必要がある
※サイトを分ける事で、東西冗長構成が可能
【イメージ更新】
展開済みのVMを更新する方法ですが、マスターイメージを複製し、プール&プールグループを新規作成し、ユーザーにて接続先を変更してもらう必要があります。
※ディスクの差し替えなどは出来ません。
全体の流れ
Step1:Azure上での環境構築
Step2:サービスプリンシパルの作成
Step3:マネージドIDの作成
Step4:外部IDプロバイダの登録
Step5:Edge Gateway & UAGの作成
Step6:Active Directory ドメインの登録
Step7:マスターイメージの作成
Step8:プールの作成
Step9:プールグループの作成
Step10:プールグループへのユーザー割り当て
Step11:ホームサイトの設定 (オプション)
※外部IDプロバイダとして「Azure AD」を選択しています。
※SSOを利用しない構成
Step1:Azure上での環境構築
事前に下記環境を作成しておきます。
・リソースグループ
・仮想ネットワーク[管理用サブネット/デスクトップサブネット/DMZサブネット]
・NAT Gateway ※管理サブネットにアタッチ
・Active Directory ※事前にAD~AzureADで同期しておく必要があります。
予め、仮想ネットワークにサブネットを作成しておきます。
・DMZサブネット:[/27]以上。外部接続用UAGを展開
・管理サブネット:[/26]以上。Edge Gateway&UAGを展開。[NAT Gateway]が必要
下記アドレスは使用不可
[169.254.0.0/16 , 172.30.0.0/16 , 172.31.0.0/16 , 192.0.2.0/24]
・デスクトップ(テナント)サブネット:[/27]以上。内部接続用UAGを展開。VMを展開。
事前にActive Directoryにて、下記オブジェクトを作成しています。
・ドメインバインドアカウント(2名)[Domain Users]。パスワード無期限&変更不可
・ドメイン参加アカウント(2名)[Domain Users]。パスワード無期限&変更不可
・Horizonコンピュータオブジェクト用OUの作成
Step2:サービスプリンシパルの作成
Horizon Cloud から Azure リソースにアクセスするためには、下記情報が必要となります。
[サブスクリプションID / ディレクトリID / アプリケーションID / アプリケーションキー]
[Azure Active Directory]ー[アプリの登録]ー[新規登録]を選択
名前:表示名
サポートされているアカウント種類:この組織ディレクトリのみ
作成したアプリケーションを選択
※[アプリケーションID] [ディレクトリID] をコピー
説明:表示名
有効期限:[90/365/545/730/カスタム] ※カスタムでも最長2年まで
値:[アプリケーションキー] をコピー
[サブスクリプションID]をコピー
[サブスクリプション]ー[アクセス制御]ー[+追加]ー[ロールの割り当ての追加]を選択
※作成したアプリケーションにサブスクリプションへの権限を付与します。
[共同作成者]を選択
上記で作成したサービスプリンシパルを選択
Step3:マネージドIDの作成
Edge Gateway&UAGを作成する際に利用。管理サブネットに[ネットワーク共同作成者]と
サブスクリプションに対して[マネージドID オペレーター]の役割を与える必要があります。
[検索:managedid]ー[マネージドID]を選択
マネージドIDに対して、適用先と権限の付与が完了しました。
Step4:外部IDプロバイダの登録
Horizon Cloud Service にログイン。
[日本]を選択 ※変更不可
[次世代のHorizon制御プレーン]を選択
[Horizon Cloud Service]を選択
[IDとアクセス]を選択
IDプロバイダ:[Azure AD / Workspace ONE Access クラウド / オンプレミスの Workspace ONE Access]
テナントサブドメイン:ユーザーが接続時に利用する識別名 ※変更不可
[承諾]を選択 ※Azure AD グローバル管理者権限が必要
接続完了!
Step5:Edge Gateway & UAGの作成
Horizon Edge名:表示名
サービスプリンシパル情報を入力
Horizonゲートウェイアプライアンス専用にする:Edge Gateway&UAGとデスクトップVMでサブスクリプションをわけたい場合。
5000セッション以上、必要な場合はセカンダリプロバイダを作成します。
マスターイメージ&VDIを展開するサブネットを指定します。後から変更が可能。
サイト:表示名。リージョンを指定するとわかりやすい。
Horizon AgentからHorizon Cloud 制御プレーンへの通信が[Private Link]経由となる。
高可用性を有効にする:VMSS[Standard_D2s_v3](固定)x4台で作成される。無効は1台
クラスタ送信タイプ:[NAT Gateway / UDR ] ※UDRの場合、NVAが必要。
ユーザーが割り当てた管理対象ID:※Step3で作成したマネージドIDを選択
仮想ネットワーク:※Step1で作成した仮想ネットワークを選択
管理サブネット:※Step1で作成したサブネットを選択
サービスCIDR:※AKS内部ネットワークで利用
ポッドCIDR:※AKS内部ネットワークで利用
AKSクラスタDNSプリフィックス:※APIサーバー用DNS名
EdgeサービスのFQDN:※Horizon Agent がEdge Gateway接続時に利用。DNS登録必須
SSOを使用:※後から変更可能
※Edge Gateway 作成完了まで、最大20分かかります。
アクセスタイプ:※下記から選択
ーインターネット経由の外部アクセス
ー企業のネットワーク経由の内部アクセス
ー内部および外部アクセス
パブリックIPアドレス:※上記で外部を含めた場合、自動で有効となる
FQDN:※ユーザーがVDI接続時にアクセスするURLになる
証明書タイプ:[PEM / PFX]
証明書:※上記FQDN用の署名済み証明書と秘密鍵をアップロード
仮想マシンモデル:F8s_v2 推奨
[A4_v2/D8s_v4/D16s_v4/D32s_v4/D48s_v4/F8s_v2/F16s_v2/F32s_v2/F48s_v2]
UAG仮想マシン:[2~10] ※UAG台数
仮想ネットワーク:※Horizon用仮想ネットワークを指定
仮想マシンサブネット:※Step1で作成したデスクトップ(テナント)サブネットを選択
管理サブネット:※Step1で作成したサブネットを選択
DMZサブネット:※Step1で作成したサブネットを選択
送信プロキシを使用:UAGからHorizonCloud向けの通信に対してプロキシを利用する場合
※UAG 作成完了まで、最大20分かかります。
完了すると、下記リソースグループが作成される。
※PrivateLink経由を選択した場合に[プライベートエンドポイント]が作成される。
※接続先は、VMwareサブスクリプション内のPrivateLink
プライベートエンドポイント
※接続先は、作成したKubernetesサービス
[Microsoft.ContainerService/managedClusters][649~-edge][management]
UAG作成時に指定したFQDNですが、外部からの名前解決時には、LBのPublicIPを返答し
内部からの名前解決時には、LB InternalのIPを返答するようにDNSを設定する必要がある。
※UAG:PhononOS Premium SSD LRS 20GB
Step6:Active Directory ドメインの登録
名前:表示名
DNSドメイン名:※VDIが参加するドメインを指定
デフォルトOU:※コンピューターアカウント用OU
Step1で作成したアカウントを入力
Step1で作成したアカウントを入力
登録が確認できます。
Step7:マスターイメージの作成
イメージ名:表示名
マーカー:※イメージを更新した際、イメージ名は同じままなので判別するためのタグ
Microsoft Azure Marketplace:新規イメージを作成する場合
Microsoft Azure Compute Gallery:既存イメージをCompute Galleryで管理している場合
Microsoft Azure カスタム仮想マシン:事前に一般化したイメージがある場合
サイト:※展開先を選択
Horizon Edge:※展開先を選択
プロバイダ:※展開先を選択
オペレーティングシステム:
[Server2012R2以降、Win10_20H2以降(Single/Multi)、Win11_21H2以降(Single/Multi)]
※FSlogixはインストール済みだが、M365インストール済みOSは無い
世代タイプ:[V1 / V2]
仮想マシンモデルタイプ:[GPUなし / GPUを使用]
仮想マシンモデル:GPUなしの場合[DS2_v2] / GPUを使用の場合[NV12s_v3]で作成される
パブリックIPアドレスを有効にする:イメージ用VMにRDP接続する手段が無い場合は有効
仮想ネットワーク:イメージ用VMを展開する仮想ネットワークを選択
ネットワークの選択:イメージ用VMを展開するサブネットを選択
ユーザー名:ローカル管理者名
パスワード:ローカル管理者パスワード
ステータス[公開の準備完了]
リソースグループとイメージ用VMが作成されている。
※このタイミングで日本語化や必要なアプリケーションをインストールします。
イメージのセットアップが完了したら、ステータスを[公開]に変更します。
必要に応じて選択
選択できるサブネットは1つのみ
※初回は、約40分程かかります。
Compute Gallery が作成され、イメージバージョンに変換されています。
Step8:プールの作成
プール名:表示名
プールタイプ:
・専用 – 単一セッション=Windows 10/11 Single-Session
・フローティング – 単一セッション=Windows 10/11 Single-Session
・マルチセッション:Windows 10/11 Multi-Session / Windows Server
サイト:※展開先を選択
Horizon Edge:※展開先を選択
プロバイダ:※展開先を選択
世代タイプ:作成したマスターイメージと同じ世代を選択
マーカー:※展開したいイメージバージョンを選択
モデル:※全シリーズが利用できるわけではありません。
ディスクタイプ:
[Premium SSD(LRS/ZRS) / Standard SSD(LRS/ZRS) / Standard HDD(LRS)]
ディスクサイズ:127~4095 GB
マシンID:※登録済みのドメイン情報を選択
コンピュータの組織単位:OUを指定
仮想マシンのプロビジョニング:[オンデマンド / 一度にすべて]
※オンデマンド=接続数に応じてVDIを作成/削除を行う。Local Diskも削除される。
(オンデマンド)スペア仮想マシンの最小数:※最低限確保するスペア台数
(オンデマンド)スペア仮想マシンの最大数:※確保できた場合、この台数を維持する。
仮想マシンの最大数:※プール内での作成可能台数
仮想マシン1台あたりのセッション数:※マルチセッションのみ。変更不可
仮想マシン名のプリフィックス:※連番が付く。例:hostname000
デスクトップ管理者のユーザー名:ローカル管理者アカウント
デスクトップ管理者のパスワード:
送信プロキシを使用:HorizonCloud向けの通信に対してプロキシを利用する場合
※VM用には、別途プロキシ設定が必要
VDIを展開するサブネットを選択 ※Edge Gateway作成時に選択したNWが表示される
※FSLogixでいいと思う。
新規追加する場合
Step9:プールグループの作成
※後から変更可能
【単一セッションの場合】
プールグループに含める、プールを選択
デフォルトのプロトコル:Blast Extremeのみ ※PCoIPは廃止
優先クライアントのタイプ:[Horizon Client / ブラウザ]
範囲:※サイトが1つしか無い場合は不要
ー任意のサイト=どのサイトでも接続を許可
ー1つのサイトに制限=最も近いサイトにのみ接続を許可
サイト接続のアフィニティ:※サイトが1つしか無い場合は不要
ー最も近いサイト=ユーザーから最も近いサイトに接続
ーホームサイト=ユーザーが所属するホームサイトに優先接続
ホームサイト制限:ユーザーが所属するホームサイトのみ接続を許可
SSOを使用:
未使用の仮想マシン=[0~100%] 電源ONかつ未接続VMの割合(%)を指定
パワーオフ保護時間:[0~60分] ※起動後、すぐに停止しないための保護時間
電源管理スケジュール:時間&曜日を指定して、[仮想マシンの最小数]を設定可能
切断されたセッションからログアウト:
[ログアウトしない / ただちにログアウトする / ログオフまでの時間(1~99999分) ]
セッションの最大有効期間:[1~99999分] ※指定時間になると切断される
アイドルセッションのタイムアウト:[1~99999分] ※指定時間になると切断される
【マルチセッションの場合】
プールグループに含める、プールを選択
[公開アプリケーション][公開デスクトップとアプリケーション]選択時
※ストア アプリケーションは選択できません。
デフォルトのプロトコル:Blast Extremeのみ ※PCoIPは廃止
優先クライアントのタイプ:[Horizon Client / ブラウザ]
範囲:※サイトが1つしか無い場合は不要
ー任意のサイト=どのサイトでも接続を許可
ー1つのサイトに制限=最も近いサイトにのみ接続を許可
サイト接続のアフィニティ:※サイトが1つしか無い場合は不要
ー最も近いサイト=ユーザーから最も近いサイトに接続
ーホームサイト=ユーザーが所属するホームサイトに優先接続
ホームサイト制限:ユーザーが所属するホームサイトのみ接続を許可
SSOを使用:
電源管理タイプ:[占有率ベース / 占有率ベース以外]
占有率ベース=起動済みVMでのセッション数の割合
ーパフォーマンスの最適化 [起動:50%以上 / 停止:23%以下]
ーバランシング済み [起動:66%以上 / 停止:31%以下]
ーコストの最適化 [起動:80%以上 / 停止:38%以下]
仮想マシンの最小数:[0~100%] ※起動しておく仮想マシンの最小割合(%)
占有率ベース以外=作成されたVM数に対して未接続VM数の割合
ー未使用の仮想マシン=[0~100%] 電源ONかつ未接続なVMの割合(%)を指定
パワーオフ保護時間:[0~60分] ※起動後、すぐに停止しないための保護時間
電源管理スケジュール:時間&曜日を指定して、[仮想マシンの最小数]を設定可能
連続するセッション割り当て間の時間:[0~300秒] ※指定時間内は、割り当て対象外となる
CPU使用率:[0~100%] ※閾値に達すると、割り当て対象外となる
メモリ使用率:[0~100%] ※閾値に達すると、割り当て対象外となる
ディスクキュー長:[0~2147483647] ※読み取り/書き込み要求の数
ディスクの読み取り遅延:[0~2147483647ミリ秒] ※読み取り平均時間
ディスクの書き込み遅延:[0~2147483647ミリ秒] ※書き込み平均時間
ホストのロードインデックス:[0~100%] ※上記5つの項目を総合的に評価した値
切断されたセッションからログアウト:
[ログアウトしない / ただちにログアウトする / ログオフまでの時間(1~99999分) ]
セッションの最大有効期間:[1~99999分] ※指定時間になると切断される
アイドルセッションのタイムアウト:[1~99999分] ※指定時間になると切断される
Step10:プールグループへのユーザー割り当て
[資格を付与]を選択
割り当て対象となるプールタイプを選択
AzureADに登録されたユーザーアカウントが表示されます。
Step11:ホームサイトの設定
ホームサイトとは、ユーザー/グループアカウントに対して、自身が所属する[サイト]を登録する設定となります。ホームサイトを設定する事で、接続できるサイトをホームサイトに限定したり、ホームサイトに対して優先的に接続させたりする事ができます。
※サイトが1つしか無い場合は不要です。
お疲れ様でした!!
これにて、Horizon Cloud の構築が完了しました。
次回は作成した”デスクトップ”と”アプリケーション”に接続してみたいと思います。
「VMware Horizon Cloud Service next-gen に接続してみる!」