#Nutanix Cloud Clusters on AWS(NC2A)でLCMによるUpgrade、ヘテロなクラスタ、Hibernateやってみた。

**本記事は[Nutanix Advent Calendar 2022](https://adventar.org/calendars/7744) 12/24 分の記事です。**

昨年はプライベートが忙しすぎてお休みしましたが、

今年はAdvent Calendar復帰です。

以前に引き続き、on AWSな感じの投稿です。


# １．今回やってみたこと

smzkstsさんの記事で[Nutanix Cloud Clusters on AWS(NC2A)でノード追加＆削除してみた](https://smzklab.net/2022/12/nc2a-node-add-remove.html)は既に投稿あったので、

同じじゃ面白くないと思案したところで、

クラウド上の環境でもLCMで簡単Upgradeできるよね？という検証と、

最近サポートされるようになったヘテロジニアスなClusterとHibernateをやってみました。


# ２．LCMによるUpgradeやってみた

今回用意したのはこちらの環境。
AOS6.5ベースで、AWS上にz1d.metalを利用した3Nodeクラスタを作っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/3a6a7915-07cd-5bfd-05e4-008cb7f5df84.png)

オンプレ環境と同じように、まずはLCMを実行。
インターフェースも含め、オンプレ環境と全く変わりありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/d9286907-86b5-b132-151a-d7ea24458837.png)


LCMでUpgrade可能なソフトウェアの確認が終わった図。
こちらもオンプレ環境と違いがなさ過ぎて、すり替えてるんじゃないかと疑われるレベル。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/86c4b840-aef5-7d8b-d222-ffff8146ffa0.png)

まずは無難なモジュール系のみを実行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/bc665961-32bf-c8b5-5949-e280e95ce6b6.png)

これはまあ当然、あっさりと終わりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/d8beaa23-f002-08c9-42e2-450105e0a333.png)

次はAOSのUpgradeに挑戦です。
こちらはCVMの再起動も伴うので、スムーズにいくか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/bc16318a-2020-732f-f7ff-9da7ab0c1e0c.png)

確認画面もいつも通り。（注 ちゃんとAWS上の環境でやってます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/9f854bb1-8a1d-d4e6-3b00-2ae5815bf8ed.png)

Prism Centralを先に上げてねの警告もいつも通り。（注 ちゃんとAWS上の環境でやってます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/ea0af066-98ea-dfaf-c3c3-3d5c3a6dc8ae.png)

レッツスタート。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/e0fe447d-1fa8-90e2-d4d2-9306647c91d0.png)

見慣れたUpgrade画面が進んでいきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/4282e54c-3afd-07af-f431-63d4ff746ae4.png)

メールなど打っている間に終わってしまった（汗
LCMの完了画面をSS取り損ねましたが、無事6.5.1.6にUpgradeが完了しました。
まあNodeの中のことなので、想定通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/8d1144eb-f951-0815-60cf-5cc8d3aabff8.png)

今度はAHVの方を上げます。確認画面は前と同じなので割愛。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/992ceca7-503c-541c-95f0-e901133f176f.png)

オンプレ環境と同じように１Nodeずつタスクが走っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/ae8e4951-2145-7740-a932-7faf9c2fc8b7.png)

こちらもローリングUpgradeで特に何も起こることなく無事終了。（注 ちゃんとAWS上の環境でやってます）
途中、Nodeの再起動が走りますが、そのタイミングでMCMコンソールに登録されているメール宛に、
「Host Agent running on AHV node did not respond to Nutanix Orchestrator for more than 120.0 seconds」
と書かれたメールが来ていました。
Node障害時も含め、こういった監視をMCM側でもしてくれているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/464fbfd2-d681-6b53-db61-ddee33991ee5.png)

ということで、記事だから割愛している訳ではなく、
途中でエラーやらなにやら起こることもなく、スムーズにUpgrade完了しました。
個別で様々なカスタマイズしているオンプレ環境よりも、
変動要素が少ないため、むしろよりスムーズなのかもしれません。

今回、最新のLTSであるAOS6.5系で試しましたが、
AOS5.20系でもNC2Aの利用は可能ですので、
コンパチビリティも確認の上、ご利用ください。

# ３．ヘテロジニアスクラスタやってみた
さて今度はヘテロジニアスクラスタです。
冒頭掲載の様に、ベース環境はz1d.metalを3Nodeで構成しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/dcc1aabf-0df7-77d0-d9a8-09068ee3d562.png)

