Резервное копирование — критически важная задача. Выполнить её позволит встроенный скрипт от VMware Cloud Director, который можно запустить двумя способами. Первый — с помощью страницы обслуживания (VMware Cloud Director Appliance), второй — вручную (путь: /opt/vmware/appliance/bin/create-backup.sh, или здесь

Совет: если ваш Cloud Director старше версии 10.5.1.1, развёрнут на Debian или другой подобной ОС, то есть смысл ознакомиться с одной полезной статьёй. Этот материал позволит исправить проблему в работе встроенного скрипта резервного копирования: https://knowledge.broadcom.com/external/article/325662/creating-database-backups-might-fail-whe.html

Теперь вернёмся к нашей публикации. Скрипт выполнит резервное копирование базы данных и нужных конфигурационных файлов и разместит упакованную резервную копию в директории /opt/vmware/vcloud-director/data/transfer/backups, однако ротация файлов не предусмотрена. В этой статье мы разберём вариант bash-скрипта, который автоматизирует создание и ротацию бэкапов VMware Cloud Director, а также простой способ отследить успешность выполнения скрипта в Zabbix.

Код скрипта:

#!/bin/bash

# Директория с файлами бэкапов
vcd_backup="/opt/vmware/vcloud-director/data/transfer/backups"

# количества дней актуальных бэкапов
days = 30

# Файл с флагом выполнения для мониторинга
log_file="/var/log/create-backup-vcd-flag"

# Функция поиска и удаления файлов резервных копий
remove_old_backups() {
    # Проверка наличия директории
    if [ ! -d "$vcd_backup" ]; then
        echo "Backup directory $vcd_backup does not exist!" >&2
        return 1
    fi

    # Поиск файлов старше $days
    older_backups=$(find "$vcd_backup" -type f -mtime "+$days" 2>/dev/null)

    if [ -n "$older_backups" ]; then
      echo "Deleting older backups:"
      echo "$older_backups"
      while IFS= read -r file; do
        if [ -f "$file" ]; then
          rm -f "$file" && echo "Deleted: $file" || echo "Failed to delete: $file" 2>&1
        fi
      done <<< "$older_backups"
    else
      echo "No backups older than 30 days found in $vcd_backup."
    fi
}

echo "Starting VCD Backup Procedure at $(date)"

echo "Running create-backup.sh..."
if /opt/vmware/appliance/bin/create-backup.sh; then
    echo "VCD backup created successfully"
    echo "1" > "$log_file"
else
    echo "Error with create-backup.sh" >&2
    echo "0" > "$log_file"
fi

# Установка разрешения на файл с маркером успешного выполнения бэкапа
chmod 644 "$log_file"

# Функция ротации бэкапов
remove_old_backups

echo "Backup procedure completed at $(date)"

Если у вас собран кластер, то бэкап следует выполнять на primary ноде. Скрипт размещается на каждой ноде, и в код добавляется проверка:

# Проверяем, что находимся на primary ноде
if sudo -i -u postgres repmgr node check --role | grep -q primary; then
  echo "Running Backup Job"
  # и выполняем скрипт
  /opt/vmware/appliance/bin/create-backup.sh
  # после удаляем устаревшие копии
  remove_old_backups
else
  # иначе не выполняем ничего
  echo "This is not the Primary cell"
fi

После выполнения в файл /var/log/create-backup-vcd-flag записывается “1” при успешном выполнении скрипта или “0” (в противном случае). 

Для отслеживания файла необходимо:

  1. Установить на appliance агента Zabbix.

  2. Настроить текстовый элемент данных vfs.file.contents[/var/log/create-backup-vcd-flag] 

  3. Настроить триггер на этот элемент last(/vCD Daily Backup/vfs.file.contents[/var/log/create-backup-vcd-flag])=0

Мы рассмотрели способы резервного копирования VMware Cloud Director и вариант автоматизации с мониторингом. 

Спасибо за внимание!

Комментарии (0)