Sougen Blog

Prism Central を同居させた Nutanix 単一ノードクラスタを公式手順で停止する

nutanixaosprism-centralhomelab

Nutanix 単一ノードクラスタの側面図。下から Supermicro X11 → AHV の上に CVM / PCVM / UVM の 3 種の VM が並び、CVM 上に AOS が動いて Stargate・Cassandra・Prism Element 等のサービスをホスト、PCVM 上に MSP (K8s platform) 経由で Prism Central、UVM 上に RHEL 等のゲスト OS と業務アプリが乗る

TL;DR

ちゃんと公式ドキュメントを見よう。

前回 X11 世代の Supermicro に立てた Nutanix 単一ノードクラスタで、シャットダウンと再起動の手順を公式資料に沿って実測しました。
AOS 7.3.1.12 / AHV 10.3.1.10 の 1 台構成で、Prism Central (PC) を同じクラスタ上のゲスト VM として同居させています。

前提

Prism Central を「クラスタの管理面」として別クラスタに置く運用もありますが、自宅ラボや検証機では同居構成が多いです。

停止の順序

公式のクラスタ停止手順に沿って、PCVM → 他 UVM → CVM → AHV の順で落とします。
cluster stop の確認プロンプトは I agree を要求します(y / yes は通りません)。

PCVM を先に落とすのは、PCVM が同じ Nutanix クラスタ上のゲスト VM だからです。
CVM で先に cluster stop を叩くと、稼働中の Acropolis VM を検知して Found 1 Acropolis VMs still running on hosts で拒否されます。
このエラーを見過ごし、CVM での sudo shutdown -P now や AHV の停止に進むと、PCVM が稼働したまま Stargate を含むストレージサービスを失い、PCVM の vDisk が I/O error になります。
その状態で AHV まで落とすと PCVM は正常なシャットダウン手続きを踏めず強制電源断となり、内部の MSP (Microservices Platform) の K8s pod 群も正常終了せずに落ちます。
次回起動時の復旧に時間がかかる可能性があります。

# 1. Prism Central VM を graceful shutdown
ssh nutanix@<PCVM IP>
cluster stop
sudo shutdown -P now              # PCVM が VM として off になる

# 2. PE 側で ncc + 稼働 VM 確認 + cluster stop
ssh nutanix@<CVM IP>
ncc health_checks run_all         # 事前チェック(公式手順で必須)
acli vm.list power_state=on       # PCVM off 後は 0 件のはず
cluster stop
cluster status                    # "The state of the cluster: stop" を確認
                                  # Zeus / IkatProxy / Scavenger / VipMonitor は UP で残る想定

# 3. PE CVM を電源断
sudo shutdown -P now              # クラスタ全体停止時は cvm_shutdown ではなくこちら

# 4. AHV host を電源断
ssh root@<AHV IP>
virsh list --all                  # CVM が "shut off" を確認
shutdown -h now                   # AHV host 停止

対話 SSH は login shell で入るので cluster / acli / ncli が PATH で通ります。
非対話で ssh nutanix@<CVM> 'cluster status' のように直接コマンドを渡すと non-login shell になり PATH が通らないので、/usr/local/nutanix/cluster/bin/cluster の絶対パスが要ります。

UVM が残っているとき(今回は PCVM 以外いないので該当なし)は、公式手順に沿って acli vm.shutdown <uuid> で ACPI graceful shutdown を要求し、vm.get の power_state=off を確認してから次に進みます。
応答しない場合のみ acli vm.off <uuid> で強制電源断です。

実測: 停止のコマンドと出力

自宅ラボ(Sougen、AOS 7.3.1.12 / AHV 10.3.1.10 / PC 7.5.1.12、単一ノード)で実際に走らせたときの入出力です。

1. PCVM で cluster stop

$ ssh [email protected]
$ echo I agree | cluster stop

出力の要点:

