このページの内容
バックアップと復元
このトピックでは、Paragon Automationで使用できるバックアップおよびリストア機能について説明します。Paragon AutomationはGUIベースのアプリケーションですが、バックアップと復元の操作はParagon Insights cMGD CLIから管理されます。Postgresは、マイクロサービス用の主要な永続ストレージデータベースです。バックアップファイルは、クラスターノード上のローカル永続ボリュームに保存されます。バックアップ手順は、マイクロサービスの実行中に実行でき、クラスターの動作には影響しません。ただし、復元手順では、マイクロサービスが停止され、データベースが復元されるまでクラスターは機能しません。
現在、バックアップおよび復元するアプリケーションをカスタム選択することはできません。バックアップと復元できるのは、 表1に示すように、各コンポーネントに対して事前に構成された固定されたアプリケーションと管理設定のセットのみです。
| デバイス |
アラート/アラーム設定 |
管理グループ |
| トピック |
プロット設定 |
ユーザー定義のアクションと機能 |
| プレイブック |
概要プロファイル |
監査ログ |
| デバイスグループ |
取り込み設定 |
トポロジーフィルター設定 |
| ネットワークグループ |
SNMPプロキシの設定 |
パスファインダー設定 |
| 通知設定 |
IAM設定 |
LSP ポリシーとプロファイル |
| アイテム保持ポリシー |
ワークフロー |
レポート生成設定(宛先、レポート、スケジューラ設定) |
バックアップ手順には、以下の制限があります。
-
テレメトリデータ—デフォルトでは、デバイスからキャプチャされたデータはバックアップされません。テレメトリデータは手動でバックアップする必要があります。
詳細については、「 TSDBのバックアップと復元」を参照してください。
-
一時データおよびロギングデータ—処理中のデータや期限切れのイベントデータはバックアップされません。例えば:
-
生成されたアラートとアラーム
-
コミットされていない設定変更
-
ほとんどのアプリケーションログ
-
-
非 Paragon-自動化設定—Paragon Automationがサポートするサードパーティサービスで行われた設定はバックアップされません。例えば:
-
LDAPユーザーの詳細
-
-
トポロジーの取り込み設定 - トポロジー情報を得るためにBGP-LSルーターとピアリングするためのcRPD設定はバックアップされません。これは、必要に応じて手動で再設定する必要があります。詳細については、「cRPD設定の変更」を参照してください。
Kubernetesジョブを介して呼び出されるコンテナ化されたスクリプトを使用して、バックアップおよびリストア手順を実装します。
設定のバックアップで説明されている手順を使用して、クラスターを手動でバックアップ できます。また、バックアップスクリプトを使用して、「 バックアップスクリプトと復元スクリプト」で説明されている手順を使用して、クラスターをバックアップすることもできます。
同様に、 設定の復元で説明されている手順を使用して、バックアップされた設定を手動で復元することもできます。また、復元スクリプトを使用して、バックアップスクリプトと 復元スクリプトで説明されている手順を使用して、バックアップされた設定を復元することもできます。
Paragon Automationリリース23.2では、新しいリリース23.2インストールのダミーバックアップを実行した後にのみ、以前のリリースのParagon Automationからバックアップされた設定を復元できます。リリース 23.2 クラスターで復元操作を使用するには、以下のことを推奨します。
-
現在のParagon Automationクラスターをリリース23.1にアップグレードします。
-
リリース23.1設定をバックアップします。
-
リリース23.2のクラスターをインストールします。
-
23.2 クラスターをバックアップします。
-
リリース23.1の設定をバックアップされたリリース23.2の場所にコピーします。
-
コピーしたバックアップ設定を復元します。
設定をバックアップする
ほとんどのParagon Automationアプリケーションのデータは、主にPostgresに保存されています。設定をバックアップすると、システムによって決定された事前定義されたデータがバックアップされます。バックアップを実行しても、運用システムとマイクロサービスは影響を受けません。バックアップの実行中も、Paragon Automationを引き続き使用できます。バックアップは、Paragon Insights(旧Healthbot)が管理する管理されたデーモン(MGD)CLIを使用します。
現在のParagon Automation設定をバックアップするには、次の手順に従います。
バックアップの詳細を表示するために頻繁に使用されるkubectlコマンド
バックアップのステータスやバックアップファイルの場所を表示したり、バックアップファイルに関する詳細情報を表示したりするには、次のコマンドを使用します。
-
バックアップ ジョブは共通の名前空間に存在し、
common=db-backupラベルを使用します。すべてのバックアップジョブを表示するには:root@primary-node:~# kubectl get -n common jobs -l common=db-backup NAME COMPLETIONS DURATION AGE db-backup-hello-world 1/1 3m11s 2d20h
-
特定のKubernetesジョブの詳細を表示するには:
root@primary-node:~# kubectl describe -n common jobs/db-backup-hello-world -
特定のKubernetesジョブのログを表示するには:
root@primary-node:~# kubectl logs -n common --tail 50 jobs/db-backup-hello-world -
バックアップファイルの場所を特定するには:
root@primary-node:~# kubectl get -n common pvc db-backup-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE db-backup-pvc Bound local-pv-cb20f386 145Gi RWO local-storage 3d3h
この出力は、ローカル永続ボリュームを指します。その永続ボリュームを使用して、バックアップ ファイルが保存されているノードを特定します。
root@primary-node:~# kubectl describe -n common pv local-pv-cb20f386 Node Affinity: Required Terms: Term 0: kubernetes.io/hostname in [10.49.xxx.x2] Message: Source: Type: LocalVolume (a persistent volume backed by local storage on a node) Path: /export/local-volumes/pv*
すべてのバックアップファイルを表示するには、ノードにログインし、バックアップフォルダの場所に移動します。
root@primary-node:~# ssh root@10.49.xxx.x2 root@10.49.xxx.x2:~# ls -l /export/local-volumes/pv*
よく見られるバックアップと復元の失敗シナリオを表示するには、「 一般的なバックアップと復元の問題」を参照してください。
設定を復元する
以前にバックアップした設定フォルダーからParagon Automation設定を復元できます。復元操作では、バックアップされたすべての設定情報でデータベースが書き換えられます。データベースを選択的にリストアすることはできません。復元操作を実行すると、Kubernetesジョブが生成され、影響を受けるマイクロサービスが停止します。ジョブにより、バックアップされた設定が復元され、マイクロサービスが再起動されます。復元手順が完了するまで、Paragon Automationは機能しないままになります。
Kubernetesジョブは復元プロセス中にマイクロサービスを停止するため、複数の復元ジョブを同時に実行することはできません。また、バックアップと復元の両方のプロセスを同時に実行することはできません。
メンテナンス期間中に設定を復元することを強くお勧めします。そうしないと、システムが一貫性のない状態になる可能性があります。
Paragon Automationの設定を以前にバックアップした設定に復元するには:
復元の詳細を表示するために頻繁に使用されるkubectlコマンド
詳細情報と復元プロセスのステータスを表示するには、以下のコマンドを使用します。
-
復元ジョブは共通の名前空間に存在し、
common=db-restoreラベルを使用します。すべての復元ジョブを表示するには:root@primary-node:~# kubectl get -n common jobs -l common=db-restore NAME COMPLETIONS DURATION AGE db-restore-hello-world 0/1 20s 21s
-
特定のKubernetesジョブの詳細を表示するには:
root@primary-node:~# kubectl describe -n common jobs/db-restore-hello-world -
特定のKubernetesジョブのログを表示するには:
root@primary-node:~# kubectl logs -n common --tail 50 jobs/db-restore-hello-world
よく見られるバックアップと復元の失敗シナリオを表示するには、「 一般的なバックアップと復元の問題」を参照してください。
バックアップスクリプトと復元スクリプト
また、Paragon Automationのバックアップおよびリストアスクリプトを使用して、バックアップとリストアの操作を簡略化することもできます。このトピックでは、バックアップと復元スクリプトの操作、およびスクリプトの使用に関する注意事項について説明します。
バックアップスクリプト操作
バックアップスクリプトは、現在の設定を自動的にバックアップします。バックアップスクリプトの主な利点は、定期的なバックアップをスケジュールするために、必要な頻度でcronジョブとして実行できることです。さらに、バックアップスクリプトは、識別可能な日付スタンプ付きのバックアップフォルダを作成し、スクリプトが異なる日に実行されてもフォルダが上書きされることはありません。
バックアップスクリプトを使用して設定をバックアップするには、次の手順に従います。
-
プライマリノードのいずれか1つにログインします。
-
バックアップスクリプトを実行します。
root@primary-node:~# data.sh --backup
スクリプトはバックアップジョブを実行して、現在の設定をバックアップします。バックアップフォルダが作成され、クラスターノードの1つのローカル永続ボリュームに保存されます。フォルダー名は <name>-year_month_day 形式です。クラスターノードのフォルダーには、バックアップされたすべての設定メタデータが含まれています。
また、このスクリプトは、プライマリ ノードの現在のパスに同じ名前のフォルダーを作成します。プライマリ ノードのバックアップ フォルダーには、バックアップされた設定を復元する際に使用するベース プラットフォームに必要な JSON ファイルが含まれています。
スクリプトが実行されると、バックアップの概要が生成され、画面に表示されます。概要には、バックアップ ファイルのノードと場所が含まれています。例えば:
===============================Backup Report================================
Name: db-backup-paa-2023-10-18
Namespace: common
Selector: controller-uid=446d45fd-0a7e-4b21-94b1-02f079b11879
Labels: apps=db-backup
common=db-backup
id=paa-2023-10-18
Annotations: <none>
Parallelism: 1
Completions: 1
Start Time: Wed, 18 Oct 2023 08:39:04 -0700
Completed At: Wed, 18 Oct 2023 08:39:23 -0700
Duration: 19s
Pods Statuses: 0 Running / 1 Succeeded / 0 Failed
Pod Template:
Labels: app=db-backup
common=db-backup
controller-uid=446d45fd-0a7e-4b21-94b1-02f079b11879
id=paa-2023-10-18
job-name=db-backup-paa-2023-10-18
Service Account: db-backup
Containers:
db-backup:
Image: localhost:5000/eng-registry.juniper.net/northstar-scm/northstar-containers/ns_dbinit:release-23-1-ge572e4b914
Port: <none>
Host Port: <none>
Command:
/bin/sh
Args:
-c
exec /entrypoint.sh --backup /paa-2023-10-18
Environment:
PG_HOST: atom-db.common
PG_PORT: 5432
PG_ADMIN_USER: <set to the key 'username' in secret 'atom.atom-db.credentials'> Optional: false
PG_ADMIN_PASS: <set to the key 'password' in secret 'atom.atom-db.credentials'> Optional: false
Mounts:
/opt/northstar/data/backup from postgres-backup (rw)
Volumes:
postgres-backup:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: db-backup-pvc
ReadOnly: false
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 47m job-controller Created pod: db-backup-paa-2023-10-18-95b8j
Normal Completed 47m job-controller Job completed
=============================================================================
Running EMS Backup.
===============================Get Backup file location======================
Name: local-pv-81fa4ecb
Labels: <none>
Annotations: pv.kubernetes.io/bound-by-controller: yes
pv.kubernetes.io/provisioned-by: local-volume-provisioner-10.16.18.20-b73872bc-257c-4e82-b744-c6981bc3e131
Finalizers: [kubernetes.io/pv-protection]
StorageClass: local-storage
Status: Bound
Claim: common/db-backup-pvc
Reclaim Policy: Delete
Access Modes: RWO
VolumeMode: Filesystem
Capacity: 149Gi
Node Affinity:
Required Terms:
Term 0: kubernetes.io/hostname in [10.16.18.20]
Message:
Source:
Type: LocalVolume (a persistent volume backed by local storage on a node)
Path: /export/local-volumes/pv1
Events: <none>
=============================================================================
Running Pathfinder Kubernetes Config Backup.
=============================================================================
...<snipped>...
=============================Backup Completed================================
この例では、すべてのバックアップメタデータを含むバックアップフォルダが、IPアドレス10.16.18.20のクラスターノードの /export/local-volumes/pv1 フォルダに保存されています。
スクリプト操作の復元
復元スクリプトは、バックアップされた設定を自動的に復元します。
復元スクリプトを使用して設定を復元するには:
-
プライマリノードのいずれか1つにログインします。
-
MGDコンテナ名を取得する:
#kubectl get po -n healthbot | grep mgd
-
復元コマンドを実行します。
#kubectl exec -ti -n healthbot mgd-858f4b8c9-sttnh -- cli request system restore path /paa-2023-10-18
-
共通の名前空間で復元ポッドを見つけます。
#kubectl get po -n common | grep restore db-restore-paa-2023-10-18-6znb8
-
復元ポッドからログを確認します。
#kubectl logs -n common db-restore-paa-2023-10-18-6znb8
-
ログをたどり、ログの最後に [Restore Complete] を探して更新します。
2023-10-18 16:01:11,127:DEBUG:pg_restore: creating ACL "metric_helpers.TABLE pg_stat_statements" 2023-10-18 16:01:11,129:DEBUG:pg_restore: creating ACL "metric_helpers.TABLE table_bloat" 2023-10-18 16:01:11,131:DEBUG:pg_restore: creating ACL "pg_catalog.TABLE pg_stat_activity" 2023-10-18 16:01:11,137:INFO:Restore complete 2023-10-18 16:01:11,388:INFO:Deleted secret ems/jobmanager-identitysrvcreds 2023-10-18 16:01:11,396:INFO:Deleted secret ems/devicemodel-connector-default-scope-id 2023-10-18 16:01:11,396:WARNING:Could not restore common/iam-smtp-config, iam-smtp-bkup.yml not found 2023-10-18 16:01:21,405:DEBUG:Waiting for secrets to be deleted (10/60) sec 2023-10-18 16:01:21,433:INFO:Created secret ems/jobmanager-identitysrvcreds 2023-10-18 16:01:21,443:INFO:Created secret ems/devicemodel-connector-default-scope-id 2023-10-18 16:01:21,444:INFO:Starting northstar applications 2023-10-18 16:01:22,810:INFO:Starting ems applications 2023-10-18 16:01:23,164:INFO:Starting auditlog applications 2023-10-18 16:01:23,247:INFO:Starting iam applications
-
リリース23.2 UIにログインし、復元されたデータを確認します。
バックアップスクリプトと復元スクリプトに関する注意事項
バックアップスクリプトと復元スクリプトの注意点は次のとおりです。
-
スクリプトは、週単位または1日1回だけ実行できます。24時間以内に複数回実行すると、その日のバックアップフォルダがすでに <name>-year_month_dayがあるため、エラーが返されます。同じ 24 時間以内に手動バックアップを作成する必要がある場合は、
kubectl delete -n common jobsコマンドを使用してジョブを削除する必要があります。例えば:# kubectl delete -n common jobs db-backup-paa-2023_20_04 -
スクリプトは、バックアップファイルの頻度とサイズに応じて、バックアップファイルでディスク領域を埋めます。ディスク領域を解放するために、古いバックアップ メタデータとファイルを削除することを検討してください。
kubectl delete -n common jobsコマンドを使用して、Kubernetesメタデータを削除できます。例えば:# kubectl delete -n common jobs db-backup-paa-2023_20_04バックアップスクリプトの実行時にサマリーに表示されるローカルボリュームパスの/root/フォルダに作成された<name>-year-month-dayフォルダを削除することで、バックアップファイルを削除できます。