[アップデート]Amazon FSx for Windows File ServerがDNSエイリアスを使用したファイルシステムへのアクセスをサポートするようになりました

2020.11.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィスの林です。

2020年11月9日(月)のアナウンスにて「Amazon FSx for Windows File ServerがDNSエイリアスを使用したファイルシステムへのアクセスをサポートするようになりました。」と発表がありました。公式ページはこちら

さっそく試してみました!

どこが変わった?

まずはAWSマネージメントコンソール上の見た目でどこが変わったのか見てみます。

Amazon FSx for Windows File Server作成時

「DNSエイリアス」の設定項目が増えています。

Amazon FSx for Windows File Server作成後のダッシュボード

こちらも「DNSエイリアス」の設定項目が増えています。

見て頂いてお分かりになるように「DNSエイリアス」はオプション設定の扱い且つデフォルトでは何も設定されていませんので、別に設定しなくてもAmazon FSx for Windows File Server自体は使うことは出来ます。
また、Amazon FSx for Windows File Serverの作成時/作成後、いずれのタイミングでもDNSエイリアスの設定を行うことができます。

で、何が嬉しいのか?

本アップデートの活用場所としてあげられるのは移行シーンです。
移行前の既存ストレージのDNS名と、同じDNS名を引き継ぐ(同じDNS名を設定する)ことが出来るため、例えば、サーバのアプリケーションでストレージの向き先を固定してしまっている場合などは、比較的効率的にストレージの移行が出来るようになります。文章だと少し伝わり辛いので図にまとめてみました。

いままで

システム移行のシーンを考えた時、例えばアプリケーションやツールにストレージの接続先の情報をDNS名として埋め込んでしまっている場合、今までは、Amazon FSx for Windows File Server独自且つ自動で作成されるDNS名への切り替えが必要でした。(CNAMEレコードを使えばやりようは考えられますが、、、)

これから

今回のアップデートで設定できるようになった「DNSエイリアス」を使用すると、アプリケーションやツールにストレージの接続先の情報をDNS名として埋め込んでしまっている場合や、ファイルシステムストレージをオンプレミスからAmazon FSxに移行するときなど既存のDNS名を引き続き使用してAmazon FSxにアクセスさせることができるようになります。

やってみた

それでは「DNSエイリアス」の設定をやっていきたいと思います。 本記事では、予め作成済みのAmazon FSx for Windows File Serverに対してこちらのチュートリアルに基づきながら「DNSエイリアス」の設定をしていきたいと思います!

Amazon FSxのダッシュボードから作成済みのファイルシステムを選択します。

「ネットワークとセキュリティ」から「DNSエイリアス」の「管理」を選択します。

エイリアスに指定するFQDN名を入力し「関連付け」を選択します。

「ステータス」が「作成」になり、作成が始まりました。

こちらのドキュメントによると、作成には最大2.5分掛かるそうです。少々待ちましょう。

エイリアスがファイルシステムに関連付けられる、または関連付けが解除されるまで、最大2.5分かかります。

「ステータス」が「利用可能」になったことを確認し「閉じる」を選択します。

「DNSエイリアス」にエイリアス名が設定されていることを確認します。

ちなみにこのタイミングでサーバからDNSエイリアスに対してファイルシステムをアタッチしようとしてもうまくいきません。設定が足りていないからです。引き続き以降の作業を続けます。

PS C:\Windows\system32> net use Z: \\test-alias-1.my-test-domain.com\share
システム エラー 53 が発生しました。

ネットワーク パスが見つかりません。

PS C:\Windows\system32>

Kerberosのサービスプリンシパル名(SPN)を構成する

※ここからの手順は、Amazon FSxファイルシステムが参加しているActiveDirectoryに参加しているWindowsインスタンスから作業を実施しています※
以降の作業でActiveDirectory関連の作業を行うため、管理者としてPowerShellを開き、PowerShell ActiveDirectoryモジュールをインストールします。

PS C:\Windows\system32> Install-WindowsFeature RSAT-AD-PowerShell

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {リモート サーバー管理ツール, Windows Powe...

PS C:\Windows\system32>

既存のSPNを見つけて削除します。(SPNは、一度に1つのActiveDirectoryコンピューターオブジェクトにのみにしか関連付けることができないため)
次のコマンドを使用して既存のSPNを検索し、ファイルシステムに関連付けたDNSエイリアスに置き換えます。(下記は既存のSPNが無かった場合の出力結果です。)
※チュートリアルの手順は移行を前提とした手順となっているため、既存ファイルシステムのSPNを検索して削除する手順となっています。

PS C:\Windows\system32> $ALIAS = "test-alias-1.my-test-domain.com"
PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS)
ドメイン DC=my-test-domain,DC=com を確認しています

そのような SPN は見つかりませんでした。
PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS.Split(".")[0])
ドメイン DC=my-test-domain,DC=com を確認しています

そのような SPN は見つかりませんでした。
PS C:\Windows\system32>

上記でSPNが検出された場合、既存のSPNを削除します。alias_fqdnは「DNSエイリアス」を指定し、file_system_DNS_nameに自動で割り当てられたデフォルトのDNS名を指定します。

$Alias = "alias_fqdn"
$FSxDnsName = "file_system_dns_name"
$FileSystemHost = (Resolve-DnsName ${FSxDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0]
$FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost})

