ラベル NGT の投稿を表示しています。 すべての投稿を表示
ラベル NGT の投稿を表示しています。 すべての投稿を表示

2025年5月3日土曜日

Prism Centralの活用その3(NGTの一括インストール)

NGTは、VSSを利用した静止点の取得やDisaster Recovery利用時のIPアドレス変更機能などに利用します。

AOS6.1以降では、NGTとNutanix Clusterの通信が、Cluster VIPと仮想マシンでの疎通の他にIP lessで、仮想マシンと内部COMポートで直接疎通することもできるようになりました。DMZなど管理系ネットワークと仮想マシンが直接通信することが難しい環境下においてもNGTの利用ができるようになったのは大きな改善点であると思います。

このNGTは、仮想マシンのマスターに1台だけインストールしクローンしてそのまま利用といったことができません。それは、仮想マシンごとに証明書が配置されその証明書を使ってNutanixクラスターと疎通をするという仕様が要因となります。

上記のような場合は、「Nutanix Guest Toolsを入れた仮想マシンのクローン方法」の記事を参考にしていただければと思います。

上記以外の方法として、一括で仮想マシンに対してNGTをインストールする方法もあります。

今回は、新規で展開された仮想マシンに、Prism Centralを経由し、NGTをサイレントでインストールする方法をご紹介します。

Windows OSを搭載した仮想マシンにNGTをサイレントインストールするには、WinRMにてSSLベースの接続が受け入れられるように設定する必要があります。

今回は、Windows OSの仮想マシンをベースに、NGTの一括サイレントインストール方法をご紹介いたします。


<Windows マシンでの事前設定>

管理者権限を持ったPowerShellにて以下を実行します

#証明書作成
$certificate = New-SelfSignedCertificate -DnsName $env:computername -CertStoreLocation cert:\LocalMachine\My

#WinRMにセット
winrm create winrm/config/Listener?Address=*+Transport=HTTPS "@{Hostname=`"$env:computername`";CertificateThumbprint=`"$($certificate.ThumbPrint)`"}"

cmd /c 'winrm set winrm/config/service/auth @{Basic="true"}'

#Windows Firewallの設定
netsh advfirewall firewall add rule name=\"WinRM-HTTPS\" dir=in localport=5986 protocol=TCP action=allow

(参考)Nutanix Guest Tools Requirements


上記初期設定が完了すれば、NGTのサイレントインストールが可能です。

ただし、WinRMを利用することから、この時点では、Prism CentralやCVMとNGTをインストールする仮想マシンの間でネットワークの疎通ができる環境が必要です。

では、Prism Centralから、NGTをインストールしたい仮想マシンを選択し、「Action」から「Guest Tools」→「Install NGT」を選択します。


Install NGT画面では、SSR(ファイルベースリストア)やVSS連携機能を有効化するかを選択します。(両方とも見チェックであとからの有効化でも問題ありません)

また、NGTをインストール後に仮想マシンを再起動するかのチェックもあります。


次に、OSのAdministrator、Linuxであればroot権限を持つユーザーとパスワードを入力します。


それぞれの仮想マシンでパスワードが異なる場合は、JSONファイルで個別で設定することも可能です。詳細は、「Download sample json」をもとに作成します。

これで、自動的にNGTがインストールされます。

サイレントインストールですから対象の仮想マシン画面上では、何も動きがないように見えますが、NGTのISOが仮想マシンのCDROMドライブにマウントされ、しばらくするとCドライブのProgram Files配下にNutanixフォルダが作成され、NGT関連のバイナリが配置されます。


再起動を有効にすると、以下のようなメッセージボックスが表示されOSが再起動されます。


あとは、Prism CentralのVMs画面から「NGT Communication Status=Active」で検索し、インストールが完了した仮想マシンが一覧表示されるかを確認します。項目をカスタマイズすれば、Communication Type(IPベースかCOMか)などを確認すること可能です。


Windowsの場合は、HTTPSでのアクセスができるように最初に証明書作成や割り当てを行う必要があるのがやや面倒ではありますが、マスターVMに設定をあらかじめやっておけばそこまで手間にはならないと思います。(もしくは、Sysprepで事前にスクリプトで動作させるという手もあります)


NGTは、必ずすべての環境においてインストールが必須ではないと考えられます。UPS連携やVSS連携、Disaster Recovery機能の利用など、NGTを必要とするケースにおいては、インストールを行っていただくことになりますが、それ以外のケースの場合、NGTが運用上不要なケースもあります。不要なものをあえてインストールする必要もありませんので、NGTの必要有無をまずは、確認していただくことが大切と思います。





 

2021年9月14日火曜日

Rocky Linux 8.4にNGTをインストールする方法

CentOSの運営方針が変わり、今後のLinuxディストリビューションをどれを使うか悩んでいる方もいらっしゃることかと思います。

2021年9月現在、RedHat Enterprise Linux(RHEL)互換として、いくつかのディストリビューションが既にリリースされています。

NutanixでAHV環境においては、AlmaLinux 8.3及びRocky Linux8.4をそれぞれ、AOS 5.10以降でサポートしています。

▼Rocky LinuxのCompatibility List


元々RHEL互換ですから、RHELをサポートしているAHVとしてはある意味当然の話ではありますが...。

さて、コンパチは通っている新生RHEL互換OSですが、Nutanix上でNGTをインストーすると失敗してしまいます。

python3 /run/media/$USER/NUTANIX_TOOLS/installer/linux/install_ngt.py

Platform type is: x86_64

Unsupported distribution : rocky linux

ERROR: Failed to install Nutanix Guest Tools. Check /tmp/ngt_install_log_20210913232117.txt  for logs.

