IBM Cloud+Windows Remote Desktop Servicesでお手軽にPrivate DaaSみたいなものを作る（セッションホスト編）


# はじめに
AWSのWorkspacesやAzureのAVDなどDaaS(Desktop as a Services)が一般的になってきた気がします。一方で、これらは皆の集合住宅となっており、１ユーザー、１仮想マシンごとに管理が必要だったり、仮想化レイヤーが不明瞭なため、一部のソフトウェアが動作しない、あるいはHWリソースの具体的な割り当てが仮想化レイヤーで曖昧となってしまうために、サポートされないといったもの、など、細かくみていくとFitしないケースもあります。

そこで、個人や自社の運用チームで比較的自由にデスクトップを変更できるPrivateなDaaSの作り方を整理してみました。

# PrivateなDaaSについて
HWあるいはサーバーのレイヤーから、自社の区画として他と分離して構築するDaaS環境のイメージです。
リソースや搭載ソフトウェアが自社の区画に分離できることで一定のセキュリティを担保しつつ、DaaSを利用できるメリットがあります。一般的には、HWや仮想サーバーのレイヤーで分離するため、その分だけお金がかかるものですが、工夫次第では、小規模なものから作ることはできます。

プライベートDaaSを作る上での選択肢としては、主に以下の選択肢がありそうです。
<dl>
  <dt>サーバー1台からの小規模でより安い運用費にする</dt>
  <dd>ベアメタルサーバーや仮想サーバー上にWindows Remote Desktop Servicesで作る</dd>
  <dt>コストは少し高くなっても、管理しやすい状態にしたい</dt>
  <dd>VMware Horizonなどを使って作る。オンプレだと自社構築・運用という選択肢が一般的だと思いますが、クラウドだと独立環境として作りつつも、構築・運用作業をマネージド業者に任せるパターンもあるようです。(*1)</dd>
</dl>

(*1) 　[Dizzion on IBM Cloud](https://www.ibm.com/jp-ja/cloud/dizzion)

ちなみに、ある程度の規模になると、VMware HorizonなどでPrivate DaaSを作った方が便利かもしれません。
[事例](https://www.ibm.com/blogs/solutions/jp-ja/cloudvision22-cio/) 


# 小規模な作り方

Windows Remote Desktop Services(RDS)を使えば、ささっと作ることができます。
なおWindows RDSには、２つの方式があります。

<dl>
  <dt>Windows RDS Session Host（セッションホスト型）</dt>
  <dd>１つのWindows Serverに複数のユーザーが別セッションでログインするもの</dd>
  <dt>Windows RDS Virtualizaiton Host（仮想化ホスト型）</dt>
  <dd>Windows ServerにHyper-Vの仮想化レイヤーを挟み、Windows 10などの独立した仮想マシンを構築、それぞれにユーザーがログインできるようにするもの。この環境のメリットは、物理的なCPUから選択できるので、Amazon WorkspacesのようなパブリックDaaSと違って、CPU速度やリソース配分（GPUをサーバーに付けたり、CPUやメモリを単体でスケールアップしたり）を細かく制御できる点ですね。Workspacesを使ってみたとき、自分が期待したよりCPUパワーが弱くてハマりました。サーバーの物理レイヤーから制御できると、そういうハマり方をしないのがいいですね</dd>
</dl>

上記のいずれについても、Windowsの2016から、Active Directoryが必須となりましたので、上記サーバーに同居させるか、別の仮想サーバーとしてActive Directoryを構築する必要があることに注意してください。


- 補足）Windows RDS構築上のサーバーの種類について
セッションホスト型は、仮想サーバーでも物理サーバーでも構築することができます。
ただ、仮想化ホスト型はHyper-Vが仮想化の多段構成を認めていないため、物理サーバー上でのみ構築が可能な構成となります。IBM Cloudには仮想サーバーも、物理サーバーも柔軟なリソースの組み合わせがありますので、どちらも構築することができます。

仮想化ホスト型の作り方はこちらです。
https://qiita.com/ymaruoka/items/453e68a9b48e8b628080

# お手軽DaaS環境構築）Windows RDSセッションホストの作り方

簡単なのは、仮想サーバー1台の上にWindows RDSセッションホストを構築する方法ですね。これだと、仮想サーバー1台からなのでお安くできますし、利用ユーザー（セッションユーザー）が環境を汚しても管理者が横から環境をお掃除することもでき、お試しには良さそうです。

さて作り方です。

準備物
- 仮想サーバー1台　（Windows Server OSを指定すること）
- Windows RDS CAL（Windows Serverに２名以上の同時ログインを実現するためには、Windows RDS CALというライセンスをマイクロソフト社から購入し、サーバーにセットする必要があります。購入は自力で購入する必要があります。が、もし困ったら、IBM Cloudのサポートへの問い合わせ（チケット|CASE)でIBM Cloudから調達可能か問い合わせしてみると何か助言をもらえるかもしれません）

## WindowsのActive Directoryを構築する
一般情報がたくさんあると思いますので割愛します。
IBM Cloud固有での注意点は[こちら](https://qiita.com/ymaruoka/items/61c4487d8c899167fe6a)をご参照ください。

## Windows RDSセッションホストを構築する

1.対象の仮想サーバーをADのドメインに所属させる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/be179339-9cf9-78aa-168b-62f343356338.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/b910e785-cf23-b958-8997-572191794bf2.png)

所属した後の再起動のポップアップダイアログが出た時、以下のFirewallの設定になっているか確認すること。この時、Firewallの設定がPublicにチェックが入っていない場合、再起動後、IBM CloudのVPNからのリモートデスクトップ接続が遮断され、KVMからしか接続できなくなります。
（セキュリティを考えると正しい振る舞いとは思うのですが、知らないと罠に感じる仕様ですね...)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/53e74b4c-ecd7-f08c-f761-d9bcc673ff89.png)


