VMware Cloud Foundation(VCF)5.2 で、SDDC Manager のバックアップをリストアしてみます。
今回の内容です。
- 環境の準備
- 1. バックアップ データの確認
- 2. SDDC Manager OVA の入手
- 3. リストア対象 SDDC Manager の停止
- 4. SDDC Manager のリストア
- 5. リストア後の確認
ドキュメントでは、下記のあたりです。
環境の準備
SDDC Manager のバックアップは、下記のように SFTP サーバーに取得ずみです。
作業用の Linux マシン(今回は SFTP サーバーの Photon OS 5.0)に tar と jq をインストールします。
root@vcf-bk-01 [ ~ ]# tdnf install tar jq -y
1. バックアップ データの確認
SFTP サーバーで、SDDC Manager のバックアップ データを確認してみます。
今回の作業ディレクトリです。
root@vcf-bk-01 [ ~ ]# pwd /root
今回使用するバックアップ データの tar.gz ファイルを、作業ディレクトリにコピーします。/backup/vcf は、SFTP サーバー構築時にバックアップ ファイルの保存先として用意したディレクトリです。
- vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02.tar.gz
root@vcf-bk-01 [ ~ ]# cp /backup/vcf/sddc-manager-backup/vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02.tar.gz .
バックアップ ファイルを、復号して展開します。ここで入力するパスワードは、SDDC Manager のバックアップ設定で指定したものです。
root@vcf-bk-01 [ ~ ]# OPENSSL_FIPS=1 openssl enc -d -aes-256-cbc -md sha256 -in vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02.tar.gz | tar -xz enter AES-256-CBC decryption password: *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.
バックアップ ファイルが展開されました。
root@vcf-bk-01 [ ~ ]# ls vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02 vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02.tar.gz
展開されたディレクトリには、下記のようなファイルが含まれています。
root@vcf-bk-01 [ ~ ]# ls vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02 appliancemanager_dns_configuration.json database appliancemanager_ntp_configuration.json metadata.json appliancemanager_ssh_knownHosts.json security_password_vault.json appliancemanager_trustedCertificates_configuration.json sos.log configuration
バックアップ情報の記載されたファイル(metadata.json)から、リストアする SDDC Manager の情報を確認しておきます。このファイルでは、SDDC Manager の OVA ファイルをダウンロードできる URL も確認できます。
root@vcf-bk-01 [ ~ ]# cat vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02/metadata.json { "lcm": "5.2.0-24108578", "domainmanager": "5.2.0-24108578", "operationsmanager": "5.2.0-24108578", "commonsvcs": "5.2.0-24108578", "ip": "192.168.70.10", "hostname": "vcf-m01-sddc-01.c.go-lab.jp", "sddc_manager_ova_location": "https://depot.vmware.com/PROD2/evo/vmw/sddcmanagerova/VCF-SDDC-Manager-Appliance-5.2.0.0-24108943.tar", "datacenter": "vcf-m01-dc01", "resource_pool": null, "cluster": "vcf-m01-cl01", "port_group": "vcf-m01-cl01-vds01-pg-vm-mgmt", "vsan_datastore": "vcf-m01-cl01-ds-vsan01", "netmask": "255.255.255.0", "gateway": "192.168.70.1", "domain": "c.go-lab.jp", "search_path": "c.go-lab.jp,", "fips_enabled": false }
2. SDDC Manager OVA の入手
Web ブラウザから metadata.json の sddc_manager_ova_location にある URL にアクセスすると認証画面が表示されるので、Broadcom Support Portal のアカウントでログインすると .tar ファイルのダウンロードが開始します。
ダウンロードした .tar ファイルには .ova ファイルが含まれており、下記のように tar コマンドで展開すると .ova ファイルを入手できます。
PS> tar kxf C:\work\VCF-SDDC-Manager-Appliance-5.2.0.0-24108943.tar
この OVA ファイルは、Broadcom Support Portal の VMware Cloud Foundation のページ「Drivers & Tools」タブでも、同一のものがダウンロードできます。
- VCF-SDDC-Manager-Appliance-5.2.0.0-24108943.ova
3. リストア対象 SDDC Manager の停止
vSphere Client で、リストア対象の既存の SDDC Manager 仮想マシンをシャットダウン(もしくはパワー オフ)しておきます。
今回は同名の仮想マシンとしてリストアするので、既存の SDDC Manager 仮想マシンは名前を変更しておきます。
4. SDDC Manager のリストア
SDDC Manager の OVA をデプロイして、バックアップデータをリストアします。
4-1. SDDC Manager のデプロイ
バックアップをリストアするため、新規の SDDC Manager をデプロイして、起動しておきます。OVA のデプロイ中に指定するパラメータには、事前確認した metadata.json との一致が必要なものがあります。
vSphere Client で、SDDC Manager の仮想マシンをデプロイするフォルダを右クリックして、「OVF テンプレートのデプロイ」をクリックします。
「ローカル ファイル」を選択して、SDDC Manager の .ova ファイルを選択してから「次へ」をクリックします。
- VCF-SDDC-Manager-Appliance-5.2.0.0-24108943.ova
仮想マシンの名前とフォルダを選択して、「次へ」をクリックします。
- 仮想マシン名: vcf-m01-sddc-01
- 仮想マシン フォルダ: vcf-m01-fd-mgmt
コンピューティング リソースの選択では、今回はクラスタを選択して「次へ」をクリックします。
- クラスタ: vcf-m01-c01
「詳細の確認」画面では、そのまま「次へ」をクリックします。
使用許諾契約書(EULA)では、「~同意します。」のチェックを ON にして「次へ」をクリックします。
ストレージの選択では、vSAN データストアを選択して「次へ」をクリックします。これは、metadata.json にある vsan_datastore と揃えます。
- 名前: vcf-m01-cl01-ds-vsan01
ポートグループを選択して、「次へ」をクリックします。これは、metadata.json の port_group と揃えます。
- ターゲット ネットワーク: vcf-m01-cl01-vds01-pg-vm-mgmt
「テンプレートのカスタマイズ」で、パラメータを入力して下にスクロールします。
- root ユーザーのパスワード
- vcf ユーザーのパスワード
パラメータを入力して、さらにスクロールします。
- Basic Auth User のパスワード(用途は不明・・・)
- backup ユーザーのパスワード
パラメータを入力して、さらにスクロールします。
- ローカル ユーザー(admin@local)のパスワード
- Host Name: vcf-m01-sddc-01.c.go-lab.jp ※metadata.json の hostname と揃える
- NTP Servers: 192.168.70.3
- Enable FIPS: チェック OFF のままにしておく
ネットワーク設定を入力して、「次へ」をクリックします。
- Network 1 IP Address: 192.168.70.10
- Network 1 Subnet Mask: 255.255.255.0
- Network Default Gateway: 192.168.70.1
- DNS Domain Name: c.go-lab.jp
- Domain Search Path: c.go-lab.jp
- Domain Name Servers: 192.168.70.3
設定を確認して、「完了」をクリックします。
デプロイが完了したら、「▶」ボタンなどで仮想マシンをパワー オンします。
すこし待つと、ホスト名(DNS 名)や IP アドレスが自動設定されます。
4-2. バックアップ データの配置
今回のリストアは、バックアップ データがある SFTP サーバーの Linux で作業します。
バックアップ データの tar.gz ファイルを、下記のように SDDC Manager の /tmp ディレクトリに転送します。SDDC Manager(192.168.70.10)に、vcf ユーザーで接続しています。
scp /backup/vcf/sddc-manager-backup/vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02.tar.gz vcf@192.168.70.10:/tmp/
実際に実行すると、下記のようになります。SSH ホスト キーが変更されたことによりエラーになってしまう場合は、アクセス元マシンの $HOME/.ssh/known_hosts ファイルから、古いSDDC Manager(192.168.70.10)のエントリを削除します。
root@vcf-bk-01 [ ~ ]# scp /backup/vcf/sddc-manager-backup/vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02.tar.gz vcf@192.168.70.10:/tmp/ The authenticity of host '192.168.70.10 (192.168.70.10)' can't be established. ECDSA key fingerprint is SHA256:/nvAr56kWsqO3KJ3+jjwtVDQQk+pyqYpuUyYF4ob4Sg. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ★yesを入力 Warning: Permanently added '192.168.70.10' (ECDSA) to the list of known hosts. Welcome to VMware Cloud Foundation Manager Virtual Appliance (vcf@192.168.70.10) Password: ★vcfユーザーのパスワードを入力 vcf-backup-vcf-m01-sddc-01-c-go-lab-jp-2024-09-20-15-34-02.tar.gz 100% 3054KB 71.4MB/s 00:00
4-3. リストアの実行
SFTP サーバーから、SDDC Manager の REST API でリストアを実行します。
下記のコマンドを実行して、SDDC Manager の認証トークンを取得して、変数(TOKEN)に格納しておきます。
TOKEN=`curl https://192.168.70.10/v1/tokens -k -X POST -H "Content-Type: application/json" -d '{"username": "admin@local","password": "VMware1!VMware1!"}' | awk -F "\"" '{ print $4}'`
下記のコマンドで確認すると、トークン(JWT 形式の長い文字列)が表示されるはずです。
root@vcf-bk-01 [ ~ ]# echo $TOKEN eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJjYWZhOTQ0ZC1k~
リストアのパラメータを記載した JSON ファイルを作成しておきます。今回は下記のように作成しました。
vcf-restore.json
リストアを実行します。最後の jq コマンドは戻されるタスク情報を見やすくするために追加しています。
curl https://192.168.70.10/v1/restores/tasks \ -k -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \ -d@./vcf-restore.json | \ jq -r .
実際に実行すると、下記のようにリストア処理のタスク情報が表示され、タスクの ID を確認できます。
root@vcf-bk-01 [ ~ ]# curl https://192.168.70.10/v1/restores/tasks -k -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d@./vcf-restore.json | jq -r . { "id": "5e70350d-e7b5-4221-866b-3a443ad440cb", "name": "SDDC Manager restore Operation", "status": "IN_PROGRESS", "isCancellable": false, "isRetryable": false }
タスクの進捗は、下記のように確認できます。「5e70350d-e7b5-4221-866b-3a443ad440cb」には、リストア開始時に確認したタスク ID を指定します。
curl https://192.168.70.10/v1/restores/tasks/5e70350d-e7b5-4221-866b-3a443ad440cb \ -k -s -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | \ jq -r '.| [.id, .name, .status ]'
実際に実行すると、下記のように表示されます。
root@vcf-bk-01 [ ~ ]# curl https://192.168.70.10/v1/restores/tasks/5e70350d-e7b5-4221-866b-3a443ad440cb \ -k -s -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | \ jq -r '.| [.id, .name, .status ]' [ "5e70350d-e7b5-4221-866b-3a443ad440cb", "SDDC Manager Restore Operation", "IN PROGRESS" ]
下記のように jq コマンドのクエリを指定すると、サブ タスクが確認できます。
curl https://192.168.70.10/v1/restores/tasks/5e70350d-e7b5-4221-866b-3a443ad440cb \ -k -s -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | \ jq -r '.subTasks[] | [.status, .creationTimestamp, .completionTimestamp, .name, .description] | @csv'
実際に、サブ タスクの情報を表示した例です。
root@vcf-bk-01 [ ~ ]# curl https://192.168.70.10/v1/restores/tasks/5e70350d-e7b5-4221-866b-3a443ad440cb \ -k -s -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | \ jq -r '.subTasks[] | [.status, .creationTimestamp, .completionTimestamp, .name, .description] | @csv' "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:00:09.127Z","ExtractSDDCManagerBackup","Decrypt and Extract Backup and Validate SDDC Manager for Restore operation" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:01:10.956Z","StopSDDCManagerServices","Stop all VCF SDDC Manager Services" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:01:11.674Z","RestoreSDDCManagerConfiguration","Restore SDDC Manager Configuration files" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:01:48.913Z","RestoreSDDCManagerDatabase","Restore SDDC Manager Database" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:04:53.958Z","StartSDDCManagerServices","Start and Validate all VCF SDDC Manager Services" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:05:50.399Z","RestoreSDDCSystemConfiguration","Restore SDDC Manager System Configuration" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:06:21.233Z","PostRestoreRemediation","Post Restore Remediation" "IN PROGRESS","2024-09-21T10:00:07.895Z","2024-09-21T10:06:21.304Z","PostRestoreNfsRefresh","Refresh NFS post restore" "PENDING","2024-09-21T10:00:07.895Z","2024-09-21T10:00:07.895Z","UnquiesceSystem","Unquiesce the system after Restore operation"
しばらく待ち、タスクのステータスが SUCCESSFUL になったら成功です。
root@vcf-bk-01 [ ~ ]# curl https://192.168.70.10/v1/restores/tasks/5e70350d-e7b5-4221-866b-3a443ad440cb \ -k -s -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | \ jq -r '.| [.id, .name, .status ]' [ "5e70350d-e7b5-4221-866b-3a443ad440cb", "SDDC Manager Restore Operation", "SUCCESSFUL" ]
サブ タスクも、下記のようにすべて SUCCESSFUL になります。
root@vcf-bk-01 [ ~ ]# curl https://192.168.70.10/v1/restores/tasks/5e70350d-e7b5-4221-866b-3a443ad440cb \ -k -s -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | \ jq -r '.subTasks[] | [.status, .creationTimestamp, .completionTimestamp, .name, .description] | @csv' "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:00:09.127Z","ExtractSDDCManagerBackup","Decrypt and Extract Backup and Validate SDDC Manager for Restore operation" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:01:10.956Z","StopSDDCManagerServices","Stop all VCF SDDC Manager Services" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:01:11.674Z","RestoreSDDCManagerConfiguration","Restore SDDC Manager Configuration files" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:01:48.913Z","RestoreSDDCManagerDatabase","Restore SDDC Manager Database" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:04:53.958Z","StartSDDCManagerServices","Start and Validate all VCF SDDC Manager Services" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:05:50.399Z","RestoreSDDCSystemConfiguration","Restore SDDC Manager System Configuration" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:06:21.233Z","PostRestoreRemediation","Post Restore Remediation" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:09:48.715Z","PostRestoreNfsRefresh","Refresh NFS post restore" "SUCCESSFUL","2024-09-21T10:00:07.895Z","2024-09-21T10:09:48.873Z","UnquiesceSystem","Unquiesce the system after Restore operation"
ちなみに、今回は jq でタスク情報の一部のみ表示していましたが、JSON の全容は下記のようになっています。
5. リストア後の確認
Web ブラウザから、SDDC Manager にアクセスしてみます。
すでにログインしている状態だと下記のように微妙な状態になるので、いったん画面右上からログアウトします。
SDDC Manager にアクセス / 再ログインしようとすると、vCenter Single Sign-On のログイン画面にリダイレクトされるので、管理者ユーザー(administrator@vsphere.local など)で再ログインします。
ダッシュボードにアクセスすると、ひとまずはリストアできていそうです。
バックアップ時に作成されていたワークロード ドメインも表示されています。
ワークロード ドメイン(Management Domain の vcf-m01)を開くとエラーが6件表示されていますが、これはそもそもバックアップ時点でライセンス キーが未入力(評価モード)だったためです。
「サービス」画面には、vSphere Client と NSX Manager へのリンクが表示されています。
ESXi ホストの情報も表示できています。
vSphere クラスタの情報も表示されています。
証明書も、バックアップ時のものが表示されています。
バックアップ先も、デフォルト設定から変更して SFTP サーバーが登録された(前回の投稿で設定した)状態になっています。
あとは、SDDC Manager に vcf ユーザーで SSH ログインして下記のコマンドを実行してヘルスチェックしておきます。(ただ、今回は事前にヘルスチェックしてなかったので微妙な感じに・・・なぜか RED あり)
vcf@vcf-m01-sddc-01 [ ~ ]$ sudo /opt/vmware/sddc-support/sos --health-check [sudo] password for vcf ★vcfユーザーのパスワードを入力
以上、SDDC Manager のバックアップをリストアしてみる話でした。