このような形で、Rocky LinuxはサポートされていないとエラーになってしまうNGTをインストールすることが出来ません。

どうやら、RockyLinuxをNGTが知らないことで起きているようです。

今回はこの問題を解消し、NGTをインストールする方法をお伝えします。

まず、既存のISOに入っているファイルに変更を加えるため、ISOの中身の一部を、ホームディレクトリにコピーします。

mkdir -p /home/$USER/ngt/installer
cp -rf /run/media/$USER/NUTANIX_TOOLS/config /home/$USER/ngt
cp -rf /run/media/$USER/NUTANIX_TOOLS/config/installer/config /home/$USER/ngt/installer
cp -rf /run/media/$USER/NUTANIX_TOOLS/config/installer/linux /home/$USER/ngt/installer


続いて、コピーしたファイル「/home/$USER/ngt/installer/linux/src/installer_factory.py」のファイルを書き換えます。

33行目付近を以下のように書き換えます。

  distribution = distro.linux_distribution()[0].lower()
  if ("centos" in distribution or
      "oracle linux server" in distribution or
     
"rocky linux" in distribution or  #★この行を追加する
      "redhatenterpriseserver" in distribution or
      "red hat" in distribution):
    # CentOS and Oracle Linux derive from the Red Hat Enterprise Linux
    # and hence the same installer works for them. For Oracle Linux, the

保存した上で、コピーして編集したNGTバイナリをインストールします。

cd /home/$USER/ngt/installer/linux
python3 install_ngt.py

数分時間がかかりますが、以下のようにインストーラーが実行され無事にインストールが終了します。

[root@rklnx linux]# python3 /home/$USER/ngt/installer/linux/install_ngt.py
Platform type is: x86_64
Using Linux Installer for rocky linux linux distribution.
Setting up folders...
Installing NGT Guest Agent...
Setting up Nutanix Guest Tools - VM mobility drivers.
Successfully set up Nutanix Guest Tools - VM mobility drivers.
Installing Nutanix Guest Agent Service.
Successfully installed Nutanix Guest Agent Service.
Installing Nutanix Self Service Restore Service.
Successfully installed Nutanix Self Service Restore Service.
Creating desktop shortcuts...
Cleaning up temporary files...
Waiting for Nutanix Guest Agent Service to start...
Waiting for Nutanix Self Service Restore Service to start...
Nutanix Guest Agent Service successfully started in the background.
Nutanix Self Service Restore Service successfully started in the background.
[root@rklnx linux]# 


GUIを起動するときちんと、SSRのアイコンも出来ています。


最後に、ncliからNGTのステータスが正常化も確認しておきましょう。

ncli

<ncli> ngt list vm-names=RockyLinuxVM

    VM Id                     : 00056d28-59d3-7bbc-0000-000000014005::c8a9e9d2-c47e-4772-9947-4505b4287078
    VM Name                   : RockyLinuxVM
    NGT Enabled               : true
    Tools ISO Mounted         : false
    Vss Snapshot              : true
    File Level Restore        : false
    Communication Link Active : true ★

<ncli> 


きちんとNGTエージェントがCVMと疎通できていることが分かります。

Rocky Linuxは、RedHat Enterprise Linuxの互換OSですので、CentOSやOracle Linuxと同様のバイナリにてNGTは正常にインストールできます。

今後新しいRHEL互換OSを利用する場合は、この方法を試してみてください。


2020年12月17日木曜日

NGTによる仮想マシンの識別方法と証明書の更新方法について

前回は、仮想マシンクローン時の一括仮想マシンへのNGT設定情報アップデートの方法をお伝えしました。
そもそもこのngt_uuidは仮想マシン毎に個別で発行されますが、クローンする前の元の仮想マシンで利用したuuidに対してクローンした仮想マシンではNGTが有効にならない理由については触れていませんでした。もし発行されているuuidという識別だけであれば、クローン元の仮想マシンとクローン先の仮想マシンで同じuuidがngt_config.jsonに書き込まれているので、マスター仮想マシンがシャットダウンされていれば、クローンした仮想マシンでこのuuidは利用可能であると思いますが、実際にはこのクローンした仮想マシンでngtのステータスが有効になることはありません。前回の説明どうりNGTのISOをマウントし設定ファイルを更新する必要があります。

ではどのようにして仮想マシンそれぞれ固有の情報を識別しているかというと、それは仮想マシン毎に発行されるクライアント証明書に秘密があります。

Windowsの場合、ngt_config.jsonが配置されているディレクトリと同じ「C:\Program Files\Nutanix\config」配下に、「client-cert.pem」と「client-key.pem」ファイルがあることが分ります。これが各クライアント毎に生成される秘密鍵と証明書です。この証明書情報とその仮想マシンが疎通するIPアドレスから仮想マシンUUIDが識別され、Nutanix側で持っている仮想マシンUUIDに紐付く情報と一致しているかを見ています。

さてここで勘の良い方は気づいたと思います。

証明書ということは有効期限があります。証明書の有効期限が切れるとNutanixクラスターとNGTの間の疎通はできなくなります。

証明書の有効期限が近づいたら、またNGTのISOをマウントして仮想マシン再起動したらいいんでしょ?と思うかも知れませんが、現行AOS5.18のバージョンにおいては一度仮想マシンに対して証明書が発行されると、その情報が保持されたままとなり、この証明書情報を削除して再度生成するという手順を踏まないと有効期限を持った証明書が生成されません。

今回はこの証明書の更新方法について見ていきます。

わかりやすいように今回はWindows環境におけるNGT証明書の更新方法を紹介いたします。

Linuxなど別のOSや原則証明書更新方法の詳細は、KB:8120を参考にして頂くことをおすすめします。


