VMware Cloud on AWSの外部データストア（FSx for Netapp ONTAP）についてまとめてみる。（ネットワーク編）

### はじめに
2022年9月末のVMware Cloud on AWSのアップデート（SDDC Version 1.20）で、待望のFSx for Netapp ONTAPを利用した外部データストアが利用できるようになりました。そのほかにもアップデートは盛りだくさんですが・・・。
i3.metalベースのSDDCはディスク枯渇でホストを増やすパターンになるので、非常にうれしいですね。
環境準備もろもろに少し時間がかかってしましましたが、早速構成を組んでみました。
なかなか、個人で動かすのは難しいですが、興味があるかたぜひご覧くださいませ。

参考リンクはこちら。（VMwareさんの英語版のリリースノートです）
https://docs.vmware.com/en/VMware-Cloud-on-AWS/services/rn/vmware-cloud-on-aws-release-notes/index.html#whats-new-september-20-2022--sddc-version-120

### ご注意
読み返すとDeepDiveです（汗）
Webinerでしゃべると評価が低いパターンですね・・。（レベル設定が難しい・・・）

::: note info
2022/10/26 構成を見直しました。
:::

### 構成案はこちら
ちゃんと図を書かないと分かりづらいのでまとめてみました。絵心は相変わらずないです・・。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/2952f60b-2957-1309-66c6-269506e63db7.png)

- SDDCは右上です。内部の構成図は非公開なので想定で書いています。
- ラボなのでNDAはありません。ご安心ください（汗）
- 何パターンか作ってみましたが、これが一番運用も含めて楽そうです。（TGWのPeeringが多いのでお金はかかるけど）
- FSxはユニファイドで使う前提です。別のSVMでCIFSを上げるとそのままルーティングも行けるような構成にしてます。
- SD-WAN（VeloCloud）とつながっていますが社内の設備とは一切関係ありません（これもラボです。そのうちこっち側も記事書きます・・・）
- FSxデフォルトだとNFSのACLがザルなので制御は考えましょう。（今回は割愛。後で追加します。）

### ネットワークの考え方
アドレス周りは理解しやすいように細かく書いておきます。

AWS VPC(Linked)：172.27.0.0/21
　Native：172.27.0.0-172.27.6.0/24（/24想定ですが好きにcidrでOK）
　ENI用：172.27.7.0/26
　TGW用：適当に採番（AZ毎にSubnetを作る）

VMC用：172.27.8.0/21
　SDDC用Management：172.27.8.0/23
　SDDC用Workload Segment：172.27.10.0-172.27.15.0（Workloadのアドレスは何でも利用可能ですが、
　オンプレミスにBGPで流れていくので注意。

FSx用：172.27.16.0/21
　TGW用：適当に採番（AZ毎にSubnetを作る）
　FSX用：適当に採番（AZ毎にSubnetを作る）
　FSX(Virtual IP)：198.19.255.0/24（特殊アドレス）
　普通のPrivate IPも設定可能です。ただしVPCのアドレスレンジ外の設定が必要です。
　目立つアドレス（198.19.255.0/24）なので説明のしやすさも考慮してこちらで設定。

ルーティングの構成はこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/adf111be-7ce0-601f-0105-634ef22d8947.png)
絵はもう少し綺麗にまとめようかと思います・・・。（すいません絵が小さいです）

Transit Gatewayは、VMware Managed（VTGW）とユーザ側のTGWをPeeringして接続を行います。
Peeringの起点はSDDC側から、Cloud Service Consoleから設定します。

SDDC - VTGW - TGW - VPC(SDDC Linked)
SDDC - VTGW - TGW - VPC(FSX)
SDDC Linkedは接続しなくてもデータストアは利用可能です。
接続したのは、Netapp社のCloudサービスと連携するためですね（別用途）



SDDC LinkedのVPCのルーティングはこちら（一部マスキングしてます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/09acccbd-62fc-56a2-bd24-ddd0531632f1.png)

FSXのVPCのルーティングはこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/75b7f12f-ee45-0e70-33ed-42cc7656764a.png)

