Bareos: Бекап VMware для непритязательных


Сегодня, в день резервного копирования, хочется написать с одной стороны что-то лёгкое и простое, а с другой стороны полезное. Сегодня мы все поглощены импортозамещением и переходом на бесплатные продукты. Но с бесплатными продуктами для резервного копирования всё обстоит немного плохо. Давайте сегодня развернём Bareos, ведь у него есть бесплатный плагин для резервного копирования VMware и oVirt’а и посмотрим насколько он хорош для резервного копирования виртуальных машин. Да и вообще у меня давненько уже не проскакивало туториалов по Linux, надо навёрстывать упущенное.

Если кто давно читает мой блог, то знает, что я начинал свой путь в Linux с Gentoo и довольно много писал про работу с ним. Но эти времена игр давно прошли. Когда я стал использовать Linux в бОльших объёмах, я перешёл на использование пакетных дистрибутивов и полюбил CentOS, но с приходом Stream от этой операционный системы я решил отказаться и перешёл на Debian, поэтому сегодня Bareos мы будем разворачивать именно на этой операционной системе. Но оставим лирику и перейдём к установке. Для этого нам необходимо подключить репозиторий Bareos. Можно это сделать вручную, но вообще у Bareos есть даже специальный шелскрипт, который сделает всё за нас. Скачиваем его и запускаем

wget https://download.bareos.org/current/Debian_11/add_bareos_repositories.sh
chmod +x add_bareos_repositories.sh 
./add_bareos_repositories.sh

После этого обновляем данные репозиториев и устанавливаем

apt update
apt install postgresql postgresql-contrib bareos

В качестве базы данных Bareos использует postgresql (прям свет клином у меня на нём сошёлся в последнее время). В принципе он и сам его может подтянуть из зависимостей, но я столкнулся с тем, что в этом случае не создаётся пользователь postgres и фэйлится развёртывание базы Bareos, так что лучше поставить его самостоятельно. Установка займёт пару минут, после чего мы сможем перейти к конфигурированию для нашей первой резервной копии.

Прежде чем запустить все сервисы, давайте сразу сменим директорию, куда будем складывать резервные копии, а то класть её в / мне не сильно нравится. У меня это будет отдельный диск, смонтированный в /mnt/backup/ и нам необходимо внести следующее изменение в файле /etc/bareos/bareos-sd.d/device/FileStorage.conf:

Archive Device = /mnt/backup

После этого можно запустить сервисы Bareos

systemctl start bareos-dir
systemctl start bareos-sd
systemctl start bareos-fd

И проверить, что всё запустилось корректно

systemctl status bareos-dir bareos-sd bareos-fd

Несмотря на то, что сам я любитель сидеть в консоли, просмотр выполняющихся заданий из консоли Bareos мне не очень понравился, поэтому я решил установить web-gui, возможно и вам он окажется полезен, тем более, что устанавливается так же просто, как и сам Bareos и не требует конфигурирования.

apt install libapache2-mod-php bareos-webui
systemctl reload apache2

После этого нам необходимо зайти в консоль Bareos и создать пользователя для webui

bconsole

В консоли Bareos выполняем следующие команды

reload
configure add console name=admin password=secret profile=webui-admin tlsenable=false

После этого можно зайти по адресу http://ip/bareos-webui/ и проверить возможность входа и работу веб-интерфейса.

Теперь первым делом нам необходимо поставить плагин для поддержки VMware. Плагин устанавливается отдельным пакетом

apt install bareos-vmware-plugin

Так же нам потребуется установить VMware SDK, лучше всего делать это не через пакетный менеджер ОС, а через pip, это гарантирует более свежую версию пакета

pip3 install pyvmomi

После этого необходимо в конфигурационном файле /etc/bareos/bareos-fd.d/client/myself.conf включить поддержку плагинов

Plugin Directory = "/usr/lib/bareos/plugins"
Plugin Names = python

Обращаю отдельно внимание, что python написано без кавычек, хотя в конфиге по дефолту кавычки стоят, но в этом случае мы получим ошибку
Command plugin requested, but is not loaded
так что у имени плагина не ставьте кавычки

Бекапим
Теперь мы можем приступить к тому, что бы поставить на РК нашу первую виртуальную машину. Для этого нам необходимо описать сущность FileSet, в котором будет описано подключение к vCenter и источник резервного копирования. FileSet создаётся индивидуально для каждого задания резервного копирования и описывает что именно должно быть включено в резервную копию. В нашем случае мы описываем с какими параметрами подключаться к vCenter, где именно и какую именно виртуальную машину нужно искать и что работать с VMware мы будем при помощи плагина bareos-fd-vmware. Так же здесь включается и сжатие
/etc/bareos/bareos-dir.d/fileset/nginx-int-bareos.conf

