VMware Cloud on AWSでFSx for NetApp ONTAPを外部ストレージとして利用する際にハマりがちな箇所

# はじめに
<!-- 発端や概要を記載 -->
9月に「VMware Cloud on AWSでFSx for NetApp ONTAP が NFS データストアとして利用できるようになった！」という記事を投稿させて頂きました。
普段よりも多くのアクセスを頂いたので、今回はもう少し接続の部分について深掘りしたいと思います！

https://qiita.com/mtoyoda/items/a044d4f93d7af9aa2bda


# 目次
<!-- タイトルとアンカー名を編集 -->
1. [FSx for ONTAPをNFSデータストアとして利用するまでの大まかな流れと手順](#fsx-for-ontapをnfsデータストアとして利用するまでの大まかな流れと手順)
1. [その１-Transit Gatewayアタッチメントの作成](#その１-transit-gatewayアタッチメントの作成)
1. [その２-VPCにルーティングを追加](#その２-vpcにルーティングを追加)
1. [接続に失敗するとどうなるか](#接続に失敗するとどうなるか)
1. [接続に成功した場合](#接続に成功した場合)
1. [接続の検証に失敗した時に確認するポイントのまとめ](#接続の検証に失敗した時に確認するポイントのまとめ)
1. [まとめ](#まとめ)


<!-- 各チャプター -->
# FSx for ONTAPをNFSデータストアとして利用するまでの大まかな流れと手順
前回のおさらいとなりますが、VMware Cloud on AWS (VMC) で FSx for ONTAP を NFS データストアとして利用するには、FSx for ONTAP のボリュームを SDDC から見える状態にしておく必要があります。
VMC コンソール、AWS マネジメントコンソール双方で作業を行う必要がある為、ざっくりとして流れをまとめると以下のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/2577c195-a3fc-b5bb-f2c4-1843c96de7e1.png)

FSx for ONTAP を NFS データストアとして利用する為の手順は、以下 4つのドキュメントでステップが記載されており、ガイドのいずれかをチェック頂ければ接続可能です。NetApp の Simulator（4つ目のリンク）が操作の流れがわかりやすいかもしれません。
1. [VMware Docs: 外部ストレージとしての Amazon FSx for NetApp ONTAP の構成](https://docs.vmware.com/jp/VMware-Cloud-on-AWS/services/com.vmware.vmc-aws-operations/GUID-D55294A3-7C40-4AD8-80AA-B33A25769CCA.html)
1. [AWS News Blog: AWS and VMware Announce VMware Cloud on AWS integration with Amazon FSx for NetApp ONTAP](https://aws.amazon.com/jp/blogs/aws/aws-and-vmware-announce-vmware-cloud-on-aws-integration-with-amazon-fsx-for-netapp-ontap/)
1. [VMware Hands-on Lab Demo VMware Cloud on AWS integration with Amazon FSx for NetApp ONTAP](https://via.vmw.com/tchzvmcno2842)
1. [AWS FSx for ONTAP with VMware Cloud Simulator](https://netapp-automation.github.io/FSx-VMC-Simulator/)

ただし、FSx for ONTAP を NFS データストアとして利用するには、VMware マネージドの AWS Transit Gateway である VMware Managed Transit Gateway (VTGW) 経由での接続となる為、これまで AWS のネイティブサービスを利用されていなかった方、とりわけ Transit Gateway を取り扱った事がない方は戸惑う箇所があるかもしれません。
これまでに「FSx for ONTAP と上手く接続できないんだけど・・・」とお問合せを頂いた際に、上記の図（大まかな流れ）で赤字にした２箇所で設定が間違っていた為、備忘録も兼ねて注意点を記載したいと思います。

# その１-Transit Gatewayアタッチメントの作成

RAM でリソース（Transit Gateway）の受け入れ処理を行なった後、Transit Gateway アタッチメントを作成します。

Transit Gateway アタッチメントは、[VPC] - [Transit Gateway] - [Transit Gateway アタッチメント]から[Transit Gateway アタッチメントを作成]ボタンから作成ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/a3ddca2b-a6a3-7d04-1ce6-a9e51c99bbdf.png)

**ハマりどころ 1-1**: アタッチメント作成時は FSx for ONTAP が稼働している VPC を指定しましょう。
ここを理解せずに、何気なく一番上に表示される VPC を指定すると、最後の NFS データストアの接続の際の接続試験で失敗します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/5e03d569-cf4b-afc0-44aa-971a47c6f74d.png)

**ハマりどころ 1-2**: サブネット ID は FSx for ONTAP が接続しているサブネットを指定しましょう。AZ 毎に複数のサブネットを作成している場合は注意が必要です。
私は FSx for ONTAP をプライベートサブネット上に作成していたにも関わらず、このサブネットの指定をデフォルトのままにしてしまい、パブリックの方が指定されていた為、最後の NFS データストアの接続の際の接続試験で上手く接続できずにトラブルシューティングをして修正をしました。汗

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/4e586b51-1e30-85cf-e5f9-ad59c51aebd8.png)

尚、FSx がどのサブネットに接続しているか忘れてしまった方は、FSx の管理ページから確認可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/9e4ddf3e-8d4d-03de-76f8-85588df2e59a.png)

:::note info
Transit Gateway アタッチメントの設定は、[VPC] - [Transit Gateway] - [Transit Gateway アタッチメント] から確認可能です。サブネットの変更もここから可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/074d65d1-2847-e55b-94f3-aa721527bcf3.png)
:::

VPC の設計にもよりますが、FSx for ONTAP を稼働させる VPC はプライベートサブネットのみにするなどすれば混乱が減るかもしれませんね。

# その２-VPCにルーティングを追加

VPC にルーティングを追加のステップでは、FSx が稼働している VPC のルートテーブルを編集し、SDDC の管理サブネット（デフォルでは 10.2.0.0/16）に対する経路を先ほど作成した TGW アタッチメント経由でルーティングするよう追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/54a2abac-d6ef-516d-0dc7-e54eb63fe499.png)

ちなみに、SDDC の管理サブネットを忘れてしまった場合は、VMC コンソールのネットワークとセキュリティタブから確認が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/7a6abd64-a3ce-d051-fa51-8e67b6a7203f.png)

**ハマりどころ 2**: VPC 内で複数のルートテーブルを管理している場合は注意が必要です。
VPC を VPC ウィザードで作成する場合、メインルートテーブルに加えてサブネット毎にルートテーブルが作成され、それぞれのサブネットが個別のルートテーブルに関連づけれられます。（以下、VPC ウィザードで作成した VPC のルートテーブル）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/118af8b8-604c-6737-9f0e-65a920e9a10f.png)

一方で FSx for ONTAP を「クイック作成」で作成した場合、及び「スタンダード作成」で作成し、且つ VPC ルートテーブルを明示的に指定しなかった場合、**メインルートテーブル**に、ファイルシステムにアクセスするためのエンドポイントが作成されます。
（参考: [AWS ドキュメント - コンピューティングインスタンスのサブネットが、ファイルシステムに関連付けられたルートテーブルを使用しない](https://docs.aws.amazon.com/ja_jp/fsx/latest/ONTAPGuide/unable-to-access.html)）

↓デフォルトでは [VPC のデフォルトルートテーブル] が選択されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/e545fe24-fc46-fbc6-8cdc-c340e44f86ca.png)

:::note info
ファイルシステムを作成後は、ファイルシステムの詳細からどのルートテーブルを利用しているかが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/48a1bbfd-0b79-17f3-e074-005502e64169.png)
:::

私が接続できないと問い合わせをもらった時に見せてもらった環境では、FSx for ONTAP のエンドポイントはメインルートテーブルに作成されている一方で、サブネットがそれぞれメインテーブル以外のルートテーブルに関連付けられていた為、通信ができていませんでした。
その際は、サブネットの関連付けを解除する事で疎通できるようになりました。

↓のチェックボックスを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/787a0e1c-9382-0993-5913-634b470bdb07.png)