***** CLUSTER NAME *****
Sougen-PCVM

This operation will stop all Nutanix services, making Prism Central unable
to manage applications and services. Do you want to proceed? (I agree/[N]):
INFO cluster:2492 Cluster has been stopped via 'cluster stop' command
INFO cluster:3785 Success!

Waiting on 192.168.1.15 (Up, ZeusLeader) to stop:
IkatProxy Zeus Scavenger VipMonitor Flow ClusterHealth ClusterManagement
...
The state of the cluster: stop

15 秒で state: stop に遷移しました。

2. PCVM で sudo shutdown -P now

$ sudo shutdown -P now
Shutdown scheduled for ...

SSH セッションが即座に切れ、1 分 37 秒後に PE 側から見た PCVM の state が kOff になりました。

$ ssh [email protected] 'acli vm.get NTNX-...-PCVM-... | grep state'
    power_state_mechanism: "kHard"
  state: "kOff"

3. PE で稼働 VM 確認

PCVM を off にしたので稼働 VM は 0 件です。

$ ssh [email protected]
$ acli vm.list power_state=on
VM name  VM UUID

4. PE で cluster stop

$ echo I agree | cluster stop

出力の末尾:

Waiting on 192.168.1.12 (Up, ZeusLeader) to stop:
IkatProxy Zeus Scavenger VipMonitor
The state of the cluster: stop
Lockdown mode: Disabled

16 秒で完了。
cluster stop は Nutanix サービス群を止めるだけで CVM の OS は生きたままなので、cluster start で戻せます。
Zeus / IkatProxy / Scavenger / VipMonitor が UP のまま残るのは想定挙動です。

5. PE CVM を sudo shutdown -P now

$ sudo shutdown -P now
Connection to 192.168.1.12 closed by remote host.

AHV 側の libvirt で観察すると、CVM ドメインの state が running → shut off に 15 秒で遷移しました。

$ ssh [email protected] 'virsh list --all | grep CVM'
 -    NTNX-3d3f619f-A-CVM   shut off

6. AHV host のシャットダウン

$ ssh [email protected]
$ virsh list --all           # CVM が "shut off" を確認
 Id   Name                  State
--------------------------------------
 -    NTNX-3d3f619f-A-CVM   shut off

$ shutdown -h now
Connection to 192.168.1.13 closed by remote host.

SSH セッションは即座に切れ、ping は 6 秒後に DOWN、BMC の PowerState が Off になるまでさらに 12 秒でした。

7. BMC から電源断を確認

$ curl -K bmc.curlrc -sS https://192.168.1.143/redfish/v1/Systems/1 \
    | jq .PowerState
"Off"

停止タイムライン

UTC (Sep 25) イベント 前ステップ差
11:50:01 PCVM cluster stop 発行 —
11:50:16 PCVM cluster stop 完了 +15 秒
11:50:16 PCVM sudo shutdown -P now 発行 +0 秒
11:51:53 PCVM state: kOff 確認 +1 分 37 秒
11:51:53 PE acli vm.list power_state=on = 0 件 —
11:51:53 PE cluster stop 発行 +0 秒
11:52:09 PE cluster stop 完了 +16 秒
11:52:09 PE CVM sudo shutdown -P now 発行 +0 秒
11:52:24 PE CVM libvirt 上で shut off 確認 +15 秒
11:52:24 AHV shutdown -h now 発行 +0 秒
11:52:30 AHV ping DOWN +6 秒
11:52:42 BMC PowerState: Off 確認 +12 秒

PCVM の cluster stop から BMC で PowerState: Off を確認するまで 2 分 41 秒でした。

起動の順序

停止の逆順で、公式のクラスタ起動手順(と 1 ノード起動手順の CVM 起動部)に沿って上げます。

