DNSエイリアス設定をしているAmazon FSx for Windows File Serverのリストア手順

Amazon FSx for Windows File ServerでDNSエイリアスを利用している環境において、リストアしたファイルシステムに切り替えるケースを想定し、リストア&切り替え手順をまとめました。
2023.01.23

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

はじめに

ネクストモードの南です。

Amazon FSx for Windows File ServerのDNSエイリアス機能については、移行元のファイルシステムのDNS名を引き継いて利用するというケースや、DNS名の管理のわかりやすさといった面から、利用しているケースが多いと思います。

また、ファイルシステムにDNSエイリアス名でアクセスする運用にしておけば、リストアしたファイルシステムに切り替える必要が生じた場合に、同じDNSエイリアス名を使ってアクセスすることが可能となります。
(例えばファイルシステムを配置しているAZで障害が発生し、AZ復旧前にファイルシステムの利用を再開する必要が生じた場合など)

実際に対応を求められるケースは稀でしょうが、万が一を想定すると基本的にはDNSエイリアスを使用して運用することを推奨します。

今回はDNSエイリアスを利用しているファイルシステムについて、リストア先に切り替えて運用するケースを想定して手順を整理しましたので、本エントリで紹介をさせていただきます。

手順

環境

以下の環境で手順を進めていきます。
Active DirectoryはAWS Managed Microsoft ADで構成しています。

  • Amazon FSx for Windows File Server
    • DNS名:amznfsx6r1jkdvl.corp.minami.local
    • DNSエイリアス:fsx.corp.minami.local
  • Active Directory
    • AWS Managed Microsoft AD
    • ドメイン:corp.minami.local

ファイルシステムにはあらかじめDNSエイリアスを設定しています。 DNSエイリアスの設定手順については以下の公式ドキュメントやブログをご参考ください。

クライアントからDNSエイリアス名でアクセスできることを確認します。

ネットワークドライブにもDNSエイリアス名でアタッチしておきます。

ファイルシステムのリストア

ここから手順を進めていきます。
まずは、ファイルシステムのリストアから進めていきます。

AWSマネージメントコンソールからAmazon FSxの画面を開き、対象のファイルシステムをクリックします。

[バックアップ]のタブからリストア対象のバックアップにチェックを入れ、[アクション]のプルダウンから[バックアップを復元]をクリックします。

リストアするファイルシステムの設定入力画面が開かれるため、元のファイルシステムと同様の設定を入力します。
また、[アクセス]の項目で元のファイルシステムと同様のDNSエイリアス名が入力されていることを確認します。


設定内容を確認し[ファイルシステムを作成]をクリックすると、バックアップを元に新しいファイルシステムが作成され始めます。
ステータスが[利用可能]になったらリストアは完了です。

この時点でリストアしたファイルシステムにアクセスすることは可能です。
しかし、DNSエイリアス名に対応するサービスプリンシパル名 (SPN) の修正と、DNS CNAMEレコードの修正が未実施のため、DNSエイリアス名でアクセスすると元のファイルシステムに接続してしまいます。
(わかりやすくするためにリストアしたファイルシステムにはnew_filesystem.txtというファイルを追加してます。)

  • DNS名でアクセス

  • DNSエイリアス名(fsx.corp.minami.local)でアクセス
    この時点では元のファイルシステムに接続される

Kerberosのサービスプリンシパル名(SPN)の修正

続いて、Kerberosのサービスプリンシパル名(SPN)の修正を進めていきます。
手順については基本的に公式ドキュメントの内容に沿って実施していきます。

まず、Active Directoryに参加しているWindowsにログオンし、管理者としてPowerShellを開きます。
また、作業を進めるにあたってPowerShell ActiveDirectoryモジュールが必要となるため、以下コマンドでインストールしていきます。

Install-WindowsFeature RSAT-AD-PowerShell

元のファイルシステムに設定した際にすでにインストール済みであれば、本手順は不要になります。
インストール済みであれば、以下のようにNoChangeNeededと表示されます。

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

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             NoChangeNeeded {}

既存のDNSエイリアスのSPNを検索して削除していきます。
次のコマンドを実行しSPNを検索すると、元のファイルシステムで設定した既存のSPNが見つかります。
$ALIASにはファイルシステムのDNSエイリアス名を指定します。

