はじめに
- 2023年6月末頃からAmazon FSx for NetApp ONTAP(以下、FSxN)のバージョン9.12.1が順次ロールアウトされ、2023年7月初旬には東京リージョンでも利用できるようになりました。
- ONTAP 9.12.1では、NASとして構成されたボリュームに対してS3プロトコルで接続するS3マルチプロトコルを使用し、異なるプロトコルで同じデータを扱うこと(データの二重性:Data Duality)が可能です。
- 個人的に可能性を感じる機能であり、ネットアップが想定する主なユースケースとしては、機械学習や分析のデータパイプラインなどです。
- しかし、S3のユースケースは他にもあります。
- 本記事では、ユースケースの一つである静的コンテンツホスティングをFSxN上のONTAP S3で実現し、Data Dualityによって提供できる価値が無いか考察します。
構成
構築手順
Virtual Private Cloud(VPC)の構築
- PublicとPrivateのサブネットを持つVPCを作成します。
- 手順については、以下の折りたたみを開いて確認ください。
VPCの作成手順
-
以下のように項目を選択・入力し、「VPCを作成」をクリック
- 作成するリソース:VPCなど
- 名前タグの自動生成
- 自動生成
- ✓ontaps3test
- IPv4CIDRブロック:10.100.0.0/16
- IPv6CIDRブロック:IPv6CIDRブロックなし
- 自動生成
- テナンシー:デフォルト
- アベイラビリティゾーンの数:1
- パブリックサブネットの数:1
- プライベートサブネットの数:1
- NATゲートウェイ($):なし
- VPCエンドポイント:なし
- DNSオプション
- ✓DNSホスト名を有効化
- ✓DNS解決を有効化
Elastic Compute Cloud(EC2)の構築
- FSxNの設定や動作確認に使用するJumphostとしてEC2をPublicサブネットにデプロイします。
- 手順については、以下の折りたたみを開いて確認ください。
EC2の作成手順
-
以下のように項目を選択・入力し、「インスタンスを起動」をクリック
- 名前とタグ
- 名前:jumphost-ec2
- アプリケーションおよびOSイメージ(Amazonマシンイメージ)
- クイックスタート
- Amazon Linux
- Amazonマシンイメージ(AMI)
- Amazon Linux 2023 AMI
- アーキテクチャ:64bit(x86)
- クイックスタート
- インスタンスタイプ:t2.micro
- キーペア:(作成したものを選択)
- ネットワーク設定
- ネットワーク:ontaps3test-vpc
- サブネット:ontaps3test-subnet-public1-ap-northeast-1a
- パブリックIPの自動割り当て:有効
- ファイアウォール(セキュリティグループ)
- 既存のセキュリティグループを選択
- 共通のセキュリティグループ:default
- ストレージ設定
- 1x8GiB gp3 ルートボリューム
- 名前とタグ
-
EC2に接続する
- 作成したEC2インスタンスのパブリックIPアドレスを確認しコピーしておく
- 「セキュリティグループ」を選択し、defaultセキュリティグループを開く
- 「インバウンドのルールを編集」をクリック
- 「ルールを追加」をクリックし、カスタムTCPタイプで22番ポートへのマイIPからの接続を許可する
- 「ルールを保存」をクリック
- ターミナルを開き、コピーしたパブリックIPアドレスに対してsshによる接続が可能か確認する
koheii@koheii-mac-1 ~ % ssh -oPubkeyAcceptedAlgorithms=ssh-ed25519 -i ./.ssh/test-keypair.pem 13.113.54.39 -l ec2-user , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' [ec2-user@ip-10-100-6-33 ~]$
Amazon FSx for NetApp ONTAPの構築
- FSxNをシングル構成でPrivateサブネットにデプロイします。
- デプロイ後、S3マルチプロトコルの設定を行います。
Amazon FSx for NetApp ONTAPのデプロイ
-
以下のように項目を選択・入力し、「インスタンスを起動」をクリック
- ファイルシステムのオプション:Amazon FSx for NetApp ONTAP
- 作成方法:スタンダード作成
- ファイルシステムの詳細
- ファイルシステム名:fsxn(任意)
- デプロイタイプ:シングルAZ
- SSDストレージ容量:1024
- プロビジョンドSSD IOPS:自動
- スループットキャパシティ:推奨されるスループット容量
- ネットワークとセキュリティ
- Virtual Private Cloud(VPC):ontaps3test-vpc
- VPCセキュリティグループ:sg-xxxxxxxxxxxxxxxxx(default)]
- サブネット:ontaps3test-subnet-private1-ap-northeast-1a
- 暗号化
- 暗号化キー:aws/fsx(デフォルト)
- ファイルシステム管理パスワード:パスワードを指定(任意のパスワードを入力)
- デフォルトのストレージ仮想マシン設定
- ストレージ仮想マシン名:fsx
- SVM管理パスワード:パスワードを指定しない
- ボリュームのセキュリティスタイル:Unix(Linux)
- Active Directory:Active Directoryに参加しない
- デフォルトのボリューム
- ボリューム名:vol1
- ボリュームサイズ:1048576
- ボリュームタイプ:Read-Write(RW)
- ジャンクションパス:/vol
- ストレージ効率:無効
- スナップショットポリシー:None
- デフォルトのボリュームストレージの階層化
- 容量プールの階層化ポリシー:なし
- 詳細
- SnapLock設定:無効
- バックアップとメンテナンス
- 毎日の自動バックアップ:無効
- 週次メンテナンスウィンドウ:プリファレンスがありません
-
事前に作成したJumphost(Linux)からログインしバージョンを確認する(2023/09/06時点)
koheii@koheii-mac-1 ~ % ssh -oPubkeyAcceptedAlgorithms=ssh-ed25519 -i ./.ssh/test-keypair.pem 13.113.54.39 -l ec2-user , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Wed Sep 6 06:31:17 2023 from 202.3.127.4 [ec2-user@ip-10-100-6-33 ~]$ ssh management.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com -l fsxadmin The authenticity of host 'management.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com (10.100.128.182)' can't be established. ED25519 key fingerprint is SHA256:omODGUDOclyu0I/GxlKW3JeSA0dt3Qtyj7T3XFmz7E8. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'management.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com' (ED25519) to the list of known hosts. (fsxadmin@management.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com) Password: This is your first recorded login. FsxId0e0764462acb12637::> version NetApp Release 9.12.1P6: Fri Aug 04 00:26:53 UTC 2023
S3マルチプロトコル設定
- S3マルチプロトコルの設定については、弊社の清水が以下の記事でもまとめておりますのでこちらも参考にしてください。
- 環境がCVO(Cloud Volumes ONTAP)とFSxNという違いもあるので、以下に設定手順を残しておきます。
-
先ほど同様、Jumphost(Linux)からFSxN管理コンソールへログイン
koheii@koheii-mac-1 ~ % ssh -oPubkeyAcceptedAlgorithms=ssh-ed25519 -i ./.ssh/test-keypair.pem 13.113.54.39 -l ec2-user , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Wed Sep 6 08:35:35 2023 from 202.3.127.4 [ec2-user@ip-10-100-6-33 ~]$ ssh management.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com -l fsxadmin (fsxadmin@management.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com) Password: Last login time: 9/6/2023 08:35:52 FsxId0e0764462acb12637::>
-
S3サービスが有効になっていることを確認
- 自動で作成されるSVM上で、S3サービスが有効になっていない場合は有効にする必要があります。
- 手順については、以下の折りたたみを開いて確認ください。
インターフェースの情報からS3サービスの状況を確認
FsxId0e0764462acb12637::> network interface show -instance Vserver Name: FsxId0e0764462acb12637 Logical Interface Name: fsxadmin Service Policy: default-management 〜省略〜 Vserver Name: FsxId0e0764462acb12637 Logical Interface Name: inter_1 Service Policy: default-intercluster 〜省略〜 Vserver Name: FsxId0e0764462acb12637 Logical Interface Name: inter_2 Service Policy: default-intercluster 〜省略〜 Vserver Name: fsx Logical Interface Name: iscsi_1 Service Policy: default-data-blocks 〜省略〜 Vserver Name: fsx Logical Interface Name: iscsi_2 Service Policy: default-data-blocks 〜省略〜 Vserver Name: fsx Logical Interface Name: nfs_smb_management_1 Service Policy: default-data-files Service List: data-core, data-nfs, data-cifs, management-ssh, management-https, data-s3-server, data-dns-server (DEPRECATED)-Role: data Data Protocol: nfs, cifs, s3 Network Address: 10.100.136.19 Netmask: 255.255.240.0 Bits in the Netmask: 20 Is VIP LIF: false Subnet Name: - Home Node: FsxId0e0764462acb12637-01 Home Port: e0e Current Node: FsxId0e0764462acb12637-01 Current Port: e0e Operational Status: up Extended Status: - Is Home: true Administrative Status: up Failover Policy: system-defined (DEPRECATED)-Firewall Policy: data Auto Revert: true Fully Qualified DNS Zone Name: none DNS Query Listen Enable: false Failover Group Name: Fsx FCP WWPN: - Address family: ipv4 Comment: - IPspace of LIF: Default Is Dynamic DNS Update Enabled?: true Probe-port for Cloud Load Balancer: - Broadcast Domain: Fsx Vserver Type: data Required RDMA offload protocols: - 6 entries were displayed.
- 上記の結果の、Vserver Nameがfsxで、Logical Interface Nameがnfs_smb_management_1がNAS(NFS)のサービスが稼働しているインターフェースになります。
- Service Listにdata-s3-server、Data Protocolにs3が出力されており、S3サービスが有効になっていることが確認できます。
-
Advancedモードに移行
FsxId0e0764462acb12637::> set advanced Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp personnel. Do you want to continue? {y|n}: y FsxId0e0764462acb12637::*>
-
object-store-serverの作成
FsxId0e0764462acb12637::*> vserver object-store-server create -vserver fsx -object-store-server fsxs3 -is-http-enabled true -is-https-enabled false FsxId0e0764462acb12637::*> vserver object-store-server show Vserver: fsx Object Store Server Name: fsxs3 Administrative State: up HTTP Enabled: true Listener Port For HTTP: 80 HTTPS Enabled: false Secure Listener Port For HTTPS: 443 Certificate for HTTPS Connections: - Default UNIX User: pcuser Default Windows User: - Comment:
- 今回は検証のためhttpのみの設定としています。
- セキュリティの要件などに応じてプロトコルを選択してください。
-
S3オブジェクトストアサーバーのユーザー、グループ作成
FsxId0e0764462acb12637::*> vserver object-store-server user create -vserver fsx -user s3user FsxId0e0764462acb12637::*> vserver object-store-server user show Vserver User ID Access Key Secret Key ----------- --------------- --------- ------------------- ------------------- fsx root 0 - - Comment: Root User fsx s3user 1 23D4E31RJXA875R58UJ5 _909YmCTMFQAX__kH4sqqCuh3X1P_tFc4HLsYoFn 2 entries were displayed. FsxId0e0764462acb12637::*> vserver object-store-server group create -name s3group -users s3user -policies FullAccess FsxId0e0764462acb12637::*> vserver object-store-server group show Vserver Group ID Group Name Users Policies ----------- --------- -------------- ---------------- ------------------- fsx 1 s3group s3user FullAccess
- S3オブジェクトストアサーバーのユーザーとグループとして、s3user/s3groupを作成しました。
- 作成したユーザーの情報を
show
サブコマンドで表示すると、Access KeyとSecret Keyが表示されますので、こちらの値をコピーしておく(Advancedモードの場合のみ) - また、Groupに付与するポリシーの権限は今回は検証ということもあり、Full Accessとしています。
-
S3バケット(NASタイプ)の作成
FsxId0e0764462acb12637::*> vserver object-store-server bucket create -bucket s3bucket -type nas -nas-path /vol1 -vserver fsx FsxId0e0764462acb12637::*> vserver object-store-server bucket show Vserver Bucket Type Volume Size Encryption Role NAS Path ----------- --------------- -------- ----------------- ---------- ---------- ---------- ---------- fsx s3bucket nas vol1 - false - /vol1
- バケットタイプをNASにすることで、NASサーバにS3プロトコルでアクセスできるデータの二重性(Data Duality)が実現できます
-
ネームマッピングの作成
- NAS(NFS)のデータにS3プロコトルでアクセス可能と聞いて、権限管理をどのように行っているのか疑問に思われた方もいらっしゃると思います。
- NAS(NFS)とS3に限らず、権限管理はマルチプロコトルにおける共通の課題です。
- ONTAPでは、作成したS3オブジェクトストアサーバーのユーザーとUNIXのユーザーをネームマッピングすることで柔軟な権限設定が可能です。
FsxId0e0764462acb12637::*> vserver services name-service unix-user create -vserver fsx -user ec2-user -id 1000 -primary-gid 1000 FsxId0e0764462acb12637::*> vserver services name-service unix-user show User User Group Full Vserver Name ID ID Name -------------- --------------- ------ ------ -------------------------------- fsx ec2-user 1000 1000 fsx nobody 65535 65535 fsx pcuser 65534 65534 fsx root 0 1 4 entries were displayed. FsxId0e0764462acb12637::*> vserver services name-service unix-group create -vserver fsx -name ec2-user -id 1000 FsxId0e0764462acb12637::*> vserver services name-service unix-group show Vserver Name ID -------------- ------------------- ---------- fsx daemon 1 fsx ec2-user 1000 fsx nobody 65535 fsx pcuser 65534 fsx root 0 5 entries were displayed. FsxId0e0764462acb12637::*> volume modify -volume vol1 -user 1000 -group 1000 Volume modify successful on volume vol1 of Vserver fsx. FsxId0e0764462acb12637::*> volume show -vserver fsx -volume vol1 Vserver Name: fsx Volume Name: vol1 Aggregate Name: aggr1 List of Aggregates for FlexGroup Constituents: aggr1 Encryption Type: none List of Nodes Hosting the Volume: FsxId0e0764462acb12637-01 Volume Size: 1TB Name Ordinal: base Volume Data Set ID: 1026 Volume Master Data Set ID: 2154956474 Volume State: online Volume Style: flex Extended Volume Style: flexvol FlexCache Endpoint Type: none Is Cluster-Mode Volume: true Is Constituent Volume: false Number of Constituent Volumes: - Export Policy: default User ID: ec2-user Group ID: ec2-user Security Style: unix UNIX Permissions: ---rwxr-xr-x Junction Path: /vol1 Junction Path Source: RW_volume 〜省略〜 FsxId0e0764462acb12637::*> vserver name-mapping create -direction s3-unix -position 1 -pattern s3user -replacement ec2-user -vserver fsx FsxId0e0764462acb12637::*> vserver name-mapping show Vserver: fsx Direction: s3-unix Position Hostname IP Address/Mask -------- ---------------- ---------------- 1 - - Pattern: s3user Replacement: ec2-user
- ここでは、Jumphost(Linux)のユーザー/グループであるec2-user(UID:1000)/ec2-user(GID:1000)に併せてONTAPのローカルユーザーとグループを作成しています。
- また、自動で作成したVolumeの管理権限を作成したec2-user(UID:1000)/ec2-user(GID:1000)に変更をしています。(初期はUID:0/GID:0でrootユーザーとなっています)
- 事前に作成したS3オブジェクトストアサーバーのユーザーであるs3userをUNIXユーザーのec2-user(UID:1000)/ec2-user(GID:1000)に変換するようなルールを作成しています。
-
動作確認
- ここまでで、NAS(NFS)のボリュームに対してS3のプロトコルで操作ができる環境が整いましたので、動作確認を行います。
- まずAWSマネジメントコンソールのストレージ仮想マシンを確認し、NFSのDNS名をコピーしておきましょう
- コピーしたNFSのDNS名に対して、Jumphost(Linux)上へのNFSマウントを行った上でのファイル操作と、S3プロトコルによるデータアップロードを試します。
[ec2-user@ip-10-100-6-33 ~]$ mkdir ./fsxn [ec2-user@ip-10-100-6-33 ~]$ ls fsxn [ec2-user@ip-10-100-6-33 ~]$ sudo mount -t nfs svm-06d4f48608233ec17.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com:/vol1 ./fsxn/ [ec2-user@ip-10-100-6-33 ~]$ df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev tmpfs tmpfs 475M 0 475M 0% /dev/shm tmpfs tmpfs 190M 2.8M 188M 2% /run /dev/xvda1 xfs 8.0G 1.5G 6.5G 19% / tmpfs tmpfs 475M 0 475M 0% /tmp tmpfs tmpfs 95M 0 95M 0% /run/user/1000 svm-06d4f48608233ec17.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com:/vol1 nfs4 973G 113G 861G 12% /home/ec2-user/fsxn [ec2-user@ip-10-100-6-33 ~]$ vi ./fsxn/file_via_nfs.txt [ec2-user@ip-10-100-6-33 ~]$ echo "Hello World via NFS" > ./fsxn/hello_via_nfs.txt [ec2-user@ip-10-100-6-33 ~]$ cat ./fsxn/hello_via_nfs.txt Hello World via NFS [ec2-user@ip-10-100-6-33 ~]$ aws s3 --endpoint-url=http://svm-06d4f48608233ec17.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com ls --profile fsxn 2023-09-06 09:40:54 s3bucket [ec2-user@ip-10-100-6-33 ~]$ echo "Hello World via S3" > ./hello_via_s3.txt [ec2-user@ip-10-100-6-33 ~]$ aws s3 --endpoint-url=http://svm-06d4f48608233ec17.fs-0e0764462acb12637.fsx.ap-northeast-1.amazonaws.com cp ./hello_via_s3.txt s3://s3bucket --profile fsxn upload: ./hello_via_s3.txt to s3://s3bucket/hello_via_s3.txt [ec2-user@ip-10-100-6-33 ~]$ cat ./fsxn/hello_via_s3.txt Hello World via S3 [ec2-user@ip-10-100-6-33 ~]$ ls -trl ./fsxn/ total 0 -rw-r--r--. 1 ec2-user ec2-user 20 Sep 6 10:34 hello_via_nfs.txt -rw-r--r--. 1 ec2-user ec2-user 19 Sep 6 10:51 hello_via_s3.txt
次回予告
- 長くなってしまいましたので、NAS(NFS)のボリュームに対して、S3プロトコルによるファイル操作が確認できたここまでで、第1回とさせていただきます。
- 次回は、このS3マルチプロトコルNASボリュームを使って、静的コンテンツホスティングが可能かどうか、またData Dualityならではの価値について考察をしたいと思います。