# 1. 物理電源投入(IPMI Redfish の例)
curl -K bmc.curlrc -sS -X POST \
  -H 'Content-Type: application/json' \
  -d '{"ResetType":"On"}' \
  https://<BMC IP>/redfish/v1/Systems/1/Actions/ComputerSystem.Reset

# 2. AHV が上がったら virsh で CVM の起動状況を確認
#    Autostart=disable のまま Nutanix の systemd service 群 (ahv-*-cvm.service) で自動起動する
ssh root@<AHV IP>
virsh list --all | grep CVM

# 3. CVM 起動後、PE 側で cluster start
#    CVM の SSH open 直後は Genesis がまだ、cluster status が応答するまで数分待つ
ssh nutanix@<CVM IP>
cluster status                    # "state: stop" が応答したら次へ
cluster start
cluster status                    # DOWN が 0 件になるまで数分

# 4. PCVM を起動
acli vm.on <PCVM name>

# 5. PCVM SSH open を待ってから、さらに Genesis 起動を待つ
#    SSH open は約 40 秒、Genesis + Zookeeper が上がるまで追加で 6 分ほど
#    SSH ready 直後に cluster start を叩くと Zookeeper 未起動で失敗する
ssh nutanix@<PCVM IP>
cluster status                    # "state: stop" が応答したら次へ

# 6. PCVM 側で cluster start
cluster start
# → 数分で "state: start"、CVM は直接 "Up, ZeusLeader"
#   (sudo shutdown で落とした場合は maintenance mode に嵌らない)

# 7. その他 UVM を順次起動

起動時のハマりどころは 2 箇所です。

停止で sudo shutdown を使えば、起動時の maintenance mode 遷移は発生しません。

実測: 起動のコマンドと出力

同じサイクルで停止した直後に電源再投入した際の記録です。

8. BMC で電源投入

$ curl -K bmc.curlrc -sS -X POST \
    -H 'Content-Type: application/json' \
    -d '{"ResetType":"On"}' \
    https://192.168.1.143/redfish/v1/Systems/1/Actions/ComputerSystem.Reset
{"Success": {"code": "Base.v1_4_0.Success", "Message": "Successfully Completed Request."}}

ResetType: On を叩いてから AHV ping が返るまで 104 秒、AHV SSH open も同じタイミングでした。

9. AHV boot と CVM autostart

$ ssh [email protected] 'journalctl --list-boots | tail -3'
-1 ...  Thu 2026-09-25 11:49 UTC—Thu 2026-09-25 11:52 UTC
 0 ...  Thu 2026-09-25 11:55 UTC—...

$ virsh dominfo NTNX-3d3f619f-A-CVM | grep -E "State|Autostart"
State:          running
Autostart:      disable

Autostart: disable と表示されますが、AHV 起動後に CVM は自動的に running に遷移します。
libvirt の autostart ではなく Nutanix の systemd service 群(ahv-*-cvm.service)が起動します。

10. PE で cluster start

CVM の SSH open 直後は Genesis がまだ起動途中で、cluster status がタイムアウトします。
cluster status が state: stop を返し始めてから cluster start を叩きます(CVM SSH open から実測で 3 分 46 秒後)。

$ ssh [email protected]
$ cluster status | grep "state of the cluster"
The state of the cluster: stop

$ cluster start

出力末尾:

INFO cluster:3785 Success!
    Prism             UP    [...]
    Cerebro           UP    [...]
    ...
The state of the cluster: start

cluster start から cluster status の DOWN が 0 件になるまで 2 分 57 秒でした。

11. PCVM を起動

$ acli vm.on NTNX-192-168-1-15-PCVM-1790135533
NTNX-192-168-1-15-PCVM-1790135533: pending
NTNX-192-168-1-15-PCVM-1790135533: complete

5 秒で pending → complete、その 39 秒後に PCVM の SSH が open しました。

12. PCVM の Genesis ready を待つ

