AWS サーバ構築（ファイルサーバ）その３ DFS 名前空間

<font color="HotPink">
<b>2020/06/14</b>
2019/11/20 から FSx はマルチAZに対応しました。もう自前で冗長化する必要はなくなりました。また、EC2 で DFS サーバーを建てる必要がなくなったので費用も安くなります。
（もう半年早ければ、この苦労はなかったのに。。。）
[Amazon FSx for Windows File Server が、複数のアベイラビリティーゾーンにまたがるファイルシステムをサポート開始](https://aws.amazon.com/jp/about-aws/whats-new/2019/11/amazon-fsx-for-windows-file-server-now-supports-file-systems-that-span-multiple-availability-zones/)
</font>
<font color="HotPink">
<b>2019/11/24</b>
DFS 名前空間でサーバーファイルにアクセスした場合、AD によってプライマリーとセカンダリーに自動で振り分けられ特に排他制御は行われません。そのため、同時に編集すると、デグレードが発生する場合があります。 
この問題が解決できなかったため、現在名前空間による公開は使用していません。単純にサーバー名でアクセスするようにしています(解決方法があればコメントください…)。
</font>

[前回](https://qiita.com/urushibata/items/a04acc2db35d6e0c4635)の続きで FSx レプリケーション後のフェールオーバーについてです。

## DFS でフェールオーバー

レプリケートした FSx をフェールオーバーさせるには Windows Server の DFS 名前空間を利用します。AWS のサービスでは今の所自動でフェールオーバーさせる方法がありません。
CloudWatch や Route53 でそのうち対応してくれるのを期待します。

### 名前空間の作成と共有と公開

#### 名前空間の作成

* 名前空間サーバー用に EC2 (Windows Server) を作成します。冗長構成にする場合、2台作成します。
* Active Directory に参加します。
* DFS 管理ツールを起動し、名前空間を右クリック > 新しい名前空間(N)...

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/778bd283-45ed-3eda-64fd-84cdf7ec085f.png)

* サーバーを選択します。作業中のサーバーのコンピューター名をセットします。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/117f612a-4a8c-4b48-d68e-c44918462997.png)

* 名前空間名を入力します。説明文にあるように、名前空間公開後はファイルサーバーには「\\domain名\入力した名前\」でアクセスします。
Public と入力したら、 \\example.local\Public\ になります。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/0ef47f91-7059-bab2-f1ff-fdd00b4543c0.png)

* ドメインベースの名前空間(D) を選択し、「Windows Server 2008 モードを有効にする(E)」にチェックを付けます。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/cc94d642-3c57-8269-d16a-b11d7472571d.png)

* 確認画面が出るので、作成(E) をクリックします。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/add54c28-c02a-9da9-d60e-cfab2add5ada.png)

* 作成完了です。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/51521e27-3865-db7a-13bc-7c6ade6ed44e.png)

#### 名前空間管理サーバーの冗長化

* 引き続き DFS 管理ツールで、先程作成した名前空間を右クリック > 名前空間サーバーを追加(N)...

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/0169a142-65da-1a7f-fe91-aeee85787c5a.png)

* もう一台の Windows Server を選択します。

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/bb465e40-7f5e-1ed4-6d05-b33c70f5be8b.png)

* OK 押すとサーバーが追加されます。

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/a5b641d9-03bc-270f-2a10-9151f686f9d5.png)

#### 名前空間の公開

* 公開したいレプリケーションを選択 > レプリケーションフォルダータブ > 名前空間の共有と公開…

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/fc9848f8-4b11-8e04-49da-ec86e2aa173b.png)

* 「レプリケーションフォルダーを名前空間で共有および公開する(D)」を選択 > 次へ(N)

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/4f98df8c-f9ee-fa7e-98f7-83713de0b616.png)

* 次へ(N)

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/7da6e986-343f-a262-4fd4-3228585e1b3e.png)

* 「参照(R)」から作成した名前空間を選択します。「新規フォルダー名(D):」には任意の名前を入力します。

![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/dce1a521-885f-fb93-12c6-c6b8031bb3e7.png)

* 確認画面で「共有(S)」をクリックします。

![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/3f22b180-7e49-9ba5-56b8-2d83e31de15c.png)

* 作成完了

![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/11a75c8f-26b0-0c41-2618-4ba2206554f1.png)

* アクセスしてみます。このパスにアクセスすると、1台がエラーになっても名前空間サーバーがフェールオーバーして、セカンダリーの FSx に向けてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/c764a7c0-1f0d-ed84-6dae-7ea95d83b960.png)


### トラブルシューティング

1. サーバーの追加でエラーになる
  1. 名前解決できない  
DFS でコンピューター名を名前解決する時、RPC プロトコルを使用します。セキュリティーグループ、ネットワーク ACL でポート135を許可しているか確認してください。その他開放しないといけないポートがあるので確認してください[^1]。セキュリティーグループだけでなく、ネットワークACLでブロックしている場合もあります。
  1. 追加サーバーに DFS 機能が追加されていない  
追加するサーバーにも DFS 機能をインストールします。
1. 信頼関係のある別ドメインからアクセスできない
  1. DFS 名前空間サーバーを Windows Server 2012 で構築した場合、名前解決が上手く行かない場合があります。TargetPathがコンピューター名でできてしまうと、別ドメインから接続できません。Windows Server 2016 以上で構築すれば、TargetPath が FQDN になるので別ドメインからでも接続できます。

[^1]: インバウンドでTCP/UDP 445 (SMB)、TCP 135 (RPC)、TCP/UDP 1024-65535 (Ephemeral ports for RPC) を許可する。[Getting Started with Amazon FSx: Step8][b]

[b]:[https://docs.aws.amazon.com/ja_jp/fsx/latest/WindowsGuide/getting-started.html#security_group_setup]