PS C:\Windows\system32> $ALIAS = "fsx.corp.minami.local"
PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS)
ドメイン DC=corp,DC=minami,DC=local を確認しています
CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local
        MSServerClusterMgmtAPI/fsx.corp.minami.local
        MSServerClusterMgmtAPI/FSX
        MSClusterVirtualServer/fsx.corp.minami.local
        MSClusterVirtualServer/FSX
        HOST/fsx.corp.minami.local
        HOST/FSX
        MSServerClusterMgmtAPI/amznfsx6r1jkdvl.corp.minami.local
        MSServerClusterMgmtAPI/amznfsx6r1jkdvl
        MSClusterVirtualServer/amznfsx6r1jkdvl.corp.minami.local
        MSClusterVirtualServer/amznfsx6r1jkdvl
        HOST/amznfsx6r1jkdvl.corp.minami.local
        HOST/amznfsx6r1jkdvl

既存の SPN が見つかりました
PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS.Split(".")[0])
ドメイン DC=corp,DC=minami,DC=local を確認しています
CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local
        MSServerClusterMgmtAPI/fsx.corp.minami.local
        MSServerClusterMgmtAPI/FSX
        MSClusterVirtualServer/fsx.corp.minami.local
        MSClusterVirtualServer/FSX
        HOST/fsx.corp.minami.local
        HOST/FSX
        MSServerClusterMgmtAPI/amznfsx6r1jkdvl.corp.minami.local
        MSServerClusterMgmtAPI/amznfsx6r1jkdvl
        MSClusterVirtualServer/amznfsx6r1jkdvl.corp.minami.local
        MSClusterVirtualServer/amznfsx6r1jkdvl
        HOST/amznfsx6r1jkdvl.corp.minami.local
        HOST/amznfsx6r1jkdvl

既存の SPN が見つかりました

次のコマンドを実行し、既存のSPNを削除します。
$AliasにはファイルシステムのDNSエイリアス名(FQDN)を、$FileSystemDnsNameには元のファイルシステムのDNS名を指定します。

公式ドキュメントの方ではHOSTのSPNの削除のみとなっていますが、MSServerClusterMgmtAPIMSClusterVirtualServerのSPNが残っていると新しいSPNが上手く反映されませんでした。そのため削除コマンドを一部変更しています。