<現行の証明書の日付の確認>

「C:\Program Files\Nutanix\config」の配下にある、「client-cert.pem」ファイルを確認します。このファイルをファイル名を「client-cert.pem.cer」に変更します。


拡張子を変更した、「clinet-cert,pem.cer」ファイルをダブルクリックすると証明書の日付を確認することが出来ます。


この証明書は、現時点で証明書の日付は切れていませんが、期限切れまで三ヶ月を切っています。今回はこの
確認後は、元のファイル名「client-cert.pem」にファイル名を戻しておきます。

<証明書の更新>

該当の仮想マシンが稼働するNutanixクラスターの任意のCVMにSSHで接続します。

仮想マシンのUUIDをncliを利用して取得します。(acliで取得しても構いませんが、vSphere環境のNutanixクラスターの場合「acli」が利用できませんのでここではncliを利用します。「ncli vm list name="仮想マシン名"」

ncli vm list name="Windows Server 2016 Template"
    Id                        : 00056d28-59d3-7bbc-0000-000000014005::20edafba-0644-4e57-a3cf-4abef2f69a5f
    Uuid                      : 20edafba-0644-4e57-a3cf-4abef2f69a5f  
    Name                      : Windows Server 2016 Template
    VM IP Addresses           : 192.168.1.91, 169.254.117.111
    Hypervisor Host Id        : 00056d28-59d3-7bbc-0000-000000014005::1591223829
    Hypervisor Host Uuid      : 92dad1eb-6562-4489-aca2-5e15ca07adc4
    Hypervisor Host Name      : NX-AHV-2
    Memory                    : 4 GiB (4,294,967,296 bytes)
    Virtual CPUs              : 2
    VDisk Count               : 1
    VDisks                    : 00056d28-59d3-7bbc-0000-000000014005::NFS:4:0:313
    Protection Domain         :
    Consistency Group         :
こちらのUUIDを元に、
「nutanix_guest_tools_cli delete_vm_tools_entity <UUID>」コマンドを実行し、証明書データーを削除します。

$nutanix_guest_tools_cli delete_vm_tools_entity 20edafba-0644-4e57-a3cf-4abef2f69a5f
2020-12-12 09:00:59,358Z:24911(0x7fa2ecb59a80):ZOO_INFO@log_env@960: Client environment:zookeeper.version=zookeeper C client 3.4.3
2020-12-12 09:00:59,359Z:24911(0x7fa2ecb59a80):ZOO_INFO@log_env@964: Client environment:host.name=ntnx-17sm6c100126-b-cvm
2020-12-12 09:00:59,359Z:24911(0x7fa2ecb59a80):ZOO_INFO@log_env@971: Client environment:os.name=Linux
2020-12-12 09:00:59,359Z:24911(0x7fa2ecb59a80):ZOO_INFO@log_env@972: Client environment:os.arch=3.10.0-1127.19.1.el7.nutanix.20201004.cvm.x86_64
2020-12-12 09:00:59,359Z:24911(0x7fa2ecb59a80):ZOO_INFO@log_env@973: Client environment:os.version=#1 SMP Sun Oct 4 12:55:45 UTC 2020
2020-12-12 09:00:59,359Z:24911(0x7fa2ecb59a80):ZOO_INFO@zookeeper_init@1008: Initiating client connection, host=zk3:9876,zk2:9876,zk1:9876 sessionTimeout=20000 watcher=0x556be811c6e0 sessionId=0 sessionPasswd=<null> context=0x7ffc5bf9bfc0 flags=0
2020-12-12 09:00:59,361Z:24911(0x7fa2ecace700):ZOO_INFO@zookeeper_interest@1954: Connecting to server 192.168.XX.YY:9876
2020-12-12 09:00:59,361Z:24911(0x7fa2ecace700):ZOO_INFO@zookeeper_interest@1991: Zookeeper handle state changed to ZOO_CONNECTING_STATE for socket [192.168.XX.YY:9876]
2020-12-12 09:00:59,361Z:24911(0x7fa2ecace700):ZOO_INFO@check_events@2191: initiated connection to server [192.168.XX.YY:9876]
2020-12-12 09:00:59,364Z:24911(0x7fa2ecace700):ZOO_INFO@check_events@2239: session establishment complete on server [192.168.XX.YY:9876], sessionId=0x1762179677dcf90, negotiated timeout=20000
2020-12-12 09:00:59,467Z:24911(0x7fa2ecb59a80):ZOO_INFO@zookeeper_close@3104: Closing zookeeper sessionId=0x1762179677dcf90 to [192.168.XX.YY:9876]
result_vec: kNoError

kNoErrorで終わっていれば、削除は無事に終了しています。

続いて、CVM上で「nutanix_guest_tools_cli create_vm_tools_entity <UUID>」コマンドを実行し、新しい証明書を作成します。

$ nutanix_guest_tools_cli create_vm_tools_entity 20edafba-0644-4e57-a3cf-4abef2f69a5f
2020-12-12 09:05:17,306Z:31766(0x7f33f5eaaa80):ZOO_INFO@log_env@960: Client environment:zookeeper.version=zookeeper C client 3.4.3
2020-12-12 09:05:17,306Z:31766(0x7f33f5eaaa80):ZOO_INFO@log_env@964: Client environment:host.name=ntnx-17sm6c100126-b-cvm
2020-12-12 09:05:17,306Z:31766(0x7f33f5eaaa80):ZOO_INFO@log_env@971: Client environment:os.name=Linux
2020-12-12 09:05:17,306Z:31766(0x7f33f5eaaa80):ZOO_INFO@log_env@972: Client environment:os.arch=3.10.0-1127.19.1.el7.nutanix.20201004.cvm.x86_64
2020-12-12 09:05:17,306Z:31766(0x7f33f5eaaa80):ZOO_INFO@log_env@973: Client environment:os.version=#1 SMP Sun Oct 4 12:55:45 UTC 2020
2020-12-12 09:05:17,306Z:31766(0x7f33f5eaaa80):ZOO_INFO@zookeeper_init@1008: Initiating client connection, host=zk3:9876,zk2:9876,zk1:9876 sessionTimeout=20000 watcher=0x565041b156e0 sessionId=0 sessionPasswd=<null> context=0x7fffe016f240 flags=0
2020-12-12 09:05:17,308Z:31766(0x7f33f5e1f700):ZOO_INFO@zookeeper_interest@1954: Connecting to server 192.168.XX.YY:9876
2020-12-12 09:05:17,309Z:31766(0x7f33f5e1f700):ZOO_INFO@zookeeper_interest@1991: Zookeeper handle state changed to ZOO_CONNECTING_STATE for socket [192.168.XX.YY:9876]
2020-12-12 09:05:17,309Z:31766(0x7f33f5e1f700):ZOO_INFO@check_events@2191: initiated connection to server [192.168.XX.YY:9876]
2020-12-12 09:05:17,320Z:31766(0x7f33f5e1f700):ZOO_INFO@check_events@2239: session establishment complete on server [192.168.XX.YY:9876], sessionId=0x1762179677dcf9f, negotiated timeout=20000
2020-12-12 09:05:17,423Z:31766(0x7f33f5eaaa80):ZOO_INFO@zookeeper_close@3104: Closing zookeeper sessionId=0x1762179677dcf9f to [192.168.XX.YY:9876]
result_vec: kNoError

同じくNoErrorで終わっていることを確認します。

続いて、Prism Elementから該当の仮想マシンのNGTのISOをマウントします。


なお、NGTのISOマウントはCVMから
「nutanix_guest_tools_cli mount_guest_tools <uuid> 」
で、マウントさせることも可能です。

「Nutanix Guest Tools Agent」サービスを先どうするか、仮想マシンを再起動します。

再起動後は、証明書の日付が新しくなっているか確認してましょう。
再度、「C:\Program Files\Nutanix\config」の配下にある、「client-cert.pem」ファイルを確認します。このファイルをファイル名を「client-cert.pem.cer」に変更します。

拡張子を変更した、「clinet-cert,pem.cer」ファイルをダブルクリックすると証明書の日付を確認することが出来ます。


変更したファイル名「client-cert.pem.cer」は、「client-cert.pem」に戻しておきましょう。(でないと証明書ファイルが読めずにNGTの疎通が出来なくなります)


あとは、NGTのコミュニケーションがただしく取れているかも確認しておきましょう。

$ ncli ngt get vm-id=20edafba-0644-4e57-a3cf-4abef2f69a5f
    VM Id                     : 00056d28-59d3-7bbc-0000-000000014005::20edafba-0644-4e57-a3cf-4abef2f69a5f
    VM Name                   : Windows Server 2016 Template
    NGT Enabled               : true
    Tools ISO Mounted         : true
    Vss Snapshot              : true
    File Level Restore        : false
    Communication Link Active : true

これで証明書の更新が正常に行い、NGTのコミュニケーションもNutanixクラスターと仮想マシン間で行えていることが分ります。

なお、証明書の有効期限が近づいた場合に何らかのアラートを表示する機能は、AOS5.18点ではまだ実装されていません。

今後のバージョンでこのあたりの仕様は変更になる見込みと聞いておりますので、今の間はNGTの証明書有効期限についてはすこし気に掛けて頂く必要があります。














2020年12月16日水曜日

Nutanix Guest Toolsを入れた仮想マシンのクローン方法

前回はNGTの構造について見ていきました。ngt_config.json内に仮想マシン毎に異なるUUIDが記載されるため、そのまま仮想マシンをクローンするとNGTがただしく疎通できないと言うことも紹介しましたが、クローンを行う際のNGTの取扱いについて紹介します。

マスターに仮想マシンにNGTをインストールを前もって行っておきます。

マスター仮想マシンか必要台数の仮想マシンをクローンします。

さて、ここまではよいのですが、ここからがちょっとしたコツが必要になってきます。

クローンした仮想マシンは、マスター仮想マシンのNGTの設定は一切引き継がれません。そのため、クローンした仮想マシンをPrismのMage Guest Toolsを見ると「Enable Nutanix Guest Tools」のチェックが外れていることが分ります。

いくらNGTが仮想マシンにインストールされていても、このチェックが外れていたらNGTは有効になりません。しかし、大量の仮想マシンに対してこのチェックを1台ずつ付与するのはかなりの手間がかかります。

ここで登場するのが、PrismCentralです。PrismCentralを利用すると複数の仮想マシンに対して一括でNGTの操作を行うことが出来ます。

本環境では2台のWindows Server 2019について動作確認をしていきます。
クローンした2台の仮想マシン「C:\Program Files\Nutanix\config\ngt_config.json」を確認すると2つの仮想マシンともngt_uuidが同じ値が記載されていることが分ります。


なお、選択する仮想マシンはパワーオンされている必要があります。
また、クローンした仮想マシンにそれぞれネットワークの設定が完了しており、Nutanixクラスターの仮想IPと疎通ができる環境状況にしておく必要があります。

仮想マシンを複数選択し、Actionから「Install NGT」をクリックします。


NGTをとおしてVSS連携やSSRを利用したい場合はチェックを入れます。
続いて、NGTインストール後のOS再起動をするかの確認は、「Skip Restart」を選択し、「Confirm & Enter Password」をクリックします。


続いてゲストOSのユーザー名とパスワードを入力する画面が出てきます。この画面では、ユーザーアカウントの情報は入力せず、「Skip and Mount」をクリックします。



すると、仮想マシンにNGTのISOがマウントされることが分ります。

ISOがマウントされたら、仮想マシンのOSを再起動します。
1台ずつ仮想マシンを再起動するのが面倒な場合は、Prism Centralを利用し全ての仮想マシンを一旦シャットダウンし再度パワーオンします。(なぜかCentralのメニューには仮想マシンの再起動が存在していません...)


CentralのSoft Shutdownメニューを選択し「Soft shutdown 2 slected VMs?」にダイアログにOKをクリックします。

PowerStateが、Offになったことを確認し、再度Actionボタンから「Power On」をクリックします。

起動してしばらくすると、NGTのISOが自動でアンマウントされます。

その後仮想マシンの「C:\Program Files\Nutanix\config\ngt_config.json」を確認すると、「ngt_uuid」がユニークなIDに変更されていることが分ります。


Prism Elementで該当の仮想マシンを「manage Guest Tools」確認すると、きちんとNGTが有効化されていることがわかります。

この動きはすでに、NGTがインストールされている環境には、「Nutanix Guest Agent」というサービスが起動しています。このサービスが起動時にNGTのISOがマウントされているかを確認し、マウントされている場合は、ISOから最新の設定情報を取得するという動きを行います。今回は仮想マシンの再起動で対応しましたが、「Nutanix Guest Agent」のサービスを再起動すれば同じようにngt_config.jsonが更新され自動的にNGT ISOがアンマウントされるしようとなります。

最後に、ncliでNGTの疎通ができているかを確認します。

$ ncli ngt get vm-id=4f10def8-c3c5-4757-b46e-5708f2ece29c
    VM Id                     : 00056d28-59d3-7bbc-0000-000000014005::4f10def8-c3c5-4757-b46e-5708f2ece29c
    VM Name                   : NGT-Windows Server 2019-Clone01
    NGT Enabled               : true
    Tools ISO Mounted         : false
    Vss Snapshot              : true
    File Level Restore        : false
    Communication Link Active : true
$ ncli ngt get vm-id=b650e0ff-1fbc-493d-aaf4-9c026a3c8baf
    VM Id                     : 00056d28-59d3-7bbc-0000-000000014005::b650e0ff-1fbc-493d-aaf4-9c026a3c8baf
    VM Name                   : NGT-Windows Server 2019-Clone02
    NGT Enabled               : true
    Tools ISO Mounted         : false
    Vss Snapshot              : true
    File Level Restore        : false
    Communication Link Active : true


これでクローンした仮想マシンに一括してNGTの展開と有効化ができます。

VDI環境等NGTを必要する場合に活用いただければと思います。





2020年12月15日火曜日

Nutanix Guest Toolsの構造

前回はNGTのインストール方法をご紹介しました。
今回は、NGTの構造について見ていきたいと思います。

まずはNGTの全体的な構造について見ていきましょう。

NGTをインストールしたWindowsの仮想マシンを例にして見ていきたいと思います。

NGTをインストールしたディレクトリの配下であるconfigディレクトリを見ていきます。
(C:\Program Files\Nutanix\config)

こちらに「ngt_config.json」というファイルがありますのでこちらの中を参照します。

中には以下のような情報が書き込まれています。

{"cluster_ip": "192.168.XXX.YYY", "ngt_uuid": "d4de685b-791a-4fbc-b916-6d5008bcbe2d", "ngt_version": "2.0.1", "port": 2074}

こちらのclustetr_ipには、NutanixクラスターのクラスターVIP(仮想IP)が記載されていると思います。また、ngt-uuidやport番号の記載もあります。
これを見ると分るとおり仮想マシンにインストールしたNGTは、クラスターVIPと疎通が出来ることが条件となります。
ネットワークの構成上位、特定の疎通以外は一切疎通を許されないネットワークに配置する場合(DMZなど)は、注意が必要です。

Nutanixクラスターと仮想マシンがNGT疎通できているかは、CVMから確認することが出来ます。
コマンドは、「ncli list vm-names="仮想マシン名”」となります。
今回は、「NGT-Windows Server 2019」という仮想マシン名でコマンドを実行してみたいと思います。

<ncli> ngt list vm-names="NGT-Windows Server 2019"
    VM Id                     : 00056d28-59d3-7bbc-0000-000000014005::f993eb3c-f0cb-42fe-bc13-c7d75106ed3e
    VM Name                   : NGT-Windows Server 2019
    NGT Enabled               : true
    Tools ISO Mounted         : false
    Vss Snapshot              : true
    File Level Restore        : false
    Communication Link Active : true 

こちらを見ると「Communication Link Active」というのがあり、これがtrueであると、Nutanixクラスターと仮想マシンにインストールされてたNGTが疎通できているかが確認できます。

ポート番号からも分るように、NGTの通信は、クラスターVIPと仮想マシンが疎通は、「2074/TCP」を利用します。さらに、ゲストOSでWindowsOSを利用する場合「23578/TCP」を利用します。NGTを利用する場合、Firewall等がクラスターと仮想マシンの間にある場合は、この2つのポートを双方向であけるようにしましょう。


NGTとの疎通が行われるということは常駐するプロセスがあるということです。
Windowsの場合、NGTをインストールすると2つのサービスが登録され自動起動に設定されます。


Linuxの場合は、「ngt_guest_agent.service」と「ngt_self_service_restore.service」の2つのサービスが登録され、自動起動の設定が行われます。

NGTを利用する場合、Nutanix Guest Tools Agentは実行されている必要があります。
Self Service Restore(SSR)のサービスは利用しないのであれば停止していても問題ありません。


さて、先程の仮想マシンに展開された「ngt_config.json」の確認に戻りましょう。
もう一つ気になることがあります。それは、「ngt_uuid」というユニークなIDの存在です。これは想像できるとおり、仮想マシンUUIDとは別に、NGTをインストールした仮想マシンにはそれぞれユニークなNGTのUUIDが付与されます。

さて、ここで勘のいい人は気づいたはずです。

NGTをインストールしたマスターの仮想マシンをそのままクローンしてしまうと、後からハマってしまうことになりますので、注意が必要です。

これだと、大量の仮想マシンを展開する場合かなり大変になってしまいますので、そこは楽にNGTを展開する方法があります。方法については別の機会に紹介致します。


ではそもそもこの「ngt_config.json」は、どのように生成されるのでしょうか?

NGTのISOを確認すると、マウントしたISOに「ngt_config.json」ファイルが存在しており、既にngt_uuidも記載されていることがわかります。


この使用を考えると、仮想マシン毎にNGTのイメージがあるのか?と考えてしまうと思います。正解はYESです。

NGTのISOをPrismからマウントすると、その仮想マシンUUID毎に、設定したjsonファイルを包括したNGTのISOが作成されます。
作成されたISOは、その仮想マシンが存在するストレージコンテナの中に「.ngt」というディレクトリがあり、そのディレクトリ内に仮想マシンUUID毎にNGTのISOが保存されています。

▼ストレージコンテナの中にある「.ngt」の中


▼ディレクトリの中には、マウント時に生成されたISOが存在しています。


これから見ると分るようにNGTのISOは、仮想マシン毎に生成されますので、1台の仮想マシンでNGTのバイナリをファイルサーバー等の共有フォルダに置いて全台同じ物をインストールするとngt_uuidが同じになってしまいただしく動作しませんので1台ずつのマウントが必要となります。こちらの対策も、仮想マシンのクローンした際の対応と同じ方法で対照できますので、また改めて対策方法を説明いたします。


今回はNGTの構造について見ていきました。
NGTは、Nutanixにおける仮想マシン運用を楽にするものでありますが、NGTの構造を知っておかないと思わぬトラブルにハマることがありますので、注意が必要です。





2020年12月14日月曜日

NGTのインストール方法について

前回はNGTの必要性(有用性)についてご紹介いたしました。
では、今回は具体的にNGTのインストール方法について紹介します。

NGTは、Prism Elementからのインストール方法とPrism Centralからの一括インストール方法がありますが、今回はすぐにインストールできるという観点から、Prism Elementを利用したインストール方法をご紹介します。

<インストールにおける共通操作>

NGTをインストールしたい仮想マシンをPrismの仮想マシン画面で選択し、「Manage Guest Tools」をクリックします。


ダイアログが表示されますので、「Enable Nutanix Guest Tools」にチェックを入れ、「Mount Nutanix Guest Tools」にチェックを入れ、Submitをクリックします。


仮想マシンのCDROMドライブにNGTのISOがマウントされていることを確認し、CDROMドライブをダブルクリックします。
以前のバージョンでは、IDEバスのCDROMドライブが存在しないとNGTのISOがマウントできませんでしたが、AOS5.18.1.2で確認をする限り、SATAドライブのCDROMドライブであってもNGTのISOはマウント可能となっています。

<Windows OSにおけるインストール>


今回は、Windows Server 2019をベースにご説明いたしますが、基本どのOSも同じ手順となります。MSIのインストーラーが起動します。EULAを確認し、「Install」をクリックし、インストールを実行します。

インストールを行います。OSによっては、Driverのインストール許可画面が表示されますので、許可を実行します。


インストールはおよそ3分~5分程度で終了します。なお、NGTのインストール後の再起動は不要です。再起動は不要です。


なお、サイレントインストールも可能です。サイレントインストールの場合、以下のコマンドを実行します。

drive:\> setup.exe /quiet ACCEPTEULA=yes /norestart


<Linux OSにおけるインストールについて>

今回は、CentOS 8.2をベースに説明を行います。

CentOS8.2の場合は、ISOをマウントすると自動マウントされます。
NGTは、Pythonを利用しますが、Pythonがインストールされていない環境の場合、「setup_python.sh」を実行、既にPythonがインストール済みの場合は、「install_ngt.py」を実行します。

# cd /run/media/root/NUTANIX_TOOLS/installer/linux
# ./setup_python.sh
Using Linux Installer for centos linux linux distribution.
Setting up folders...
Installing NGT Guest Agent...
Setting up Nutanix Guest Tools - VM mobility drivers.
Successfully set up Nutanix Guest Tools - VM mobility drivers.
Installing Nutanix Guest Agent Service.
Successfully installed Nutanix Guest Agent Service.
Installing Nutanix Self Service Restore Service.
Successfully installed Nutanix Self Service Restore Service.
Creating desktop shortcuts...
Cleaning up temporary files...
Waiting for Nutanix Guest Agent Service to start...
Waiting for Nutanix Self Service Restore Service to start...
Nutanix Guest Agent Service successfully started in the background.
Nutanix Self Service Restore Service successfully started in the background.
インストールはこれだけで終了です。

NGTは、「/usr/local/nutanix/ngt」配下にインストールされます。

アンインストールの方法

<Windowsの場合 >

プログラムと機能の画面から「Nutanix Guerrst Tools」を選択しアンインストールします。
なお、この際Nutanix VM Mobilityは、AHV環境の場合、これをアンインストールするとVirtI/O Driverが消えるため、OSが起動できなくなりますので、AHV環境の場合は絶対にアンインストールしないでください。

<Linuxの場合>

Linuxの場合は、NGTの中でインストールされたPythonを元に、アンインストールプログラム「/usr/local/nutanix/ngt/python/bin/uninstall_ngt.py」を実行します。

# /usr/local/nutanix/ngt/python36/bin/python3 /usr/local/nutanix/ngt/python/bin/uninstall_ngt.py
This script will uninstall NGT Guest Agent. Do you want to proceed? (Y/[N]): y

Uninstalling Nutanix Guest Tools.
Stopping and removing Nutanix Self Service Restore Service.
Stopping and removing Nutanix Guest Agent Service.
Successfully uninstalled Nutanix Guest Tools.

NGTのインストール・アンインストールはいずれも手軽にできます。

次回は、NGTの構造を見ていきたいと思います。




2020年12月13日日曜日

NutanixにおけるNGTの役割

Nutanix上に仮想マシンを展開する場合、必要に応じてNGTのインストールを行う必要があります。では、このNGTはどのような場合に利用するのでしょうか?NGTを入れるメリットはどういったことにあるのでしょうか。

今回は、NGTの役割や必要有無について見ていきたいと思います。

NGTは、Nutanix Guest Toolsの略であり、通称NGTと呼ばれているツールです。
VMware環境においては、VMware Toolsのインストールが存在し、VMware Toolsは、仮想マシンに対してドライバーやハイパーバイザーとの疎通を行う各種ツールを提供し、実質上仮想マシンのインストールがほぼ必須になっていますが、Nutanix Guest Toolsは、VMware Toolsとは多少趣が異なる側面があります。

NGTの導入メリット

・Self Service Restoreの利用

Self Service Restore(SSR)は、AOS Proライセンス以上で提供される機能です。仮想マシン上のデーターをNutanixで取得したストレージスナップショットを仮想マシンでマウントし、任意のファイルをリストアすることが出来ます。SSRは、WebベースのGUIとCLIが提供されます。SSRは、WindowsとLinuxがサポートされています。

・Windows用のVSSリクエスター及びハードウェアプロバイダー

NutanixのProtection Domainを利用して、VSSキックを行い仮想マシンの静止点を取得することが出来ます。

・Linux用の整合性スナップショット取得

Windowsと違いLinuxにはVSSのような静止点取得の機能が無いため、スクリプトベースで静止点を取得することができます。

・Nutanix VM Mobility

こちらは、VM Mobilityというとわかりにくく聞こえますが、ESXiやHyper-VからAHVへ仮想マシンをマイグレーションできるようにするためにAHV用のデバイスドライバーを提供します。

・AHVにおけるシャットダウンのアシスト機能

AHV環境で稼動するWindowsゲストマシンに対して、シャットダウン機能をアシストします。NGTが無くてもWindowsゲストマシンのシャットダウンは行えますが、より確実にシャットダウンを行うための機能が備わっています。一部UPSソフトウェアとの連携においては、NGTがインストールされていないと社とダウンが実行されないケースもあります。

・SysprepやLeapでのスクリプト起動

Sysprep時の各種パラメーターファイルの受け渡しや、Leapを利用した際のスクリプト実行などに利用されます。


これらがNGTの利用用途です。一方でこれらの機能を利用しない場合は、NGTを無理にインストールする必要はありません。(がインストールしておくことが推奨ではありますが)


では、NGTをインストール際の注意事項等を確認しておきましょう。

NGTを導入する際の条件について

  • WindowsゲストOSの場合、64Bit OSのみがサポートされます。
  • サポートされるWindows ゲストOSは、Windows Server 2008 R2以降となります
  • 仮想マシンとCVMの間で、2047/TCPの疎通が出来ること
  • VSS連携を利用する場合は、CVMと仮想マシンの間で23578/TCPの疎通が出来ること
  • Linux版の場合、/usr/local配下にインストールされます。あらかじめ書き込み・実行権限が/usr/local配下に必要です
  • ESXi環境の場合、VMware Toolsと同居インストールが可能


Volume Groupを仮想マシンに割り付けている場合も、NGTを導入することで同様に静止点取得の対象とすることが出来ます。この場合、マウントされているiSCSIボリュームは5分おきにNGTが情報を再取得を行います。そんためiSCSI Volumeをマウント↓直後ですと、マウントしているボリュームの静止点が取れない可能性があります。その場合は、ゲストOSのNGTサービスを再起動する必要があります。


次回は、NGTのインストール方法を確認したいと思います。




2018年7月1日日曜日

NutanixのVSS連携バックアップについて

Nutanixには、バックアップ機能が無いと思われている方もいますが、Nutanixはストレージベースのスナップショットを取得できる機能を保有しています。
装置内のスナップショットだけではバックアップにならないと思われる方もいるかと思いますが、Nutanixはスナップショットのレプリケーションが出来ますので、バックアップとして利用することが出来ます。

このスナップショット取得機能には、WindowsのVSSと連携して静止点を取得する機能があります。今回はこのVSS連携についてお話をしたいと思います。

VSSはご存じの通りWindows Server 2003以降に搭載された、静止点を取得するための仕組みです。これをNutanixからコールすることにより、アプリケーションの書き込みなどを一時的に止めて静止点(データーの書き込み途中といった状況が存在しないようにする)を作りその間にスナップショットを取得します。
これにより、リストアした際にデーターが壊れていたといったことを防ぐことが出来ます。

vSphereとバックアップソフトウェアの場合、vShereのスナップショット機能を利用して、静止点を取得しますが、Nutanixはマルチハイパーバイザー対応機器ですので、特定のハイパーバイザーに依存せずこのVSS連携によるスナップショット取得が出来るように独自の実装がなされています。

まず、VSS連携を利用するためには、
  • 仮想マシンにNutanix Guest Toolsをインストール
  • Nutanix Cluster VIPと2074/TCPで通信可能であること
が条件となります。
また、ABSを利用して外部からiSCSIのボリュームをマウントした物理マシンに対するiSCSIボリュームの静止点取得は出来ません。(Nutanix上で動作している仮想マシンかVolume Serviceを利用してiSCSIマウントしたボリュームは静止点の取得が可能です)

では、早速このVSSキックまでの動きを見てみたいと思います。
今回はAHVの環境(AOS5.6.1)に、Windows Server 2016をインストールしその上でSQL Server 2017 Standardが稼働する環境を用意しました。

1.VSSで静止点を取得したい仮想マシンにNGTをインストールします。
インストールの方法は簡単です。Prism画面からISOをマウントしてインストーラーに従います。少々古いですがインストール方法はこちらを参照してください。

インストールが終わったら、Windowsの仮想マシンにサービスが入ったことを確認します。(Self Service RestoreとGuest Tools Agentがインストールされている)


2.Nutanix Prism側で仮想マシンにVSSサービスを設定
Prismから、VSSを遊行したいか総マシンを選択し、Manage Guest Toolsをクリックします。


Enable Nutanix Guest Toolsと「Volume Snapshot Service / Application Consistent Snapshot(VSS)」にチェックを入れます。

これにより、VSS機能が利用できる状態となりました。

3.DataProtectionで、VSSキックを設定。
DataProtectionからいつものように仮想マシンを登録します。
仮想マシンを登録する際に「Use application consistent snapshot」にチェックを入れて「Protect Selected Entities」をクリックします。

この場合、仮想マシン名の後ろに「●」が表示されます。この●にマウスポインターを当てると、「The group targets application consistent snapshots.」と表示されます。

4.あとはスケジュールをまつだけ...
まつだけなのですが、実際に動作した場合に正しく動作しているかを確認してみましょう。

Nutanix側から7/1 10:39にスナップショット取得イベントを走らせました。
そのタイミングのイベントログを見ていると、Nutanix VSS Providerが呼ばれたことが記録されています。




10時39分31秒~44秒のあいだにVSSが動作したことがわかります。
PrismのDataProtection画面からスナップショットの時間を見てみると「10時39分44秒」であることがわかりますので、静止点を取得した後に、VSS Providerが停止したことがわかります。



では、SQL Serverのログも見てみましょう。
SQL Management Studioでログを見てみると、VSS経由でI/O処理が一時的に中断状態になったことが記録されています。

このログを見ると、10:39:42の時点で、I/Oの処理中断は解除され、バックアップに成功したと記録が出ています。これはこの時点での静止点取得が出来たことを表しています。

Nutanixのドキュメントには、VSSに対応しているという記載はSQL Server 2012までしか記載がありませんが、VSSの動作にきちんと対応していれば、基本問題なく動作することがこの事からもよくわかるかと思います。

VSS連携は、バックアップにおける基本機能ですが、このVSSを呼び静止点を取得できるバックアップ機能をNutanixは標準機能で装備しているので、別にバックアップソフトウェアを購入することもなくきちんとしたバックアップが出来るのは大きな魅力だと思います。





2017年3月25日土曜日

Nutanix Guest Toolsのメディアがマウントされない場合

Nutanix Guest Toolsは、Nutanix上で仮想マシンを動作させる場合、入れておいたほうが便利な機能が詰まったものです。
Nutanix Guest Toolsは、Nutanix上から、ISO Media Mountの機能を利用して仮想マシンの仮想CDROMドライブにマウントされます。

このメディアマウント機能ですが、仮想マシンの仮想CDROMドライブになにもメディアがマウントされていないにもかかわらず、「Guest Tools cannot be mounted as there not enough empty CD-ROM(s)」とメッセージが表示されメディアがマウントできないことがあります。

(参考)メディアマウント時のエラー

AOS5.0の場合、vSphereであっても、vCenter Serverとの登録を行っている場合、仮想マシンの構成を見ることができます。
ここで見ると、Disksの中にCDROMドライブが存在しないことがわかります。

(参考)仮想マシンのドライブを確認


ただ、仮想マシンにはCDROMドライブが搭載されていることがわかります。

(参考)仮想マシンから見たCDROMデバイス

さて、この現象に遭遇した際の対処法ですが、CDROMドライブがSATAで構成されているときにこの症状が出るようです。

vSphere Web Clientから仮想マシンを編集で開き、CDROMドライブの仮想デバイスノードを「SATA」から「IDE」に変更します。(仮想マシンはパワーオフしておく必要があります)

(参考)SATAからIDEへ変更する箇所

IDEに変更する際、チャネルを0:1や1:0など好きなチャネルに設定していただいてかまいません。(昔からながらで考えるとIDEディスクは、チャネル0:0で、CDROMドライブは1:0か1:1という時代もありましたが・・・)今回はIDEチャネルを0:1で設定します。

そのうえで、再度PRISMの仮想マシンメニューから、「Manage Guest Tools」をクリックし、「Mount Nutanix Guest Tools」のチェックをクリックしてもエラーメッセージが表示されません。

NutanixからISOをマウントする際に利用できる仮想CDROMドライブが、IDEでないとNGTはマウントできないということのようです。(AOS5.0.0.2にて確認)

もし、「Guest Tools cannot be mounted as there not enough empty CD-ROM(s)」
というメッセージに遭遇したら、他のメディアがマウントマウントされていないかの確認と、仮想CDROMドライブのバスがIDEになっているかを確認しましょう。