FileSet {
    Name = "nginx-int-bareos_fileset"
    
    Include {
        Options {
            signature = MD5
            Compression = GZIP
        }
        Plugin = "python"
                ":module_path=/usr/lib/bareos/plugins"
                ":module_name=bareos-fd-vmware"
                ":dc=Datacenter:folder=/lab/backups/sources"
                ":vmname=nginx-int-bareos"
                ":vcserver=vc.korphome.local"
                ":vcuser=backupagent@vsphere.local"
                ":vcpass="
                ":vcthumbprint=B88AD1B5A7076F4D6D4F4E59EB81B7D08659B3BA"
    }
}

dc — название datacenter
folder — папка с VM, по-умолчанию корень
vmname — имя виртуальной машины
vcserver — адрес сервера
vcuser — логин юзера специально заведенного для работ с бэкапом
vcpass — его пароль
vcthumbprint — thumbprint сертификата vCenter

Как получить thumbprint?

echo -n | openssl s_client -connect _адресс_vcenter:443 2>/dev/null | openssl x509 -noout -fingerprint -sha1  | tr -d ":"

Остальные параметры думаю не нуждаются в более глубоком разбирательстве
Теперь нам остаётся сделать само задание
/etc/bareos/bareos-dir.d/job/nginx-int-bareos.conf

Job {
  Name = "nginx-int-bareos"
  JobDefs = "DefaultJob"
  FileSet = "nginx-int-bareos_fileset"
}

Примечание: по-умолчанию, при создании виртуальной машины у неё выключен CBT. Если энтерпрайз продукты умеют сами этот параметр включать, то Bareos этого не делает при запуске задания на первый Full бэкап и это необходимо делать вручную. Для этого у Bareos есть скрипт vmware_cbt_tool.py, который необходимо натравить на нужную нам виртуальную машину
/usr/sbin/vmware_cbt_tool.py -s vc.korphome.local -u backupaget -p Passw0rd -d Datacenter -f / -v nginx-int —enablecbt
-s — адрес vCenter
-u — пользователь на vCenter
-p — пароль
-d — датацентр
-f — папка с VM, корень по-умолчанию
-v — название VM
—enablecbt — включает CBT для виртуальной машины

Теперь заходим в bconsole, делаем reload и запускаем фульник нашего задания

run job=nginx-int-bareos level=Full

За процессом можно наблюдать из bconsole с помощью команды messages, но на мой взгляд это удобнее делать через web-gui

Восстанавливаем
Восстановление на мой взгляд удобнее производить как раз из web-gui, т.к. в консоли искать бекапы и помечать их на восстановление не слишком наглядно.

В поле «Задание резервного копирования» мы выбираем точку, из которой мы хотим восстановиться. Причём, если мы восстанавливаемся из инкрементной резервной копии, то нам необходимо в поле «Объединить все задания до последнего полного резервного копирования вместе» выбрать «Да», иначе Bareos накатит просто инкремент на имеющуюся виртуальную машину и работоспособной системы мы не получим
Можно воспользоваться альтернативным выбором точки восстановления, т.к. искать их в большом выпадающем списке не всегда удобно

Переходим в раздел «Задания», фильтруем по нужному нам имени виртуальной машины и нажимаем кнопку восстановления и попадаем в мастер восстановления с уже выбранной данной точкой. Ну а так выглядит лог корректного восстановления виртуальной машины

Если же мы хотим восстановить из резервной копии в новую виртуальную машину, то в поле Plugin options нам необходимо указать дополнительные параметры
python:restore_datastore=B-NVME-2:vmname=AD-restored:restore_powerstate=off
restore_datastore — на какой датастор мы будем восстанавливать ВМ
vmname — имя машины (соответственно должно отличаться от оригинальной)
restore_powerstate=off — восстанавливаем и не включаем, т.к. машина получит те же сетевые настройки, дабы не повлиять случайно на продуктив. При этом UUID и MAC адреса генерируются новые
При этом при помощи дополнительных параметров мы можем восстановить виртуальную машину и в другой кластер, например. Полный список дополнительных параметров описан на странице плагинов в самом конце.

И в заключении хочется сказать, что данному продукту конечно ещё не хватает очень многого, к чему мы привыкли с энтерпрайз продуктами для резервного копирования. Не хватает гибкости и удобства, большего функционала и удобства использования. Именно поэтому в заголовке я говорил именно о непритязательных пользователях, т.к. этого минимального набора функционала достаточно для простого резервного копирования и восстановления виртуальных машин VMware без дополнительных возможностей, но ведь зато продукт бесплатен и не имеет никаких ограничений, а что ещё могло бы с ним конкурировать в этом ключе? Veeam Community Edition конечно очень хорош даже в несколько урезанном виде, но он ограничен и по числу инстансов всего 10-ю, так что в случае большей инфраструктуры этот продукт уже не подойдёт.

Добавить комментарий