NSX Manager の定期バックアップを、nsx_backup_cleaner.py スクリプトと cron で自動削除してみます。
今回の内容です。
- 今回の環境
- 1. nsx_backup_cleaner.py スクリプトの入手
- 2. nsx_backup_cleaner.py スクリプトでのバックアップの削除
- 3. クーロンでの自動クリーンアップ
ドキュメントでは下記のあたりが参考になります。
今回の環境
VCF 5.2.1 の NSX Manager は、下記のように SDDC Manager と一緒に取得しています。今回の SFTP サーバーも、この投稿の Photon OS 5.0 です。
1. nsx_backup_cleaner.py スクリプトの入手
nsx_backup_cleaner.py スクリプトは、NSX Manager に用意されています。
1-1. バックアップ スクリプト用ディレクトリの作成
まず SFTP サーバーで、スクリプトを格納するディレクトリを作成しておきます。
root@vcf-bk-01 [ ~ ]# mkdir /backup/script
今回のバックアップ用ユーザーです。
root@vcf-bk-01 [ ~ ]# id vcf-backup uid=1000(vcf-backup) gid=100(users) groups=100(users)
ディレクトリの所有者を、バックアップ用ユーザーに変更しておきます。
root@vcf-bk-01 [ ~ ]# chown vcf-backup:users /backup/script
1-2. スクリプトの転送
VCF で展開した NSX Manager は、デフォルトでは SSH 接続できないので、VM コンソールから root ユーザーでログインして作業します。
スクリプトが配置されているディレクトリに移動します。
# cd /var/vmware/nsx/file-store/
SFTP サーバーに、nsx_backup_cleaner.py を転送します。
- SFTP サーバー:192.168.70.8
- バックアップ用ユーザー:vcf-backup
# scp nsx_backup_cleaner.py vcf-backup@192.168.70.8:/backup/script/
1-3. スクリプトの配置確認
SFTP サーバーにバックアップ用ユーザーでログインして、配置されたスクリプトのパーミッションを確認しておきます。
root@vcf-bk-01 [ ~ ]# ls -l /backup/script/ total 8 -rwxr-x--- 1 vcf-backup users 5476 Nov 24 23:52 nsx_backup_cleaner.py
スクリプトが実行できることを確認しておきます。
vcf-backup [ ~ ]$ /backup/script/nsx_backup_cleaner.py --help Usage: nsx_backup_cleaner.py -d backup_dir [-k 1] [-l 5] [-h] Or nsx_backup_cleaner.py --dir backup_dir [--retention-period 1] [--min-count 5] [--help] Required -d/--dir: Backup root directory -k/--retention-period: Number of days need to retain a backup file Optional -l/--min-count: Minimum number of backup files to be kept, default value is 100 -h/--help: Display help message
2. nsx_backup_cleaner.py スクリプトでのバックアップの削除
SFTP サーバーにバックアップ用ユーザーでログインして、nsx_backup_cleaner.py スクリプトを手動実行してバックアップをクリーンアップしてみます。
今回のバックアップ格納ディレクトリです。
vcf-backup [ ~ ]$ ls -l /backup/vcf/ total 12 drwxr-x--- 3 vcf-backup users 4096 Nov 24 23:39 cluster-node-backups drwxr-x--- 7 vcf-backup users 4096 Nov 23 18:35 inventory-summary drwxr-x--- 2 vcf-backup users 4096 Nov 26 02:33 sddc-manager-backup
保存されているバックアップの数です。
vcf-backup [ ~ ]$ ls -l /backup/vcf/cluster-node-backups/4.2.1.0.0.24302016-IPv4-932a3242-ee31-8055-400b-b3fece694989-192.168.70.13/ | wc -l 146 vcf-backup [ ~ ]$ ls -l /backup/vcf/inventory-summary/4.2.1.0.0.24302016-IPv4-932a3242-ee31-8055-400b-b3fece694989-192.168.70.13/ | wc -l 146
1日分のバックアップを保持して、古いファイルを削除してみます。
vcf-backup [ ~ ]$ /backup/script/nsx_backup_cleaner.py --dir /backup/vcf --retention-period 1 --min-count 5
この環境では、バックアップは1時間間隔で取得されています。オプションでは最少件数として「--min-count 5」を指定していていますが、1日保持「--retention-period 1」により 25件(24時間+1)を残してクリーンアップされます。
vcf-backup [ ~ ]$ ls -l /backup/vcf/cluster-node-backups/4.2.1.0.0.24302016-IPv4-932a3242-ee31-8055-400b-b3fece694989-192.168.70.13/ | wc -l 25 vcf-backup [ ~ ]$ ls -l /backup/vcf/inventory-summary/4.2.1.0.0.24302016-IPv4-932a3242-ee31-8055-400b-b3fece694989-192.168.70.13/ | wc -l 25
3. クーロンでの自動クリーンアップ
Photon OS 5.0 にはデフォルトでは cron がインストールされていないので、cronie をインストールして、crontab にスケジュールを記載します。
3-1. cronie のインストール
root ユーザーで、cronie をインストールします。
root@vcf-bk-01 [ ~ ]# tdnf install cronie -y Installing: cronie x86_64 1.6.1-2.ph5 photon-updates 229.60k 95.94k Total installed size: 229.60k Total download size: 95.94k cronie 98238 100% Testing transaction Running transaction Installing/Updating: cronie-1.6.1-2.ph5.x86_64 Created symlink /etc/systemd/system/multi-user.target.wants/crond.service → /usr/lib/systemd/system/crond.service.
crond サービスを起動します。
root@vcf-bk-01 [ ~ ]# systemctl start crond
crond が起動されました。
root@vcf-bk-01 [ ~ ]# systemctl is-active crond active
3-2. crontab の作成
バックアップ用ユーザーの crontab を作成します。
root@vcf-bk-01 [ ~ ]# echo '50 * * * * /backup/script/nsx_backup_cleaner.py --dir /backup/vcf --retention-period 1 --min-count 5' > /var/spool/cron/vcf-backup
crontab ファイルの内容を確認しておきます。
- 毎時 50分に、/backup/script/nsx_backup_cleaner.py を実行します。
- クリーンアップ対象ディレクトリ:/backup/vcf
- 保持期間:1日(--retention-period は必須)
- 最少保持数:5件(--min-count はオプション)
root@vcf-bk-01 [ ~ ]# cat /var/spool/cron/vcf-backup 50 * * * * /backup/script/nsx_backup_cleaner.py --dir /backup/vcf --retention-period 1 --min-count 5
crontab のパーミッションを変更します。
root@vcf-bk-01 [ ~ ]# chmod 600 /var/spool/cron/vcf-backup root@vcf-bk-01 [ ~ ]# chown vcf-backup:users /var/spool/cron/vcf-backup
3-3. cron による定期実行の確認
これで、1日分を残して、バックアップ ファイルが自動的にクリーンアップされます。指定したスケジュールを経過してから、journalctl でスクリプトが定期的に実行されていることを確認しておきます。
root@vcf-bk-01 [ ~ ]# journalctl -u crond -r -n 200 | grep nsx_backup_cleaner.py Nov 26 14:50:01 vcf-bk-01 CROND[403081]: (vcf-backup) CMDEND (/backup/script/nsx_backup_cleaner.py --dir /backup/vcf --retention-period 1 --min-count 5) Nov 26 14:50:01 vcf-bk-01 CROND[403082]: (vcf-backup) CMD (/backup/script/nsx_backup_cleaner.py --dir /backup/vcf --retention-period 1 --min-count 5) Nov 26 13:50:01 vcf-bk-01 CROND[402705]: (vcf-backup) CMDEND (/backup/script/nsx_backup_cleaner.py --dir /backup/vcf --retention-period 1 --min-count 5)
バックアップ数も、25件で維持されていることを確認しておきます。
vcf-backup [ ~ ]$ ls -l /backup/vcf/cluster-node-backups/4.2.1.0.0.24302016-IPv4-932a3242-ee31-8055-400b-b3fece694989-192.168.70.13/ | wc -l 25 vcf-backup [ ~ ]$ ls -l /backup/vcf/inventory-summary/4.2.1.0.0.24302016-IPv4-932a3242-ee31-8055-400b-b3fece694989-192.168.70.13/ | wc -l 25
以上、NSX Manager のバックアップを自動削除してみる話でした。