単なるNode拡張は[smzkstsさんの記事](https://smzklab.net/2022/12/nc2a-node-add-remove.html)を参照いただくとして、
ここではスペックの異なるNodeの拡張を実施してみたいと思います。

まずNC2Aでは以下のインスタンスが利用可能です。
z1d.metal
m5d.metal
i3.metal
i3en.metal
g4dn.metal(GPU搭載)

このうち、混ぜることが可能なインスタンスタイプが決まっています。
次の２グループが単一クラスタの中で混在可能なインスタンスであり、
現在このグループを超えて混ぜることはできないです。

【グループ１】
z1d.metal
m5d.metal

【グループ２】
i3.metal
i3en.metal


見てわかるようにGPU搭載Nodeはいずれとも混在不可というのが、
本投稿執筆時点の状況です。
今回はz1d.metalをベースにクラスタを作っていましたので、m5d.metalを追加することになります。
AWSマネジメントコンソール側で見るとこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/abc3a411-d780-ab0e-33cf-983a2d69481d.png)

Node拡張というと、Prismのハードウェア画面でやるのがオンプレ環境の定石ですが、
NC2A環境では、下図の通りここで操作できないようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/ee0b9309-3cdc-a4ae-034c-4b8d2e6b5a3c.png)

ではどこでやるかですが、MCMコンソールというNC2環境を管理するためのポータルサイト側です。
アクセスはMy Nutanixの方からどうぞ。
そちらのクラスタ管理メニューからCapacityのUpdateを行う画面にくると、下図のようになっています。
見てわかる通り、拡張可能なインスタンスが初めから書いてあるので、拡張できるものの選択で迷うことはないですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/945dbbe4-b71e-1f38-f913-1609759e056a.png)


ここではm5d.metalを2Node追加してみたいと思います。
ちなみに異なるNodeタイプを拡張する場合は、2Node以上をお勧めされます。
Node間で持ってるDISK量が違うので、Failover時のことを考えた処置ということになります。
ということで、2Node追加の指示をしてみます。
数字を画面の様に２にしてSaveするだけで、自動的に追加が実行されます。

Prismの方で待ち構えていると・・・タスクが始まりました。
順次Node追加が実行されていきます。
この辺のコントロールはMCMコンソールが良しなにやってくれるので簡単です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/08256bba-0da4-0662-018c-1a3aa62a9fff.png)

しばらく待っているとNodeが無事追加されました。
オンプレ環境同様でPrism側のタスクが始まってから１Node5分前後で追加できています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/7bad2aa3-08bd-6fe7-c9c0-fc676c2985c9.png)

Prismのダッシュボード参照すると計５Nodeになっているのが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/f1711a78-0d44-917c-6ec5-42274187c37d.png)



# ４．Hibernateやってみた

ここまで検証をやってきましたが、
AWSは使えば使った分だけお金がかかります・・・ということで、
ひとまず検証を休止したい場合もこのままではガッツリ課金されてしまいます。

通常の仮想マシンのEC2インスタンスであれば停止すればよいのですが、
HCIをベースにしている弊社のNC2やVMCなどはそう簡単にはいきません。
何故ならばデータの実態をベアメタルインスタンスのおなかの中のDISKに保存しているので、
インスタンスを停止してそのインスタンスが仮に再利用できなかった場合、
データはどっかに行ってしまうからです。

で、どうしようもないのかと言うと、NC2では対策を実装しています。
それが**Hibernate**機能です。

このHibernate機能がどういうものかというと、
クラスタ内のデータをS3に保存することで、
安全にインスタンスを止めることができるというもの。

インスタンスを止められればコンピューティングに対する課金を停止できるわけです。
実際にやってみましょう。

また再びMCMコンソールの出番です。
当該のクラスタのActionでHibernateを選択します。
なお、実行の前に予めクラスタ内の仮想マシン達は停止しておくのをお忘れなく。
（オンプレ環境でいう、停電対応と同じ状況になりますので）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/a4504c76-a15b-8a77-f6e1-7d22ab423622.png)

こんな感じで処理が始まります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/02d95713-9be2-691b-151f-c43f6b535277.png)

処理の最初にS3にバケットが作られ、データの退避先が用意されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/e1b1e594-7b15-9845-7685-2051845b3332.png)

その後、S3バケットに対して、データのコピーが走ります。
かかる時間はクラスタ内のデータ量次第です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/23d0bd5f-d996-23d6-6124-f982dce72c29.png)

コピー作業が完了したら、最後にインスタンス（Node）の停止が実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/e02be47a-a28d-0117-a768-a5e7a29f1d98.png)

インスタンスが停止完了すると、MCMコンソール上の表記が変わり、
無事Hibernateが終わったことがわかります。
次回再開時は画面上のResumeを押してあげれば、クラスタが再開します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/baf6587f-9b05-c870-d30a-3ba9d344abd9.png)

なお、AWSコンソール上で見ても、
各z1dのインスタンスが停止状態になっているのがわかりますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317644/1ec1862e-9bcd-7d0d-8480-f8eadf4c6a08.png)

これで検証していない間の高額な課金を抑えることができました。
課金に怯えて削除→後日にまた一から環境作成、
ということをしなくともよいので、検証や保守開発時に持ってこいの機能ですね。

今回は以上となります。
明日はNutanix Advent Calendar 2022最終回。
トリはUnno Wataruさんの投稿です。
お楽しみに！

以上、現場からお伝えしました。