Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nutanix Guest Tools 3.0のご紹介

Nutanix Guest Tools 3.0のご紹介

AOS6.6から実装されたNutanix Guest Tools(NGT3.0)の機能紹介や実装についてご紹介しています。

Shadowhat

March 08, 2023
Tweet

More Decks by Shadowhat

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. 5
    Nutanix Guest Toolsとは?

    View Slide

  4. 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アドレス変更やスクリプト実行を行います。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. 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が必要

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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














    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 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まで)

    View Slide

  26. 28
    COMポートをつくると

    View Slide

  27. 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

    View Slide

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

    View Slide

  29. 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ベースの疎通も取れるようにしておくことがお
    勧めされていると考えられます。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  39. 42
    TeraTerm上では

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  43. 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

    View Slide

  44. 47
    まとめ

    View Slide

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

    View Slide

  46. View Slide