Nutanix ObjectsのTieringに関するお話し(Nutanix Objectsから AWS(S3)への階層化)

# Nutanix-Objects-Tiering to AWS(S3)

* Nutanix ObjectsのTieringに関するお話し
![image-20210116223316708.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/a5483ba0-8d4d-f004-53c5-cd8a4ba6122f.png)

## はじめに

* Nutanix Objectsはオブジェクトストレージを提供するサービスです。
* 代表的なオブジェクトストレージと言えばAWSのS3となります。ではNutanix Objectsの使い道はというと。
* 例えば、社内システムとの連携でオブジェクトストレージの高パフォーマンスが求められる場合、Nutanix Objectsを採用すると可用性・拡張性・柔軟性に優れたNutanix HCIのメリットを享受されたオブジェクトストレージが構成できます。
* ただし、場合によっては全てのオブジェクトストレージをオンプレで準備すると高額になる場合があります。
* そのため、Nutanix Objects（バージョン3.1以降）では、使用頻度の低いデータを別のObjectsストレージに階層化する機能を提供します。
* Nutanix Objectsを使用することにより、次のことができるようになります。
  * クラウドストレージベースのサードパーティオブジェクトストレージへの階層化
  * 古くて使用頻度の低いデータを保存するためのストレージ消費とコストの削減
  * Nutanix Objectsの機能を利用することでS3（AWS）PUTリクエストのコストを削減
  * アプリケーションをストレージの管理から切り離し、Nutanixの実績のあるHCIストレージ機能を使用してデータを効果的に管理します
  * Nutanix ObjectsはS3互換のオブジェクトストアプロバイダー（現時点ではAWS）に階層化できます。




## 構成イメージ

* 複数のNutanixオブジェクトサイト間の階層化の例を次に示します。アプリケーションは、Nutanixクラスターオブジェクトストアのバケットに書き込み、セカンダリサイトのNutanixクラスターに階層化されます。

![image-20210117004140345.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/53cf3765-83bb-0a73-21de-bb63598b966b.png)







## 環境構築

* 構成イメージとしては次の通りです。ここではAWSの手順を整理しますが、S3互換のストレージ階層でも同じ手順となります。
  * オンプレ：Objectsのデプロイと階層化機能設定
  * クラウド：S3（AWS)
* 手順概要
  1. objectsのデプロイ
  2. 階層化の宛先としてAWS S3の作成
  3. オブジェクトストア構成でエンドポイントをセットアップする
  4. バケット構成でライフサイクルポリシーを設定する

このあと詳細な手順を記載します。

### Objectsのデプロイ

* Prism Central > メニュー > サービス > グループ  （日本語訳が。。。。）（Menu >  Services > Objects ）
* Prism Central(PC)からメニュー> [ **サービス** ]> [ **オブジェクト** ]  から有効化するだけ
  * 1分ほどかかります
* 作成後、
* オブジェクトストア / Bucketを作成します

![image-20210117084411237.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/f03379c1-6d45-e597-e649-385937e5be0b.png)






### S3の作成（階層化の宛先）

* AWS マネジメントコンソールからS3コンソールを開きます。
* 「バケットを作成」をクリックします。
* 下記設定します。
  * バケット名：my-bucket （任意）
  * リージョン：ap-northeast-1 （東京）
  * **パブリックアクセスをすべて ブロック**を選択
  * バケットのバージョン管理を**無効にすることを**選択します
  * サーバー側の暗号化を**無効にすることを**選択します
  * ページの下部にある[**バケットの作成**]ボタンをクリックし**ます**
* AWS上でBucketが作成されました（リスト中にmy-bucektが表示されています）

  ![image-20210117011941388.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/35c9b229-133f-996b-de7a-3be01cd4d340.png)

### AWS S3バケットへのアクセス権