acli vm.on の直後は PCVM の SSH は open ですが Genesis が起動途中で、cluster status を叩いてもタイムアウトで返ってきません。
SSH open から cluster status が state: stop を返し始めるまで、実測で 5 分 57 秒待ちました。

$ ssh [email protected]
$ cluster status | grep "state of the cluster"    # 6 分ほど待つと応答する
The state of the cluster: stop

13. PCVM で cluster start

$ cluster start
INFO cluster:3621 Executing action start on SVMs 192.168.1.15
INFO cluster:3785 Success!
Waiting on 192.168.1.15 (Up, ZeusLeader) to start:

The state of the cluster: start
    CVM: 192.168.1.15 Up, ZeusLeader

sudo shutdown で落としていたので、CVM は Up, ZeusLeader に直接遷移し、Maintenance mode は経由しませんでした。
先に cvm_shutdown -P now で落とした rerun では、ここが CVM: 192.168.1.15 Maintenance から始まり、3 分 9 秒かけて自動 exit するのを観察しました。
原因は cvm_shutdown が Zookeeper に登録する maintenance mode flag で、sudo shutdown を使えば flag は入らず、起動時に maintenance mode を経由しません。

cluster start 発行から MSP pod 群を含む全サービスが UP になるまで約 9 分でした(PC は MSP の起動が重い)。

起動タイムライン

UTC (Sep 25) イベント 前ステップ差
11:53:34 BMC で ComputerSystem.Reset ResetType:On 発行 —
11:55:18 AHV ping UP / SSH open +104 秒
11:56:18 CVM (PE) SSH open +60 秒
12:00:04 PE CVM で cluster status が応答 +3 分 46 秒
12:00:04 PE cluster start 発行 +0 秒
12:02:54 PE cluster start 完了(Success 応答) +2 分 50 秒
12:03:01 PE 全サービス UP +7 秒
12:03:01 acli vm.on <PCVM> 発行 +0 秒
12:03:06 acli vm.on complete +5 秒
12:03:45 PCVM SSH open +39 秒
12:09:42 PCVM で cluster status が応答 +5 分 57 秒
12:09:42 PCVM cluster start 発行 +0 秒
12:18:48 PCVM 全サービス UP(Maintenance 経由なし) +9 分 6 秒

BMC 電源投入から PCVM の全サービス UP まで 25 分 14 秒 でした。
シャットダウンの 2 分 41 秒と合わせて、完全なシャットダウン + 再起動サイクルは 27 分 55 秒 です。

教訓: 公式資料を先に読む

この記事は最初、cvm_shutdown -P now を使う手順で書いていました。
Web 検索や外部ブログ(juliendumur.fr、next.nutanix.com のコミュニティ投稿 等)がそう書いていて、実測でも動いていたからです。

しかし Nutanix の日本語 KB PDF 「ホストとクラスターの停止・起動手順」 を読むと、ホスト停止手順(1 ノード外し用)と クラスタ停止手順(クラスタ全体停止)で使うコマンドが明確に分かれていました。

シナリオ CVM の落とし方
1 ノード外し(他ノードで cluster 継続) acli host.enter_maintenance_mode → cvm_shutdown -P now
クラスタ全体停止 cluster stop → sudo shutdown -P now

cvm_shutdown は 1 ノード外し用で、VM migration・shutdown token・maintenance mode 遷移が組み込まれています。
cluster stop でクラスタ全体を止めたあとにはこれらの機構は不要(node 数によらず)なので、クラスタ停止手順は sudo shutdown -P now を指定しています。

外部ブログや Web 検索は 1 ノード外しとクラスタ全体停止が混在した状態で流通していて、この記事も先に前者の記述を拾ってしまいました。
cvm_shutdown 版で観測した「起動時に 3 分間 Maintenance mode に嵌り、自動 exit を待つ」現象は、そもそも cvm_shutdown が Zookeeper に maintenance mode flag を入れるからで、公式手順どおりの sudo shutdown なら発生しません。

まとめ

参考