.NET Coreを使ってみる(Ubuntu)

.NET CoreをUbuntuに導入して、現在Windows上で動作させているバッチ処理をLinuxに移すことを考えています。

.NET Coreのインストール方法はMicrosoftの.NET Core(https://www.microsoft.com/net/core#ubuntu)のページがわかりやすいです。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-dev-1.0.0-preview2-003131

以上でインストールは完了。
Ubuntu 14.xの場合には設定するリポジトリが次のように変わるので注意して下さい。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'

Hellowordプロジェクトを作成して動作を確認します。
以下のコマンドで適当にディレクトリを作成して、新規プロジェクトを作成します。新規プロジェクトにはHellowordと表示する処理が既に記述されています。

mkdir hwapp
cd hwapp
dotnet new

後は以下のコマンドを実行すると、コンソールに”HelloWorld”と表示されます。

dotnet restore
dotnet run

続いて開発環境を用意します。Windows上で開発するか、Linux上で開発するか迷うところですが、デプロイ時のトラブルを避けるためにもターゲット環境上で開発することにします。
まずはVisual Studio Codeをインストールしていきます。Download Visual Studio Code(https://code.visualstudio.com/Download)からUbuntu用にdebファイルをダウンロードして以下のコマンドを実行します。

sudo dpkg -I code_1.5.3-1474533365_amd64.deb

Visual Studio Codeをインストールしたら、Visual Studio Codeを起動してメニューの「表示→拡張機能」から「C# for Visual Studio Code」をインストールしておきます。最後に「有効」ボタンを押すまで機能しないので、押し忘れないように。

You have already activated rake 11.2.2, but your Gemfile requires rake 10.5.0.と表示される

Octpressでrake generateを実行したところ、下記のように「You have already activated rake 11.2.2, but your Gemfile requires rake 10.5.0.」とエラーが表示された。

$ rake generate
rake aborted!
Gem::LoadError: You have already activated rake 11.2.2, but your Gemfile requires rake 10.5.0. Prepending `bundle exec` to your command may solve this.
/home/knarita/octopress/Rakefile:2:in `<top (required)>'
/var/lib/gems/2.1.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)

Gemfileで要求しているrakeのバージョンよりも、インストールしているrakeのバージョンの方が新しくなってしまったのが原因のようだ。本来ならOctpressを新しいバージョンのrakeで動作するように修正すべきところなのだろうけど、rakeのコマンドラインオプションで使用するrakeのバージョンを指定することでも対応できる。下記のようにrakeのパラメータに「_10.5.0_」と必要なバージョンを指示すればよい。

$ rake _10.5.0_ generate

Traffic ServerでWORDPRESSを高速化する

最近地道にトラフィックが増えてきているので、そろそろWORDPRESSの高速化を検討してみる。世間ではNginxがはやっているようだが、ここは敢えてApatch Traffic Serverを使ってみたい。

OSはUbuntu 15.xを使用しています。

Apatche Traffic Serverの初期設定

apt-getを使用して標準のレポジトリからApatche Traffic Serverをインストールします。

sudo apt-get install trafficserver

Reverse-Proxeの接続先を設定します。

sudo nano remap.config
map http://www.example.net:8080/ http://127.0.0.1/
reverse_map http://127.0.0.1/ http://www.example.net:8080/

サービスを起動してポート8080に接続してみますが、動作しません。

sudo service trafficserver start

ログファイルを閲覧すると、以下のようなエラーが発生しています。

less /var/log/trafficserver/traffic.out
traffic_server: using root directory '/usr'
FATAL: Trafficserver has not been designed to serve pages while
        running as root. There are known race conditions that
        will allow any local user to read any file on the system.
        If you still desire to serve pages as root then
        add -DBIG_SECURITY_HOLE to the CFLAGS env variable
        and then rebuild the server.
        It is strongly suggested that you instead modify the
        proxy.config.admin.user_id directive in your
        records.config file to list a non-root user.

どうやら標準のままだとrootアカウントで起動されてしまうけど、trafficserverはrootアカウントで起動できないため権限周りでエラーとなっているようです。/etc/trafficserver/records.configを編集してproxy.config.admin.user_idの設定を追加するように指示されているので追加します。trafficserverアカウントは既に作られているので、追加の必要は無いようです。

sudo nano /etc/trafficserver/records.config
CONFIG proxy.config.admin.user_id STRING trafficserver

サービスを再起動してポート8080に接続してみると、今度は動作しました。

sudo service trafficserver restart

サービスの移行

正常に動作するようなので、本番に移行します。
Windows Azureを使っているので、エンドポイントの設定を変更してポート80への接続を、ポート8080に振り分けるようにします。こういう所、手抜きできるからクラウド好きです。

remap.configの設定を本番用に変更します。先ほどはポート8080の記載がありましたが、それを削除します。

sudo nano remap.config
map http://www.example.net/ http://127.0.0.1/
reverse_map http://127.0.0.1/ http://www.example.net/

このままだとWORDPRESSが正常に動作しないので、以下の設定をwp-config.phpに追記します。

sudo nano /var/www/wordpress/wp-config.php
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];

apatch2とtrafficserverを再起動します。

sudo nano /var/www/wordpress/wp-config.php
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];

ポート80に繋いでみますが、正常に動作しているようです。

ローカルストレージへのキャッシュ移動

標準設定のままだと/var/cash/trafficserverにキャッシュデータを保存します。クラウド上の仮想サーバーは一般的にIO速度が遅いため、あまり速度が改善しません。その代わりにWindows Azureでは高速な揮発性のローカルストレージも提供されています。揮発性のストレージは仮想サーバをシャットダウンすると失われますが、キャッシュデータなら失われても問題ないのでこちらに移動します。
ローカルストレージはスワップファイル用に/mntにマウントされているので、/mnt/trafficserverと言うフォルダを新たに用意してこちらを使います。

新たにフォルダを作成します
sudo mkdir /mnt/trafficserver
sudo chown trafficserver /mnt/trafficserver

storage.configを編集して、キャッシュの保存先を変更します。
sudo nano /etc/trafficserver/storage.config
/mnt/trafficserver 256M

trafficserverを再起動します。
sudo service trafficserver restart

どの程度改善されたか

トップページの表示完了まで5,000msかかっていたのが700ms程度に。トップページのhtmlだけなら2,500ms程度かかっていたのが、20ms程度にまで高速化されました。応答速度が125倍改善して、体感的にも7倍くらい速くなっている計算。

参考

WordPressをリバースプロクシ対応にする3つのポイント
How to Set Up Apache Traffic Server as a Reverse-Proxy on Ubuntu 14.04

apt-get upgradeでThe following packages have been kept backが発生

Ubuntu 15.10にてapt-get upgradeを実行したときに、下記のようにThe following packages have been kept backと表示されアップデートが行われない。既存パッケージの依存関係に問題が発生しているのが原因。

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  linux-cloud-tools-virtual linux-generic linux-headers-generic
  linux-headers-virtual linux-image-extra-virtual linux-image-generic
  linux-image-virtual linux-virtual sosreport
0 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.

sudo apt-get dist-upgradeを実行すると依存関係の問題が処理される。longer required: linux-cloud-tools-4.2.0-16と表示されているようにlinux-cloud-toolsのupdateを自動で処理できなかったのが原因。このままYとするとlinux-cloud-tools-4.2.0-22に更新されてインストールが完了する。

$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... The following packages were automatically installed and are no longer required:
  linux-cloud-tools-4.2.0-16 linux-cloud-tools-4.2.0-16-generic
Use 'apt-get autoremove' to remove them.
Done
The following NEW packages will be installed:
  libpython3.5-minimal libpython3.5-stdlib linux-cloud-tools-4.2.0-22
  linux-cloud-tools-4.2.0-22-generic linux-headers-4.2.0-22
  linux-headers-4.2.0-22-generic linux-image-4.2.0-22-generic
  linux-image-extra-4.2.0-22-generic python3.5 python3.5-minimal
The following packages will be upgraded:
  linux-cloud-tools-virtual linux-generic linux-headers-generic
  linux-headers-virtual linux-image-extra-virtual linux-image-generic
  linux-image-virtual linux-virtual sosreport
9 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 70.8 MB of archives.
After this operation, 311 MB of additional disk space will be used.
Do you want to continue? [Y/n]

linux-cloud-toolsは不用意に更新すると接続が出来なくなったり、クラウドの管理コンソールから制御できなくなる恐れがあるので、自動更新を取り止めたのかと思われる。

Recovery ServiceでCentOSを復元するとSSHが繋がらない

Microsoft AzureのRecovery ServiceでCentOSを復元したところ、SSHに接続できなくなった。復元後最初の起動時には問題なく接続できるのだが、仮想マシンを再起動するとSSHの認証を通らなくなる。

かなり肝を冷やしたのだが、原因はSSHでパスワード認証を使用していた事と、復元後の再起動時にsshの設定ファイルが初期化されてしまう事にある。sshの設定ファイル(ssh_config)が初期化されることでパスワード認証によるログインが無効にされていた。

次のようなコマンドでRSA公開鍵を使った認証を行うように設定変更して対応した。

$ ssh_keygen -t rsa
$ cd .ssh
$ cat id_rsa.pub >> authorized_keys

もちろんssh_configを編集してPasswordAuthenticationのコメントを解除し、再びパスワードによる認証を有効にしても良いが、今回は再発の可能性を考慮してRSA公開鍵を使った認証に設定を変更した。

Azure上のUbuntuにスワップファイルを追加する

gem updateの途中でメモリ不足によりアップデートを継続出来ないことがあったので、Ubuntuにメモリスワップを追加することにしました。Azure上のUbuntuは標準設定では仮想メモリを使用しないので、仮想マシンのサイズをA0とか小さいサイズにしていると、容易にメモリ不足に陥ります。

Microsoft Azure上のLinux仮想マシンにスワップファイルを追加するには/etc/waagent.confの次の3ヶ所をを変更します。

# Format if unformatted. If 'n', resource disk will not be mounted.
ResourceDisk.Format=y

# Create and use swapfile on resource disk.
ResourceDisk.EnableSwap=y

# Size of the swapfile.
ResourceDisk.SwapSizeMB=2048

この後、仮想マシンを再起動すると自動的にスワップ領域が確保されて、仮想メモリが有効になります。sudo swapon -sとかfreeコマンドを叩いて確認してください。

ちなみにResourceDisk.SwapSizeMBは無暗に大きくしないでください。私は最初に4096MBを指定して再起動したのですが、エラーになってしまいスワップ領域が作られませんでした。

waagentは/var/log/waagent.logにログを出力しているので見てみます。

$ more /var/log/waagent.log
2015/06/06 07:39:11 Finished processing ExtensionsConfig.xml
2015/06/06 07:55:02 ERROR:CalledProcessError. Error Code is 1
2015/06/06 07:55:02 ERROR:CalledProcessError. Command string was mkswap /mnt/swapfile
2015/06/06 07:55:02 ERROR:CalledProcessError. Command result was mkswap: error: /mnt/swapfile is mounted; will not make swapspace
2015/06/06 07:55:03 ERROR:CalledProcessError. Error Code is 255
2015/06/06 07:55:03 ERROR:CalledProcessError. Command string was swapon /mnt/swapfile
2015/06/06 07:55:03 ERROR:CalledProcessError. Command result was swapon: /mnt/swapfile: swapon failed: Device or resource busy
2015/06/06 07:55:03 ERROR:ActivateResourceDisk: Failed to activate swap at /mnt/swapfile

mkswapコマンドで失敗したために、以降の処理が全部エラーになってしまったようです。仕方ないので手動でマウント操作を実施します。

sudo chmod 600 /mnt/swapfile
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile

以上の操作で仮想メモリが有効になります。試しに次のコマンドを実行してみます。

$swapon -s
Filename Type Size Used Priority
/mnt/swapfile file 3000208 2068 -1

$ free
total used free shared buffers cached
Mem: 684468 552240 132228 3412 24496 243612
-/+ buffers/cache: 284132 400336
Swap: 3000208 2004 2998204

・・・が、swapsizeが約3GBほどになっています。もしかして・・・というわけで、ResourceDisk.SwapSizeMBを2048に変更して再起動すると、今度は正常にスワップファイルが作られました。

gem updateでrmagick-2.15.1のインストールに失敗する

Ubuntuのgem updateでrmagick-2.15.1のインストールに失敗した場合の対処法。

gem updateを実行すると次のようなエラーが表示される。

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
 --with-opt-dir
 --without-opt-dir
 --with-opt-include
 --without-opt-include=${opt-dir}/include
 --with-opt-lib
 --without-opt-lib=${opt-dir}/lib
 --with-make-prog
 --without-make-prog
 --srcdir=.
 --curdir
 --ruby=/usr/bin/ruby2.1

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.1.0/gems/rmagick-2.15.1 for inspection.
Results logged to /var/lib/gems/2.1.0/extensions/x86_64-linux/2.1.0/rmagick-2.15.1/gem_make.out
Gems updated: rmagick

指示されたとおりにgem_make.outを閲覧する。

/usr/bin/ruby2.1 extconf.rb
checking for gcc... yes
checking for Magick-config... no
checking for pkg-config... no
Can't install RMagick 2.15.1. Can't find Magick-config or pkg-config in /usr/loc
al/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
 --with-opt-dir
 --without-opt-dir
 --with-opt-include
 --without-opt-include=${opt-dir}/include
 --with-opt-lib
 --without-opt-lib=${opt-dir}/lib
 --with-make-prog
 --without-make-prog
 --srcdir=.
 --curdir
 --ruby=/usr/bin/ruby2.1

extconf failed, exit code 1

「Can’t install RMagick 2.15.1. Can’t find Magick-config or pkg-config」とあるので、rmagicをインストールすれば良いのかな・・・と思うけど、Ubuntuではパッケージの名前が全然違うので、libmagickwand-devをインストールする必要がある。

sudo apt-get install libmagickwand-dev
sudo gem update

これで正常にインストールが完了する。

Microsoft Azure上のUbuntuにHadoopをインストール

1.仮想ネットワーク(Azure Private Network)の構築

1.1.仮想ネットワークの新規作成

Sparkのノードをインターネットからアクセス可能な場所に設置するわけにもいきませんので、最初に仮想ネットワーク(Azure Private Network)を構築します。

新規→仮想ネットワーク→カスタム作成を選択して、適当に名前を設定します。
vpn1
“ポイントからサイト間VPNの構築”にチェックして次へ。
vpn2
ここは変更なし。vpn4
“ゲートウェイサブネットを追加”をクリックしてデフォルト設定のゲートウェイサブネットを追加して確定。vpn3

1.2.証明書の作成と登録

続いてルート証明書を作成します。Windowsには標準では証明書を作成する機能がないため、オープンソースのツールを使ったり、開発用のツールを使ったりして証明書を作成することになります。ここではVisual Studio 2013に付属する開発ツールを使用してルート証明書を作成します。まずは”C:¥Program Files¥Microsoft Visual Studio 12.0¥Common7¥Tools¥Shortcuts”にある”開発者コマンド プロンプト for VS2013″を開いてコマンドプロンプトを表示します。そして次のコマンドを実行して下さい。”SparkVirtualPrivateNetwork”の所は適当な名称に置換えて下さい。

makecert -sky exchange -r -n "CN=SparkVirtualPrivateNetwork" -pe -a sha256 -len 2048 -ss My "SparkVirtualPrivateNetwork.cer"

“SparkVirtualPrivateNetwork.cer”と言うファイルが出来上がります。これを証明書にアップロードします。
次にクライアント証明書を作成します。次のコマンドを実行します。
“ClientCertificateName”は適当な名称に置換えて下さい。

makecert -n "CN=ClientCertificateName" -pe -sky exchange -m 96 -ss My -in "SparkVirtualPrivateNetwork" -is my -a sha256

登録されている証明書を確認します。コマンドプロンプトから”certmgr.msc”を実行します。最初に”信頼されたルート証明機関”の”証明書”に先ほど作成したSparkVirtualPrivateNetworkが登録されているか、”個人”の”証明書”に”ClientCertificateName”が登録されているか確認します。
もしmakecertを実行した以外の環境から仮想ネットワークに接続する場合は、先ほど作成したSparkVirtualPrivateNetworkとClientCertificateNameを登録する必要があります。makecertを実行した環境で、それぞれの証明書の秘密鍵をエクスポートして、新たな環境にてインポートします。

1.3.VPNクライアントのインストール

仮想ネットワークのダッシュボードからクライアントVPNパッケージをダウンロードしてきてインストールします。インストールするとコントロールの”ネットワークと共有センター”に仮想ネットワークへの接続が追加されるので、接続を実行します。このとき使用する証明書を聞いてくるので、先ほど作成したClientCertificateNameを選択して下さい。

2.Apatch Hadoopのインストール

Apatch Sparkを動作させるには、その前にApatch Hadoopを動作させておく必要があります。
と言うわけでUbuntu 14.10の仮想マシンが起動している所から作業をスタートします。

2.1.スタンドアローンで動作する所まで…

hadoopの動作にはJavaが必要になります。OpenJDKでも問題なく動作するそうなので、標準のOpenJDKをインストールしていきます。

sudo apt update
sudo apt upgrade
sudo apt-get install -y default-jdk

最新版のhadoopをダウンロードしてきて展開します。

wget http://ftp.tsukuba.wide.ad.jp/software/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
tar xvfx hadoop-2.6.0.tar.gz

“/etc/profile”を編集して展開したhadoopへのパスを設定します。

...
export PATH=/<展開したディレクトリ>/hadoop-2.6.0/bin:$PATH
...

“hadoop-2.6.0/etc/hadoop/hadoop-env.sh”を編集してJAVA_HOMEのパスを設定します。

...
# set to the root of your Java installation
export JAVA_HOME=/usr/lib/jvm/default-java
...

この時点でスタンドアロンモードでhadoopが動作します。試しに”hadoop”とコマンドを打ってみて下さい。hadoopコマンドが起動するなら、先の設定へと進んでいきましょう。

2.2.疑似分散(Pseudo-Distributed)モードで動作する所まで…

今度は”ssh localhost”とコマンドを打って下さい。hadoopはノード間の接続にsshを使用します。もし”ssh localhost”で接続できないなら、sshがパスワードなどを入力しなくても繋がるように証明書を作成します。

ssh localhost
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

hadoop-2.6.0/etc/hadoop/core-site.xmlを編集します。
“hadoop.tmp.dir”で指定している”/var/opt/hadoop-2.6.0/cash”はhadoopが生成するファイルの保存先となるディレクトリです。デフォルトでは”/tmp”以下に保存されるために、OSを再起動すると全ての設定やHDFSに格納したデータが失われます。



...


        hadoop.tmp.dir
        /var/opt/hadoop-2.6.0/cash
        fs.defaultFS
        hdfs://localhost:9000


hadoop-2.6.0/etc/hadoop/hdfs-site.xmlを編集します。



...


        dfs.replication
        1


次のコマンドを実行して、HDFS(Hadoop Distributed File System)のnamenodeを初期設定します。

hdfs namenode -format

次のコマンドを実行して、hadoopのデーモンを起動します。

hadoop-2.6.0/sbin/start-dfs.sh

MapReduceで使用するユーザーディレクトリを作成します。

hadoop fs -mkdir /user
hadoop fs -mkdir /user/

最後にサンプルプログラムを実行して、hadoopが疑似分散(Pseudo-Distributed)モードで動作する事を確認します。

cd hadoop-2.6.0
hadoop fs -put etc/hadoop input
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
hadoop fs -cat output/*

2.3.YARN(Pseudo-Distributed)モードで動作する所まで…

“etc/hadoop/”フォルダにある”mapred-site.xml.template”を”mapred-site.xml”にコピーして編集します。

cd etc/hadoop/
cp mapred-site.xml.template
mapred-site.xml

mapreduce.framework.nameにはhadoop




          mapreduce.framework.name
          yarn


再び同じようにサンプルプログラムを実行するとyarn上で動作します。

cd hadoop-2.6.0
hadoop fs -put etc/hadoop input
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
hadoop fs -cat output/*

3.雑記

本当はSprkを動作するところまで行きたかったのだけど、思った以上に面倒で挫折。Sparkの機能であるSparkSQLを動作させるにはHiveのインストールが必要で、Hiveをちゃんと動作させるにはMySQLが必要で・・・。CDHやMapR、HDPの有用性を改めて思い知ったのでした。
というわけで、次はCDHをベースにして再スタートしようと思う。でもきっとこの経験は無駄にはならないと思うんだ。CDHを構成する過程で、Hadoopの知識は再び要求されるはずだしね。

Azure上のUbuntuにRemote Desktopで接続する

Microsoft Azure上にインストールしたUbuntuにRemote Desktopで接続する手順を記しておきます。
実は普通のパソコンにインストールしたUbuntuであれば、Remote Desktopで接続できるように設定を変更するのは難しくありません。以下のコマンドを実行するだけです。

sudo apt install ubuntu-desktop
sudo apt install xrdp

ところがMicrosoft Azure上ではこれだけではRemote Desktopで接続することができません。Remote Desktopから接続してログインしても白黒チェックの背景に、×のマウスカーソルが表示された状態・・・素のX-Serverに接続された状態のまま、グラフィカルシェルが起動しません。
これはMicrosoft Azure上の仮想マシンにはビデオアクセラレータボードが提供されていない事が原因です。Ubuntuの標準グラフィカルシェルのUnityは3Dアクセラレータボードが必須となるために、そのままでは上手く機能しないのです。Unityは3Dアクセラレータがない場合には、OpenGLをソフトウェアでエミュレーションして起動するのですが、2Dのアクセラレータすら提供されてませんので起動しません。ではgnomeならどうかというと、フォントのレンダリングエンジンがアクセラレータボードを必要としてしまうために、やはりそのままでは起動しないのです。
これを回避するにはMicrosoft Azure上のUbuntuにxfceやlubuntuといった軽量グラフィカルシェルをインストールする必要があります。ここではUbuntu用の軽量グラフィカルシェルのlubuntuを使って設定したいと思います。

sudo apt install lubuntu-desktop
sudo apt install xrdp

のようにして必要なパッケージをインストールした後、次のコマンドを実行して.xsessionを作成しlubuntuをグラフィカルシェルとして設定します。

echo lxsession -s Lubuntu -e LXDE > ~/.xsession

Microsoft Azureの管理ポータルから仮想マシンを選択して、エンドポイントにRemote Desktopを追加し、通信を許可します。
以上でRemote Desktopによる接続が可能な状態になります。Windows上でRemote Desktopを起動してURLを入力し接続してログインしてみてください。