2.対象の仮想サーバーにログインする
注意としては、RDSのインストールは、Domain Adminユーザーで実施する必要があります。
RDSの導入自体はGUIですので、画面通りの選択で導入が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/d73ca12b-056a-59fa-42b8-4b7cd0814697.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/4cbbf943-edef-8e28-880d-6806eb00e162.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/72bf1b69-0009-42c1-08a8-6ba4804aed8c.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/dd0a4d4d-cfa5-5294-e4ca-8dda41e8bfeb.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/3df726cf-9912-baec-c65b-75e74c1db030.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/29668afd-b1f2-cf1f-75f5-d4b3558b0e12.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/e5d0b9b1-40ef-17b9-a076-5505061a94c8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/7c2da24a-1247-f9ec-c310-5b90ba7927c1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/e557125e-9cd9-c9ec-81c8-50801db5d28b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/8a056835-1654-caf5-030c-f28b5d720184.png)

3. RDSのCollectionを作る。
CollectionはRDSの環境を定義するものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/93e98a25-c198-10d6-96ef-235322cb8c06.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/c24b4222-1c64-2952-7e64-567189bc5898.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/7c4e47a3-6794-76fd-ed85-c17986221320.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/12ff363b-83a9-196d-03ad-14b3c099921f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/705df4f2-8a8c-1793-75ad-65c7811e45db.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/a490e1cb-5c61-7808-3d41-79999ece5c9e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/6d5d8279-ec3c-f19b-94f4-b0a558e2a233.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/64fe7557-3617-3f47-eef3-af1bb89ba838.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3168/e5325468-1a51-39ae-7714-168dbacb7efa.png)

これで構築完了です。

3. RDS CALの導入
RDSの管理画面にありライセンスマネージャーを導入します。

二種類のライセンスが存在しますので、必要なものを調達します。
https://docs.microsoft.com/ja-jp/windows-server/remote/remote-desktop-services/rds-client-access-license

この後、RDS CALの導入をすれば、指定した数のユーザーが同時ログインして、それぞれの操作を行うことができます。

# 実績
今回、実際に作ってみて、簡単に動作検証を行いました。

- RDSセッションホスト100人までの同時操作ができることを確認済みですので、興味があったら作ってみてください。

- RDS仮想化ホストも20人程度の同時ログインができる構成までは確認済みです。ベアメタルはハイスペックCPUやGPU搭載などで複数台にスケールアウトするケースもあると考え、2台のベアメタルに分散する構成も構築検証済みです。ちゃんと動作しました！

# 後半（仮想化ホスト編）へ
今回は仮想化ホストの構築手順は記載しませんでしたが、リクエストがあれば考えます。
↓↓↓↓↓
某所からリクエストがあり、作りました。仮想化ホスト型の作り方はこちらです。
https://qiita.com/ymaruoka/items/453e68a9b48e8b628080