While there are multiple methods to backing up a LXD server, one way involves creating a second LXD server to work as a live spare that we can failover to should the need arise. This server will contain recent copies of our containers and should be set up to automatically receive these container copies. In this hands-on lab, we’ll be doing just that. We’ll create a secondary backup server, then write a short Bash script to copy over our backups. This script will then get added to our crontab to run automatically.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Configure the Remote
Log in to the "Backup Remote" server. LXD has already been installed, and only needs to be configured:
lxd init
Use the default settings until asked if LXD should be available over the network, then type
yes
. Bind to all addresses and the default port, then set the password topinehead
:Would you like LXD to be available over the network? (yes/no) [default=no]: yes Address to bind LXD to (not including port) [default=all]: Port to bind LXD to [default=8443]: Trust password for new clients: pinehead Again: pinehead
On the LXD server, add the Backup server as a remote:
lxc remote add backups 10.0.1.110
- Write a Backup Script
To create a backup, we want to work in two steps: Taking the snapshot and copying over the snapshot over to the backup remote. We also need to remove any existing
backup
snapshots and containers:#! /bin/bash containers="web1 db1" for c in $containers do lxc delete $c/backup &> /dev/null lxc snapshot $c backup lxc delete backup:$c &> /dev/null lxc copy local:${c}/backup backups:$c done
When finished, ensure the script is executable:
chmod +x backups.sh
- Add the Script to the Crontab
Add the script to your crontab:
crontab -e
0 0 * * * /home/cloud_user/backups.sh