Help us understand the problem. What is going on with this article?

VMware NSX Edgeのバックアップ

More than 3 years have passed since last update.

この記事は個人の見解に基づくものです。

VMware NSXのバックアップの必要性

NSX環境に設定した情報は、vCenterサーバには保管されません。
よって、リストアを考えた場合、vCenterサーバのバックアップ(SQLデータのダンプ、OSイメージなど)を取得するだけではダメで、NSXのバックアップを別途取得する必要があります。

VMware NSXのバックアップ方法

NSXのバックアップは、NSX ManagerのWebインターフェイス(NSX Manager Virtual Appliance Management)に用意されているメニューで設定できます。
バックアップデータをFTP/SFTPで転送するという方式になっているので、転送先のIPアドレスや認証用のアカウントを設定するだけで完了です。(vCenterサーバにIISのFTPサーバを立てておき、そこに転送するのが手っ取り早いです)

WS000001.JPG

上記のバックアップは、NSXのコンポーネント単位ではなく、NSX環境の全体的なバックアップです。
このため、例えばEdgeの設定だけをリストアしたい場合であっても、NSX環境全体をリストアすることになります。
KBにも次のように記載されており、Edgeだけを個別でバックアップする方法は紹介されていません。

https://kb.vmware.com/kb/2145635

すべての NSX Edge 設定(論理ルータおよび Edge Services Gateway)は、NSX Manager データ バックアップの一環としてバックアップされます。

しかし、Edgeの設定情報をバックアップする方法が存在します。

NSX Edgeの個別バックアップ

Edgeの設定情報は、NSX Managerで提供されているREST APIを介して取得することができます。
※REST APIの実行方法ついては、最後で触れます

GET https://<nsx-manager>/api/4.0/edges/<edge-id>

WS000003.JPG

取得した情報(XMLデータ)をファイルとして保存すれば、バックアップの代わりになります。

NSX Edgeのリストア

Edgeのリストアは、バックアップしたXMLデータをREST APIを介して送信することで実施できます。

POST https://<nsx-manager>/api/4.0/edges/

※リストアに際して、事前に以下を実施しておく必要があります

  • リストアするEdgeの定義をNSX上から削除する
  • XMLデータ内の <id>~</id> と <cliSettings>~</cliSettings> の行を削除する

REST APIの実行方法

REST APIの実行については、GUIとCUIの2通りのシーンが考えられます。

GUI

リストアは、任意のタイミングに手動で実行したいので、操作性の良いGUIの使用が想定されます。
GUIの場合は、ブラウザのアドオンで多数提供されているので、好きなものを使用すると良いでしょう。(上の図ではRESTClientを使用しています)

CUI

バックアップは、cronやタスクスケジューラに登録して自動実行したいので、CUIの使用が想定されます。
Linuxであればcurl、WindowsであればInvoke-WebRequest(PowerShell)などが該当します。

最後に、Invoke-WebRequestを使ったサンプルコードを紹介します。

$user = "<user>"
$pass = "<pass>"
$uri  = "https://<nsx-manager>/api/4.0/edges/<edge-id>"
$date = Get-Date -Format "yyyyMMdd"
$outfile = "C:\backup\edge_$date.xml"

$auth = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($user + ":" + $pass))
$header = @{"Authorization"="Basic $auth"}

add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@

[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

Invoke-WebRequest -Uri $uri -Headers $header -OutFile $outfile

Basic認証と自己証明書のエラー回避を盛り込んでいます。
PowerShellのスクリプトとして保存し、タスクスケジューラに登録すれば、日次でバックアップを取得できます。(vCenterサーバで実行することを想定しています)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away