Transit Gatewayは、アタッチメント毎にルートテーブルを分けました。
あとから変更することを考慮してます。（この辺は好みとか思想がでますね・・・）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/e7baf69a-e05a-549b-4a63-60891555533a.png)

Transit Gatewayのルートテーブルはこんな感じで。
SDDC Linkd VPC Attachment
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/05356fec-0066-974b-c973-090527ee0d73.png)

FSX VPC Attachment
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/c9728850-2c11-e3de-ef83-fcf58615eef6.png)

VTGW Attachment
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/e9900f58-8eae-4a4d-e2f9-c7968a3a0f2d.png)

### SDDC Linkd VPCにFSx for Netappはおけるか？
結論からいうと動きました。
ただしTGWは必須になるので意味がないのと、実運用で組んでしまうと事故るリスクがあります。
一応書いておくと、以下で実現は可能。
・FSX用のセグメントをルートテーブルを独立させて動かす。
・SDDC向けのManagement/WorkloadをTGWに向ける
・VTGW側でFSXのVIPとNative Subnetの設定を入れる。
これで動かすこと自体は可能です。運用入ってから設定ミスるとデータストアが切れるので注意が必要。

### Native AWS側は以上です。FSXのセットアップは過去の記事をご参照くださいませ。
### ここからはVTGWの設定です。
1. SDDC Groupを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/e64ecf7b-9659-bdfe-ee9e-e5ea03c194bf.png)

2. External TGWでリンクを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/393430c3-a47e-839f-e18b-d2bedb365918.png)
VTGW側のルーティングはここで記入します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/8b2732df-597c-2572-5a12-c1d80c86e3d6.png)
VTGWのルーティングの確認も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/dc51da05-bea8-0513-cf16-04a48208bc17.png)

3．Firewallの設定も忘れないように。。
ちなみに、VTGWが接続されると、SDDC Groupという形で表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/9f057ac0-2738-a51f-ab89-b307c5e92fbf.png)
”Connected”をクリックすると、ルートも確認可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/1a406ac9-d959-9c0a-639c-762841733015.png)
ESX->外部は設定がデフォルトで入っていますが、FSXのSVMなどからPINGなどを設定する場合はFWの設定が必要です。（VeeamのPolicyが見えてますね・・・）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/3e1c372b-18be-4352-bc59-f43b49c85e9b.png)

4. FSXのSVM（Storage Virtual Machine）からPINGをうってみる。
SVMのアドレスはこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/5ead6c2f-3e7c-a8a2-31c1-4bfba94d47df.png)

まずはvsadminのパスワードを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/ad6e7537-36ff-af58-7774-79fa8b1895a6.png)

Volumeは300GBで作成済みです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/6e0f9110-29db-ec44-2517-1e6005ede2b5.png)

SSHでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/714fc47e-38f2-1c82-dd98-d5926716069b.png)

OntapのCLIなので癖があります。Command Referenceなどを参照ください。
PINGだけならこんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/ef04cee3-e2d2-4f45-cd0d-9dc895dc8123.png)

### 本日はここまで
次回はSDDCにNFSのデータストアをマウントして実際に使ってみます。
少しだけ予告編です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/63a55233-c57d-f466-dd48-9a9b398d792c.png)

## 2022/10/26 Updateしました。
変更点は以下となります。

Before
SDDC - VTGW - TGW - VPC(FSX)
SDDCのVTGWとNativeのTGWをリンクした状態でRoutingしていました。

After
SDDC - VTGW - VPC(FSX)
SDDCのVTGWからFSXのVPCに接続しました。

構成図Updateしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/2a837bb7-2ae9-4c6c-c4a9-1c5dc921f09f.png)

Routingの構成もUpdateしました。
オンプレミスや他のVPCからFSxを利用することを考慮して、TGWは残しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/61301a88-d600-2205-678b-8009f6c08b53.png)

ちなみに、同じルートをTGWとVPCのPeeringには入れれなかったので、
Longest Matchを組み合わせて、NFSを稼働させながら切り換えましたが、問題がなかったことを追記しておきます・・・。