Epiphany provides solution to create full or partial backup and restore for some of components. Those supported components are listed below:
Backup is created directly on the machine where component is running, and it is moved to the repository host via
rsync. On the repository host backup files are stored in location /epibackup/mounted mounted on a local
filesystem. See How to store backup chapter.
Copy default configuration for backup from defaults/configuration/backup.yml into newly created backup.yml config
file, supply correct provider and enable backup for chosen components by setting up enabled parameter to true.
kind: configuration/backup
title: Backup Config
name: default
provider: azure
specification:
components:
load_balancer:
enabled: true
logging:
enabled: false
monitoring:
enabled: true
postgresql:
enabled: true
rabbitmq:
enabled: false
# Kubernes recovery is not supported at this point.
# You may create backup by enabling this below, but recovery should be done manually according to Kubernetes documentation.
kubernetes:
enabled: falseRun epicli backup command:
epicli backup -f backup.yml -b build_folderBackup location is defined in backup role as backup_destination_host and backup_destination_dir. Default
backup location is defined on repository host inside location /epibackup/mounted/. Use mounted location as mount
point and mount storage you want to use. This might be:
- Azure Blob Storage
- Amazon S3
- NAS
- Any other attached storage
Ensure that mounted location contains enough free space, is reliable and is well protected against disaster.
NOTE
If you don't attach any storage into the mount point location, be aware that backups will be stored on the local machine's disk drive. This is not recommended.
Copy existing default configuration from defaults/configuration/recovery.yml into newly created recovery.yml config
file, supply correct provider and set enabled parameter for component to recovery. It's possible to choose snapshot
name by passing date and time part of snapshot name. If snapshot name is not provided, the latest one will be restored.
kind: configuration/recovery
title: Recovery Config
name: default
provider: azure
specification:
components:
load_balancer:
enabled: true
snapshot_name: latest #restore latest backup
logging:
enabled: true
snapshot_name: 20200604-150829 #restore selected backup
monitoring:
enabled: false
snapshot_name: latest
postgresql:
enabled: false
snapshot_name: latest
rabbitmq:
enabled: false
snapshot_name: latestRun epicli recovery command:
epicli recovery -f recovery.yml -b build_folderLoad balancer backup includes:
- Configuration files:
/etc/haproxy/ - SSL certificates:
/etc/ssl/haproxy/
Recovery includes all backed up files
Logging backup includes:
- OpenSearch database snapshot
- OpenSearch configuration
/usr/share/opensearch/config/ - OpenSearch Dashboards configuration
/usr/share/opensearch-dashboards/config/
Only single-node OpenSearch backup is supported. Solution for multi-node OpenSearch cluster will be added in future release.
Monitoring backup includes:
- Prometheus data snapshot
- Prometheus configuration
/etc/prometheus/ - Grafana data snapshot
Recovery includes all backed up configurations and snapshots.
Postgresql backup includes:
- Database data and metadata dump using
pg_dumpall - Configuration files:
*.conf
When multiple node configuration is used, and failover action has changed database cluster status (one node down,
switchover) it's still possible to create backup. But before database restore, cluster needs to be recovered by
running epicli apply and next epicli recovery to restore database data. By default, we don't support recovery
database configuration from backup since this needs to be done using epicli apply or manually by copying backed up
files accordingly to cluster state. The reason of this is that is very risky to restore configuration files among
different database cluster configurations.
RabbitMQ backup includes:
- Messages definitions
- Configuration files:
/etc/rabbitmq/
Backup does not include RabbitMQ messages.
Recovery includes all backed up files and configurations.
Epiphany backup provides:
- Etcd snapshot
- Public Key Infrastructure
/etc/kubernetes/pki - Kubeadm configuration files
Following features are not supported yet (use related documentation to do that manually):
- Kubernetes cluster recovery
- Backup and restore of data stored on persistent volumes described in persistent storage documentation