Slide 1

Slide 1 text

Nutanix Guest Tools 3.0 のご紹介 2023年3月8日 SB C&S株式会社 ICT事業本部 ICT事業戦略・技術本部 技術統括部 第3技術部2課 萩原 隆博 Version 1.0 Nutanix Meetup 2023.03

Slide 2

Slide 2 text

2 本ドキュメントの利用条件 本ドキュメントを利用される前に、以下の注意点をお読みいただき、 ご承諾いただいた上でご利用ください。 • 本ドキュメントの著作権はSB C&S株式会社(以下弊社)に帰属します。このため本ドキュメント全てまたは その一部を著作権者の許可なく複製や再配布することは禁じられています。 • 本ドキュメントは利用条件や記載内容は予告なしに変更することがあります。 • 本ドキュメントは、弊社にて把握、確認された内容を基に作成したものであり、お客さま環境や製品機能 の仕様や動作について担保・保証するものではありません。 • 本ドキュメントに記載内容は、本ドキュメント発行時点の情報であり、製品のバージョンアップなどによる 機能拡張によって実際の操作手順や画面構成、機能動作などが変更される場合もございます。 • 本ドキュメントの利用に関し、トラブルが発生した場合、利用者又は第三者に損害が生じた場合であっ ても、本ドキュメントは利用者の自己責任のもと利用されるものであることを鑑み、弊社は損害賠償その 他一切の責任を負いません。

Slide 3

Slide 3 text

5 Nutanix Guest Toolsとは?

Slide 4

Slide 4 text

6 Nutanix Guest Toolsとは Nutanix Guest Toolsとは、仮想マシンにインストールするソフトウエアです。 Nutanix上で稼動する仮想マシンで、以下のような役割があります。 ファイルレベルリストア VM Mobility Windows/Linuxのアプリケーションコンシステンシースナップショット取得支援 Self Service RestoreによるNutanixスナップショットをマウントしてファイルベースの リストアを行います VirtIO Driverにより、AHVとESXi間の行き来ができるようになります Windowsの場合は、VSSと連携します。 Linuxの場合は、スクリプトベースで制止点を取得します。 Nutanix Disaster Recovery (DR)の動作支援 Prism Centralに実装されるNutanix Disaster Recovery機能と連携し、 フェールオーバー時のIPアドレス変更やスクリプト実行を行います。

Slide 5

Slide 5 text

7 Nutanix Guest Toolsとは Windowsマシンのシャットダウン Prismからの標準シャットダウンの場合、ACPIコールとなるため、Windows仮想マシンで 画面ロックがなされているとシャットダウン出来ないための対応。 NGTからのコールで、仮想マシンをシャットダウン出来ます。 UPS連携ソフトウエアによっては、NGTの連携が出来ていないとシャットダウンが出来ない 製品もありますので、注意が必要です。

Slide 6

Slide 6 text

8 Nutanix Guest Tools 通称NGTと呼ばれています。

Slide 7

Slide 7 text

9 NGTがどのように仮想マシンを制御しているのか NGTの内部

Slide 8

Slide 8 text

10 AOS6.5までのNGT疎通 NGTは、仮想マシンにインストールするNGA(Nutanix Guest Agent)とCluster Virtual IP(Cluster VIP)と2074/TCPで疎通を行います。(やりとりは、SSL通信) Cluster VIP 2074/TCP で疎通 AHV AHV AHV

Slide 9

Slide 9 text

11 仮想マシンの識別 仮想マシンにNGAをインストールする際には、Prismの「Mount Nutanix Guest Tools」を チェックを入れます。 すると、その仮想マシン専用のNGAインストーラーISOがCVM内部で作成され、仮想マシ ンにマウントされます。

Slide 10

Slide 10 text

12 なおISOは永久保存です 仮想マシンごとに作成されたISOは、ストレージコンテナ内の「.ngtフォルダ」の配下で、仮想 マシンUUIDごとに保存されています。 仮想マシンが削除されても、このISOは、は削除されません…。

Slide 11

Slide 11 text

13 なぜ、仮想マシンごとにISOが作成されるのか? NGTのISOの中をみてみると

Slide 12

Slide 12 text