PS C:\Windows\system32> $Alias = "fsx.corp.minami.local"
PS C:\Windows\system32> $FileSystemDnsName = "amznfsx6r1jkdvl.corp.minami.local"
PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName ${FileSystemDnsName} | Where Type -eq 'A')[0].Name.Split(".")[0]
PS C:\Windows\system32> $FSxAdComputer = (Get-AdComputer -Identity ${FileSystemHost})
PS C:\Windows\system32> Set-AdComputer -Identity $FSxAdComputer -remove @{"msDS-AdditionalDnsHostname"="$Alias"}
PS C:\Windows\system32> SetSPN /D ("HOST/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name
CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local の ServicePrincipalNames  の登録を解除しています
        HOST/fsx
更新されたオブジェクト
PS C:\Windows\system32> SetSPN /D ("MSServerClusterMgmtAPI/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name
CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local の ServicePrincipalNames  の登録を解除しています
        MSServerClusterMgmtAPI/fsx
更新されたオブジェクト
PS C:\Windows\system32> SetSPN /D ("MSClusterVirtualServer/" + ${Alias}.Split(".")[0]) ${FSxAdComputer}.Name
CN=amznfsx6r1jkdvl,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local の ServicePrincipalNames  の登録を解除しています
        MSClusterVirtualServer/fsx
更新されたオブジェクト

再度次のコマンドを実行し、既存のSPNが検出されなくなったことを確認します。

PS C:\Windows\system32> SetSPN /Q ("HOST/" + $ALIAS)
ドメイン DC=corp,DC=minami,DC=local を確認しています

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

そのような SPN は見つかりませんでした。

次のコマンドを実行し、リストアしたファイルシステムのSPNを設定していきます。
$AliasにはファイルシステムのDNSエイリアス名(FQDN)を、$FSxDnsNameにはリストアしたファイルシステムのDNS名を指定します。

PS C:\Windows\system32> $FSxDnsName = "amznfsxqkp5p6cy.corp.minami.local"
PS C:\Windows\system32> $Alias = "fsx.corp.minami.local"
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> Set-AdComputer -Identity $FSxAdComputer -Add @{"msDS-AdditionalDnsHostname"="$Alias"}

次のコマンドを実行し、新しいSPNが設定されていることを確認します。
$FileSystemDnsNameにはリストアしたファイルシステムのDNS名を指定します。
HOSTのSPNに、ファイルシステムのDNSエイリアス名(ホスト名とFQDNの2つ)が反映されていればOKです。

PS C:\Windows\system32> $FileSystemDnsName = "amznfsxqkp5p6cy.corp.minami.local"
PS C:\Windows\system32> $FileSystemHost = (Resolve-DnsName ${FileSystemDnsName} | 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=amznfsxqkp5p6cy,OU=FSx,OU=AWS Reserved,DC=corp,DC=minami,DC=local:
        MSServerClusterMgmtAPI/fsx.corp.minami.local
        MSServerClusterMgmtAPI/FSX
        MSClusterVirtualServer/fsx.corp.minami.local
        MSClusterVirtualServer/FSX
        HOST/fsx.corp.minami.local
        HOST/FSX
        MSServerClusterMgmtAPI/amznfsxqkp5p6cy.corp.minami.local
        MSServerClusterMgmtAPI/amznfsxqkp5p6cy
        MSClusterVirtualServer/amznfsxqkp5p6cy.corp.minami.local
        MSClusterVirtualServer/amznfsxqkp5p6cy
        HOST/amznfsxqkp5p6cy.corp.minami.local
        HOST/amznfsxqkp5p6cy

DNS CNAMEレコードの修正

DNS CNAMEレコードの修正を進めていきます。
こちらも公式ドキュメントの内容に沿って実施していきます。

前の作業と同様に、Active Directoryに参加しているWindowsにログオンし、管理者としてPowerShellを開きます。
また、作業を進めるにあたってPowerShell DNS サーバーモジュールが必要となるため、以下コマンドでインストールしていきます。

Install-WindowsFeature RSAT-DNS-Server

こちらも元のファイルシステムに設定した際にすでにインストール済みであれば、本手順は不要になります。
インストール済みであれば、以下のようにNoChangeNeededと表示されます。

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

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             NoChangeNeeded {}

次のコマンドを実行し、既存のDNS CNAMEレコードをリストアしたファイルシステムに移行します。
$AliasにはファイルシステムのDNSエイリアス名(FQDN)を、$FileSystemDnsNameにはリストアしたファイルシステムのDNS名を指定します。

PS C:\Windows\system32> $Alias = "fsx.corp.minami.local"
PS C:\Windows\system32> $FSxDnsName = "amznfsxqkp5p6cy.corp.minami.local"
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> Add-DnsServerResourceRecordCName -Name $AliasHost -ComputerName $DnsServerComputerName -HostNameAlias $FSxDnsName -ZoneName $ZoneName

DNSマネージャーからAWS Managed Microsoft ADのIPアドレスに接続し、[前方参照ゾーン]から対象のドメイン名を選択すると、修正したCNAMEレコードが反映されていることが確認できます。


接続確認

以上で手順は完了となります。
これで同じDNSエイリアス名でリストアしたファイルシステムに接続することが可能となりました。

実際にクライアントからアクセスをしてみます。
移行作業前後でログオンしたままだとキャッシュが残っていて、リストアしたファイルシステムに上手くアクセスできない場合があります。
その場合は一度クライアントからログオフし、DNSキャッシュのクリア(ipconfig /flushdns)をしてから再度アクセスをしてみてください。

アタッチしていたネットワークドライブも、クライアント側で再設定することなくアクセスできています。

また、環境によってはVolume Shadow Copy Service、データ重複排除、ストレージクォータ機能を利用しているケースがあります。
これらの設定はファイルシステム側で持っていますので、基本的にリストアしたファイルシステムへそのまま引き継がれます。

おわりに

DNSエイリアスを使用している環境を想定したAmazon FSx for Windows File Serverのリストア手順、としてまとめさせていただきました。
実際に手順を実施して切り替えまでテストできると確実ですが、そこまで対応するのはなかなか難しいケースもあると思います。 机上ベースで手順を確認したり、やることを洗い出しておくだけでも普段から安心してご利用いただくことができると思いますので、本エントリをご活用いただけると幸いです。

参考

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

ネクストモードについて

ネクストモード株式会社は東日本電信電話株式会社とクラスメソッド株式会社で設立したクラウドカンパニーです。「クラウドであたらしい働き方を」というメッセージを掲げ、さまざまなクラウド技術や製品を組み合わせて企業の働き方の当たり前を変えていくことを目指しています。クラウドやSaaSのご利用に関してお困りごとがあれば、ネクストモードまでぜひお問い合わせください。