# 接続に失敗するとどうなるか

NFS データストアとして追加するには、VMC コンソールから該当の SDDC を選択し、[ストレージ] タブから [データストアの接続] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/886ff523-0e5f-1a5f-02e5-a0e296c12e29.png)

そして、FSx for ONTAP の NFS サーバのアドレスを入力し、[検証] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/6f0a0234-1583-936d-89c1-37edbf42f12b.png)

接続に失敗すると、**失敗** と表示され、先に進む事ができません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/31c28a40-6850-b437-d78d-76aee6d9129f.png)

# 接続に成功した場合

接続に成功すると、**成功** と表示され、[エクスポート]と[ストレージベンダー]はドロップダウンから選択できるようになり、[データストア名]を入力してあげる事で [データストアの接続] ボタンが押せるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/f3df82f3-74d0-e719-048d-ffe00019ce2a.png)


# 接続の検証に失敗した時に確認するポイントのまとめ
もし接続に失敗した際に確認するポイントをまとめてみました。
- Transit Gateway アタッチメントの設定を確認し、FSx for ONTAP の VPC 及びサブネットを指定している事を確認する。
    - [その１-Transit Gatewayアタッチメントの作成](#その１-transit-gatewayアタッチメントの作成)を参照
    - もしアタッチメントが別のサブネットに作成してしまった場合、アタッチメントの修正を行う。
    - もしアタッチメントが別の VPC に作成してしまった場合、アタッチメントの再作成を行う。
- FSx for ONTAP が利用しているルートテーブルを確認する。そしてエンドポイントが利用しているサブネットがそのルートテーブルを利用している事を確認する。
    - [その２-VPCにルーティングを追加](#その２-vpcにルーティングを追加)を参照
    - エンドポイントが利用しているサブネットが FSx for ONTAP が利用しているルートテーブルと別のものを使っている場合は、サブネットの関連付けを削除 or 修正する。



# まとめ
今回は VMC の SDDCから FSx for ONTAP を NFS データストアとして利用する際に、接続失敗となった場合の、ハマりがちな２箇所を解説してみました。
もし他にも今後ハマりどころを見つけたら別記事を作成したいと思います・・・！
上手く接続できない際の皆様のお助け記事となれば幸いです。