14 JSON内部の記載 仮想マシン個別の情報が記載されています。 { "cluster_ip": "192.168.32.130", "communication_type": 2, “ngt_heartbeat_max_retry_fallback_to_ip”: 3, "ngt_heartbeat_max_retry_ipless": 20, "ngt_uuid": "f23f8a46-cae3-4a86-81b1-d941a00e9957", "ngt_version": "3.0", "port": 2074, "hypervisor_type": 3, "last_configuration_uuid": "0c4c8d0f-9faa-4358-4219-eec2a56df5ac“ } ←Cluster VIP ←仮想マシン個別UUID 仮想マシン個別のJSONがISOに内包されているため、仮想マシンごとにNGTのISOが必要

Slide 13

Slide 13 text

15 ちなみに NGTの疎通は、SSLと記載しましたとおり、証明書を利用して疎通を行っているので、暗号化さ れています。

Slide 14

Slide 14 text

16 NGAインストール時に配置される証明書 ルート証明書 クライアント証明書(VMごとに発行)

Slide 15

Slide 15 text

17 ここまで来ると、勘のいい人は、気づくはずです…

Slide 16

Slide 16 text

18 NGTの疑問… まさか、仮想マシンをクローンしたら、NGTの再インストールが 必要なんですか? (VDIでリフレッシュしたら、大変じゃないですか?) まさか、証明書の有効期限が切れると、証明書の再適用(再発行)が 必要なんですか? まさか、DMZに配置した仮想マシンもNGTのために、 管理ネットワークに配置されるCVMやCluster VIPとの疎通で ファイアーウォールのポートをあけないといけないんですか? (管理系とDMZで疎通が必須とかやばくないですか?)

Slide 17

Slide 17 text

19 鋭い質問に対するご回答 VDIなどクローンをした仮想マシンへのNGTアップデート クローンされた仮想マシンにNGTのISOをマウントし、ゲストOSを再起動するとNGAの サービス起動時に、ISOからJSONファイルを自動取得します。そのため、NGAの 再インストールは、不要です。この手順は、Prism Centralを介して、これらの作業を一括で 行うことが可能です。 (ただ、手間がかかることは事実なので、今後改善の予定らしい…) 証明書の更新について 現状、クライアント証明書の有効期限は、NGAのISO作成日から1000日となっています。 すなわち1000日を超えるとNGTの疎通が出来なくなります。 証明書の有効期限が近づいた仮想マシンは、Prism上でアラートが表示されるように なっています。 え? 証明書を入れ替えないといけないのか?それは、YESです。

Slide 18

Slide 18 text

20 鋭い質問に対するご回答 2074/TCPの疎通について この課題が、NGT3.0で改善されました。 AOS6.6以降とNGT3.0の組み合わせにおいては、IPレスでNGT疎通が可能となりました。 内部的には、COMを利用した疎通制御となります。 NGTは、いろいろ課題事項がありますが、今回のIPレス疎通のように、 着実にバージョンアップとともに課題事項を解決する機能を提供し続けています。

Slide 19

Slide 19 text

21 COMベースの疎通についてご紹介 NGT3.0について

Slide 20

Slide 20 text

22 AOS6.6からのNGT疎通 Cluster VIPとNGAの間で疎通されるのは継続で、IP接続が出来ない場合、COMを使って、 ハイパーバイザーを介して疎通が行われる。 ただし、COMベースの疎通は、AHVのみサポートされます。 Cluster VIP 2074/TCP で疎通 AHV AHV AHV COM 通信

Slide 21

Slide 21 text

23 仮想マシンの定義を見てみると AHVもしくは、CVMから 「virsh dumpxml 仮想マシンUUID」コマンドを実行

Slide 22

Slide 22 text

24 ハイパーバイザーから見ると 仮想マシンで定義された COMのマウント先がハイ パーバイザーの 「/var/lib/libvirt/qemu」 配下で作成されているの がわかります。

Slide 23

Slide 23 text

25 おそらく COM通信におけるNGTの疎通に関する資料がないため、現状正しいアーキテクチャーがわ かりませんが、ゲスト仮想マシンは、AHV上に仮想COMが作られていることを考えると、CVM がAHVを介してそれぞれ仮想マシンのCOMに対して命令を出しているものと思われます AHV AHV上の仮想COM(ファイル)に リダイレクト COM COM

Slide 24

Slide 24 text

26 COMポート NGTとの疎通ポートは、仮想マシン側は、COM2で固定されている模様。

Slide 25

Slide 25 text

27 ちなみに NGTに関係なく、現在はAHVで稼働する仮想マシンに対して、COMポートを作成することが できます。 vm.serial_port_create 仮想マシン名 index=COM番号 type=kServer COMポートを作成 vm.serial_port_delete 仮想マシン名 index =COM番号 COMポートを削除 今ドキュメントを見る限り、5.20でもこのコマンドは存在していたようです… ※COMポートのINDEXは、0〜3(COM1〜COM4まで)

Slide 26

Slide 26 text

28 COMポートをつくると

Slide 27

Slide 27 text

29 COMポートをつくると COMポートは、Linuxが正常に起動しない 場合などにコンソールとして利用できるよ うに用意されているようです。 COMポートを作った上で、Launch Conso leをクリックするとVNC以外にCOMポート の選択が可能となります。 参考: KB-4819 How-to capture the serial output for a Linux VM on AHV https://portal.nutanix.com/page/documents/kbs/details?targetId=kA00e000000Xe9HCAS

Slide 28

Slide 28 text

30 COM4まで作っているのですが… なぜか、Windowsでは、COM2までしか見え ない。 詳細は不明。

Slide 29

Slide 29 text

31 NGTにおけるIP通信とCOM通信の優先度 ドキュメントには、以下の記載があります。 参考:https://portal.nutanix.com/page/documents/details?targetId=Prism-Central-Guide-vpc_2022_9:man-nutanix-guest-tool-nga-vm-communication-r.html By default on AHV clusters, the NGA service communicates with the CVM over IP- less connections using the first serial port on the guest VM. If the CVM does not respond, NGA reverts to IP-based communication. デフォルトでは、NGTの通信は、COM通信がデフォルトとなり、COMでの疎通ができない 場合のみ、IPベースの疎通が有効になるようです。 仮想マシンが稼働しているホスト上のCVMが万が一ダウンした場合、COM接続での制御 が出来なくなるのでそういう場合のためにIPベースの疎通も取れるようにしておくことがお 勧めされていると考えられます。

Slide 30

Slide 30 text

32 COMなのかIP通信なのかの判断 NGAとの疎通が、COMで行われているのかIP で行われているのかは、Prism Centralで、確 認が可能です。 ただ、デフォルトでは表示されませんの、カスタ ムで表示列を設定する必要があります。

Slide 31

Slide 31 text

33 COMなのかIP通信なのかの判断

Slide 32

Slide 32 text

35 新しい機能が追加されたら、まずは強化テストから… いろいろ試してみる

Slide 33

Slide 33 text

36 COMデバイスを削除してみる デバイスをアンインストールして、COMデバイ スをなくしてみる。 Windowsを再起動すると、COM2が復活 してしまうため、デバイスを削除することが できない。 (なお、デバイスの無効化は、できない)

Slide 34

Slide 34 text

37 COM1ポートも作ってみる デフォルトがCOM2のため、問題なく NGTの疎通ができている

Slide 35

Slide 35 text

38 COM2を削除してみる COMポートを削除

Slide 36

Slide 36 text

39 COM2を削除してみる 再起動するとCOM2だけは復活します…

Slide 37

Slide 37 text

40 NGTのメッセージが見えるか? 仮想マシン上で稼働している、NGAのサービスを停止して、代わりにTeraTermでCOM2を待 ち受けていると、メッセージを受信できるのか?

Slide 38

Slide 38 text

41 acliでNGTをコールしてみる Acliで、NGTをコールした再起動コマンド「vm.guest_reboot」コマンドを実行してみる NGAから返答ができないので、NGTErrが表示される。

Slide 39

Slide 39 text

42 TeraTerm上では

Slide 40

Slide 40 text

43 なんらかのメッセージは受信できている なんだか、BASE64ぽいメッセージ…

Slide 41

Slide 41 text

44 NGAのソースを見てみると どうやらCOMでBASE64でのメッセージやりとりをしているぽい BASE64でDecodeされている

Slide 42

Slide 42 text

45 ただデコードしてみても テキスト文字にはならない…

Slide 43

Slide 43 text

46 メッセージのやり取り Nutanixのドキュメントには、以下の記載があります。 In IP-less communication, the NGA service in the guest VM starts periodic communication with the CVM over the first serial port on the guest VM. The NGA service communicates with the CVM by sending remote procedure calls (RPCs) over the serial port to the CVM. The communication link over the serial port becomes active when NGA receives a response from the CVM. If the CVM does not respond, NGA reverts to IP-based communication. RPCなのでおそらくバイナリデーターをBASE64にエンコードして送っているものと思われる。 参考:https://portal.nutanix.com/page/documents/details?targetId=Prism-Central-Guide-vpc_2022_9:man-nutanix-guest-tool-nga-vm-communication-r.html

Slide 44

Slide 44 text

47 まとめ

Slide 45

Slide 45 text

48 まとめ NGT3.0になり、IPレス通信ができるようになったことで、管理ネットワークと仮想マシンネット ワークの疎通を行う必要がなくなったことは、大きな進化であり、ネットワーク的なセキュリ ティの問題も解決することができるようになりました。 デフォルトが、シリアルポート通信になったことにより、ネットワーク側の設定変更などにより知 らない間にNGTの疎通ができなくなったということもなくなるため、NGTは、より使いやすい ツールになったと思います。(まだ課題はありますが…) NGTのインストールを、ネットワーク要件の関係からためらっていた方も、 この機会にNGTのインストールを検討してみてください

Slide 46

Slide 46 text

No content