vm.gowatana.jp

NEOにほんごVMware(仮)

NSX Manager のバックアップを自動クリーンアップしてみる。(Photon OS / cron)

NSX Manager の定期バックアップを、nsx_backup_cleaner.py スクリプトと cron で自動削除してみます。

 

今回の内容です。

 

ドキュメントでは下記のあたりが参考になります。

 

今回の環境

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 のバックアップを自動削除してみる話でした。