一方のアーカイブは動作する Pritunl のデプロイを復元し、もう一方はその画像だけを復元します。クライアントプロファイル、ホスト設定のコピー、状態ディレクトリの tarball はどれもバックアップに見えますが、どれも単独では Pritunl が管理する組織、ユーザー、サーバー定義を取り戻せません。違いは所有権です。状態の一部はデータベースに属し、一部はホストに属し、一部は再生成された出力です。間違った層を選ぶと、復元は起動して待ち受けても何も知らないサーバーを生み出します。この比較は三つの層を分け、保持するアーカイブを復旧中の障害に合わせます。

二つのオブジェクトはバックアップに見え、サービスを復元するのは一つだけ

ダウンロードしたクライアントプロファイルには証明書、鍵、エンドポイントが含まれます。それはその一台のデバイスには完全ですが、デプロイの記録としては役に立ちません。組織も無効化されたユーザーもサーバールートも管理アカウントも含まないからです。プロファイルのフォルダーから復元すると、何に対しても認証できないクライアントが得られます。

ホスト設定のコピーも同じくらい部分的です。/etc/pritunl.conf はデータベースへの到達方法を含むホストレベルの設定を保持しますが、VPN オブジェクト自体は含みません。

データベースが所有するものとホストが所有するもの

Pritunl はサーバー定義、ユーザー、組織、鍵を MongoDB に保持します。そのデータベースが権威あるコントロールプレーンであり、ディスク上に生成されたすべての OpenVPN ファイルはそこから派生した出力です。生成ファイルを直接変更しても次の再生成まで残り、その後消えるため、実行時ファイルの編集は永続的な修正ではありません。同じ規則は有効なルートとインターフェースにも当てはまります。それらはコントロールプレーンが生成したものを記述し、生成すべきものを記述するのではありません。

ホストはより小さく、しかし移転できない値の集合を提供します。その一つが /var/lib/pritunl/pritunl.uuid、その特定ノードの識別子です。

その識別子がクラスターで最も重要です。代替ホストはアクティブノードの UUID の複製ではなく独自の登録を必要とし、そうでなければ二つは同じ識別子を争います。各ホスト、その UUID、そしてそれが指すデータベースの間の対応を記録してください。単一のデータベースダンプでは、どのホスト設定がどのマシンに属していたかを記述できないからです。ソフトウェアのバージョンと公開エンドポイント名も同じ記録に属します。

一貫したダンプを取り、ディレクトリコピーは取らない

サービスが書き込んでいる間に MongoDB のデータディレクトリをコピーすると、使用可能なデータベースを構成しない可能性のあるファイルが生まれます。代わりにデータベースがサポートするダンプ経路を使い、実際に持っているトポロジーに対して実行してください:

mongodump --uri="mongodb://127.0.0.1:27017/pritunl" --out=/var/backups/pritunl/db
sudo tar czf /var/backups/pritunl/host.tgz /etc/pritunl.conf /var/lib/pritunl/pritunl.uuid

単独ホストはその単純な形に耐えます。レプリカセットは一貫した時点を必要とし、oplog ベースのダンプには通常のダンプにない要件があります。サポートされる手順は MongoDB のバージョンとトポロジーに依存するため、データディレクトリの存在から推測しないでください。ホスト層をダンプの隣に、同じ実行で、同じタイムスタンプでアーカイブしてください。

必要になる前に復元を練習する

誰も復元したことのないバックアップは仮説です。サービスを分離されたネットワークに構築し、ダンプを復元し、ホストのファイルを戻してください:

mongorestore --uri="mongodb://127.0.0.1:27017" --drop /var/backups/pritunl/db
sudo tar xzf /var/backups/pritunl/host.tgz -C /

次にプロセスではなくオブジェクトを検証します。ログインし、組織とユーザーが存在することを確認し、認識できるサーバー定義に対してテストクライアントを一つ起動します。アドレスと識別子が意図的なものになるまで、復元したホストが本番エンドポイントを広告したり実際の接続を受け入れたりしないようにしてください。ここで、アーカイブには故障したマシンだけにあった資格情報が必要だと分かるので、復旧用の資格情報を独立した場所に保管してください。たった今失ったホストに依存する復元は、復元計画ではありません。

最後に、古いスナップショットは古い決定を復元することを忘れないでください。管理者がダンプの取得後に識別子を無効化していた場合、復元はそれを再び有効にします。復旧後の照合は手順に属し、後付けの考えには属しません。

関連記事