* AWS IAM管理コンソールへアクセスします。
* ユーザ＞ユーザの追加をクリック。 下記を追加します。
  * ユーザ名：my-bucekt-user
  * アクセス種類：プログラムによるアクセス
  * ユーザをグループに追加
    * グループの作成。下記を入力してグループの作成をクリック
      * グループ名：s3acsess
      * フィルターポリシー]入力にs3と入力し、ポリシーとしてAmazonS3FullAccessを選択します。これにより、すべての権限が提供されます。

![image-20210117012514754.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/921e5c1c-bdb0-bf57-d8f4-158e5b9adae6.png)




* 以降デフォルト設定で「ユーザの作成」をクリックします。

* アクセスIDとシークレットアクセスキーを確認します。

  * アクセスID：AKIA5AT5MLCXQHECXXXX
  * シークレットアクセスキー：XXXXX

* 「閉じる」をクリックします。

* これでS3のセットアップは完了です。




### オンプレ側で、エンドポイント（S3)を設定する

* Prism Central からメニュー > サービス > グループ  （日本語訳が。。。。）（Menu >  Services > Objects ）

![image-20210117010833066.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/03b826ad-f901-ff36-0457-4d2dc5ca5da3.png)



* 「Tiering Endpoint」を選択し、「＋Add」をクリックします。下記登録後「Save」をクリックします。
  * 名前：AWSTiering Endpoint
  * Service Host：s3.ap-southeast-1.amazonaws.com
  * Bucket Name：my-bucket （先ほどAWSで作成したもの）
  * アクセスキー：先ほど作成したもの
  * Secret Key：先ほど作成したもの

![image-20210117013526392.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/09bb281b-164d-19a0-1291-6bc862c1768d.png)


* Endpointが作成されました

![image-20210117013942163.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/ad135229-6e40-6242-6981-b27e98e6b9c8.png)





### ライフサイクルの作成

* Object Storeを選択します。：my-bucket
* Lifecycleを選択し、「Create Rule」をクリックします。

![image-20210117014127451.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/8d652033-f927-657a-231c-1299671c7b9c.png)



* ルール名を入力します。たとえば、階層化されたデータのリージョンを指定する**tier-to-aws-northeast-1.amazonaws.com**
  * 「すべてのオブジェクト」を選択
  * 「次へ」
* ルール設定
  * Tiering：ソースバケットでオブジェクトの作成日から1日後に階層化を設定します
  * Expiration：宛先ストレージで2日までの有効期限を選択することもできます（パブリッククラウドでの請求を抑制する場合など）
  * マルチパートアップロードを選択し、宛先バケットで最後の作成日から2日後
  * 「次へ」

![image-20210117014627761.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/e0777a61-4843-9655-fa77-4e935e2d1599.png)



* 構成を確認し「完了」をクリックする



## 階層化の確認

* 階層化が成功すると、ソースバケットに階層化ステータスが表示されます。

![image-20210117014801002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/1a35de2b-6618-0ad7-1904-43940753ba14.png)




* データを保存してみた。オブジェクトブラウザで双方の おバケツの中身を見てみる

![image-20210117021022101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/ac63ddb6-1d42-b8c5-3543-b99b7b0d3d27.png)



* AWS側(S3)は空っぽ。明日になればデータが保存されるはず。
* 階層化設定したタイミングは空

![image-20210117021106383.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/0f4288a9-5ba5-82f5-e944-c99985c69d1d.png)


* 1日たった後。無事に階層化されました。
  * オブジェクト名は機械的につけられている。オブジェクトストレージなので名前なんてなんでもいいですよね。

![image-20210118131137493.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543420/4545dfc5-73ae-f901-2a54-9361ecbcee4c.png)



## まとめ

- Nutanix Objectsを使用すると、データを他のオブジェクトストア（クラウドおよびオンプレミス）に階層化するための簡単な構成が可能になります
- これでオンプレ側には最小限の構成をとることが可能となり、コストメリットがでるかと思います。
- 階層化ポリシーはバケットのソース（プロバイダー）で構成する必要があります。
  - 例えば：Nutanix ObjectsからAWSへの階層化はNutanix PCで構成する必要があります
  - 例えば：AWSS3からAWSGlacierへの階層化はAWSコンソールで構成する必要があります