CNE GCP対応:増分バックアップとリストア
Cloud Native Experience (CNE) GCP Readyは、Argo Workflows、Cloud SQLバックアップ、およびCloud Storageを使用した自動バックアップと復元をサポートします。 バックアップはデフォルトでは無効になっており、ご使用の環境に合わせて設定する必要があります。
増分バックアップを有効にする
infrastructure.yaml ファイルでバックアップ設定を構成します。
backup:
enabled: true
region: ""
retentionDays: 30
storageClass: NEARLINE
schedule: "0 5 * * *"
cleanup:
schedule: "0 2 * * *"
| 値 | Description |
|---|---|
backup.enabled | true に設定するとバックアップが有効になります。 |
backup.region | バックアップ保管庫バケット用のクラウドストレージリージョン。 空の値を指定すると、環境領域が継承されます。 |
backup.retentionDays | クリーンアップ前にバックアップが保持される日数。 |
backup.storageClass | バックアップ保管庫バケット用のクラウドストレージクラス。 |
backup.schedule | 自動バックアップ作成のためのcron式。 |
backup.cleanup.schedule | 自動バックアップクリーンアップのためのCron式。 |
バックアップには以下が含まれます
- Cloud SQLデータベースのスナップショット
- ドキュメントライブラリバケットデータ
バックアップデータは、専用のクラウドストレージ保管庫バケットに保存されます。
設定を確認してください。
kubectl get liferayinfrastructure -n <namespace> \
-o jsonpath='{.items[0].spec.backup}{"\n"}'
kubectl get cronworkflow -n <namespace>
自動バックアップ作成
自動バックアップは backup.schedule に従って実行されます。 デフォルトでは、バックアップは毎日実行されます。
Argo CDが構成を同期した後、環境にはスケジュールされたバックアップおよびクリーンアップのワークフローが含まれます。
スケジュールされたワークフローの一覧を表示するには:
kubectl get cronworkflow -n <namespace>
スケジューラによって作成されたバックアップの一覧を表示するには:
kubectl get liferaybackup -n <namespace>
手動バックアップ作成
Argoワークフローテンプレートを使用すれば、必要に応じてバックアップを作成することもできます。
バックアップワークフローを送信します。
argo submit \
--from clusterworkflowtemplate/backup-create-cluster-workflow-template \
-n <namespace> \
--watch
ワークフローが完了したら、バックアップを確認します。
kubectl get liferaybackup -n <namespace>
増分バックアップの復元
復元操作では、アクティブな環境データを選択したバックアップデータに置き換えます。 リストアが正常に完了すると、以前のデータプレーンは削除されます。
復元を開始する前に、以下の前提条件を確認してください。
-
少なくとも1つの正常なバックアップが存在することを確認してください。
-
対象環境が正常であることを確認してください。
バックアップが正常に完了したことを確認します。
kubectl get liferaybackup <backup-name> -n <namespace> \
-o jsonpath='{.status.conditions[?(@.type=="Succeeded")]}'
Argoワークフローへのアクセス
Argo Workflowsサーバーは、デフォルトでは公開エンドポイントを提供しません。
-
ポートフォワーディングを有効にする:
kubectl port-forward \ -n argo-workflows-system \ svc/argo-workflows-server \ 2746:2746 -
ブラウザで次のアドレスを開いてください。
https://localhost:2746
リストアを実行する
バックアップ名を使用して復元ワークフローを送信します。
argo submit \
--from clusterworkflowtemplate/backup-restore-cluster-workflow-template \
-n <namespace> \
-p liferay-backup-name=<backup-name> \
--watch
例:
argo submit \
--from clusterworkflowtemplate/backup-restore-cluster-workflow-template \
-n liferay-project-dev \
-p liferay-backup-name=liferay-backup-xkprh \
--watch
別の名前空間のバックアップから復元する:
argo submit \
--from clusterworkflowtemplate/backup-restore-cluster-workflow-template \
-n liferay-project-staging \
-p liferay-backup-name=liferay-backup-xkprh \
-p liferay-backup-namespace=liferay-project-prod \
--watch
リストア処理中、プラットフォームは新しい非アクティブなデータプレーンをプロビジョニングし、そこにバックアップをリストアし、トラフィックをリストアされた環境に切り替え、完了後に以前のアクティブなデータプレーンを削除します。
リストアが完了する前に失敗した場合、ワークフローは自動的に以前のアクティブなデータプレーンにロールバックします。
オプションの設定復元
デフォルトの復元設定は、追加の設定なしで機能します。
復元動作をカスタマイズするには、 liferay/system/infrastructure-provider.yaml を編集します。
例:
liferay-subchart-backup-restore:
liferayInfrastructure:
waitTimeoutSeconds: 7200
バックアップおよびリストアワークフローの監視
復元状況とワークフローリソースを監視する:
argo watch -n <namespace> @latest
kubectl get workflows -n <namespace>
kubectl get liferaybackup -n <namespace>
kubectl get liferayinfrastructure -n <namespace> -w \
-o jsonpath='{.items[0].spec.restorePhase}{"\n"}'
自動クリーンアップは、 backup.retentionDays および backup.cleanup.schedule に従って期限切れのバックアップを削除します。