SetSPN /D ("HOST/" + ${Alias}) ${FSxAdComputer}.Name
SetSPN /D ("HOST/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name

Amazon FSxファイルシステムのActiveDirectoryコンピューターオブジェクトにSPNを設定します。

PS C:\Windows\system32> $FSxDnsName = "amznfsxt2nfjd7m.my-test-domain.com"
PS C:\Windows\system32> $ALIAS = "test-alias-1.my-test-domain.com"
PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName $FSxDnsName | Where Type -eq 'A')[0].Name.Split(".")[0]
PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity $FileSystemHost)
PS C:\Windows\system32>
PS C:\Windows\system32> Set-AdComputer -Identity $FSxAdComputer -Add @{"msDS-AdditionalDnsHostname"="$Alias"}
PS C:\Windows\system32> SetSpn /S ("HOST/" + $Alias.Split('.')[0]) $FSxAdComputer.Name
ドメイン DC=my-test-domain,DC=com を確認しています

CN=amznfsxt2nfjd7m,OU=FSx,OU=AWS Reserved,DC=my-test-domain,DC=com の ServicePrincipalNames を登録しています
        HOST/test-alias-1
更新されたオブジェクト
PS C:\Windows\system32> SetSpn /S ("HOST/" + $Alias) $FSxAdComputer.Name
ドメイン DC=my-test-domain,DC=com を確認しています

CN=amznfsxt2nfjd7m,OU=FSx,OU=AWS Reserved,DC=my-test-domain,DC=com の ServicePrincipalNames を登録しています
        HOST/test-alias-1.my-test-domain.com
更新されたオブジェクト
PS C:\Windows\system32>

新しいSPNがDNSエイリアス用に構成されていることを確認します。

PS C:\Windows\system32> $FSxDnsName = "amznfsxt2nfjd7m.my-test-domain.com"
PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName ${FSxDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0]
PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost})
PS C:\Windows\system32> SetSpn /L $FSxAdComputer.Name
次の項目に登録されている CN=amznfsxt2nfjd7m,OU=FSx,OU=AWS Reserved,DC=my-test-domain,DC=com:
        MSServerClusterMgmtAPI/test-alias-1.my-test-domain.com
        MSServerClusterMgmtAPI/TEST-ALIAS-1
        MSClusterVirtualServer/test-alias-1.my-test-domain.com
        MSClusterVirtualServer/TEST-ALIAS-1
        HOST/test-alias-1.my-test-domain.com
        HOST/TEST-ALIAS-1
        MSServerClusterMgmtAPI/amznfsxt2nfjd7m.my-test-domain.com
        MSServerClusterMgmtAPI/amznfsxt2nfjd7m
        MSClusterVirtualServer/amznfsxt2nfjd7m.my-test-domain.com
        MSClusterVirtualServer/amznfsxt2nfjd7m
        HOST/amznfsxt2nfjd7m.my-test-domain.com
        HOST/amznfsxt2nfjd7m
PS C:\Windows\system32>

ファイルシステムのDNSCNAMEレコードを作成する

ファイルシステムのSPNを適切に設定した後、既存のファイルシステムに解決されていたDNSレコードを、Amazon FSxファイルシステムのデフォルトのDNSレコードに置き換えることで、Amazon FSxに切り替えることができます。
以降の作業でDNSCNAMEレコードを更新するため、PowerShellDNSサーバーモジュールをインストールします。

PS C:\Windows\system32> Install-WindowsFeature RSAT-DNS-Server

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {DNS サーバー ツール}

PS C:\Windows\system32>

既存のDNSCNAMEレコードをAmazon FSxファイルシステムのDNSレコードに切り替えます。

PS C:\Windows\system32> $ALIAS = "test-alias-1.my-test-domain.com"
PS C:\Windows\system32> $FSxDnsName = "amznfsxt2nfjd7m.my-test-domain.com"
PS C:\Windows\system32> $AliasHost=$Alias.Split('.')[0]
PS C:\Windows\system32> $ZoneName=((Get-WmiObject Win32_ComputerSystem).Domain)
PS C:\Windows\system32> $DnsServerComputerName = (Resolve-DnsName $ZoneName -Type NS | Where Type -eq 'A' | Select -ExpandProperty Name)[0]
PS C:\Windows\system32>
PS C:\Windows\system32> Add-DnsServerResourceRecordCName -Name $AliasHost -ComputerName $DnsServerComputerName -HostNameAlias $FSxDnsName -ZoneName $ZoneName
PS C:\Windows\system32>

上記でAmazonFSxファイルシステムで設定した「DNSエイリアス」のDNSCNAME値が追加されました。これを以ってDNSエイリアスを使用してファイルシステムにアクセスできます。 「DNSエイリアス」でファイルシステムをアタッチしてみます。

PS C:\Windows\system32> net use Z: \\test-alias-1.my-test-domain.com\share
コマンドは正常に終了しました。

PS C:\Windows\system32>

Zドライブでファイルシステムがマウントされていることが確認できました。

まとめ

多少手間と時間が掛かる作業ではあるものの、DNSエイリアスを使用したファイルシステムのアタッチができました。実際には移行の要件とのバランスと取りながら、ケースバイケースに応じた移行方法を検討・採用頂ければと思います。

以上、大阪オフィスの林がお送りしました!