Наличие актуального бэкапа под рукой является крайне важным моментом, потому как никто не застрахован от неприятных случаев, связанных с выходом из строя носителей, утери информации, случайного удаления и т.д. В таких ситуациях резервная копия сохранит не только нервы, но также избавит от возможных финансовых проблем, которые могут возникнуть из-за утери данных.
Bareos – была выбрана как система резервного копирования по таким причинам:
- является Open Source;
- активно развивается;
- имеет множество полезных функций;
- может расширять свой функционал благодаря плагинам.
Описание задачи
Допустим у нас есть 3 машины. Серверы: Bareos, BitrixVm, Windows Server 2012 R2. Для примера все это будет находиться в пределах одной сети, но сам Bareos, конечно же, позволяет выполнять резервное копирование если машина находиться за ее пределами.
Bareos — 172.16.10.10
BitrixVM — 172.16.10.11
Windows Server — 172.16.10.12
Для сервера с Bareos будем использовать CentOS 7. Происходит обычная установка:
# yum install -y bareos-client bareos-database-tools bareos-filedaemon bareos-database-mysql bareos bareos-bconsole bareos-database-common bareos-storage bareos-director bareos-common
В качестве базы данных будет использоваться PostgreSQL. Установка происходит также просто:
# yum install -y postgresql-server postgresql-contrib
При установке Bareos в /etc/bareos имеем следующий список файлов и папок, за исключением директории «ssl», к ней перейдем чуть позже:
/bareos-dir.d
/bareos-sd.d
/ssl
bareos-dir.conf
bareos-fd.conf
bareos-sd.conf
bconsole.conf
.rndpwd
После установки в директории /usr/lib/bareos/scripts/ появятся подготовленные скрипты для работы с Bareos. Благодаря им выполним предварительную настройку базы данных (создадим базу, таблицы, и права):
su postgres -c /usr/lib/bareos/scripts/create_bareos_database
su postgres -c /usr/lib/bareos/scripts/make_bareos_tables
su postgres -c /usr/lib/bareos/scripts/grant_bareos_privileges
Важным моментом является то, что имена наших машин должны резолвиться, если нет, то добавим соответствующие строки в /etc/hosts
172.16.10.10 bareos-server
172.16.10.10 bareos-fd
172.16.10.11 bitrixvm
172.16.10.12 win-fd
bareos-server — сам сервер, bareos-fd — также будем делать бэкап самого сервера, т.е. в то же время, будет выступать как клиент, далее в конфигурации это будет видно, bitrixvm — название клиента говорит само за себя, win-fd — клиент с Windows Server 2012 R2.
Настройку серверной части для BareOS, а именно директора, необходимо выполнить в файле bareos-dir.conf. Директор отвечает за все выполняемые операции.
Из основных директив:
Director — описание самого директора,
Storage — устройство на которое пишем бэкапы,
Catalog — содержит информацию по выполненным Job, сохраненным файлам, клиентам, статусам,
Messages — какие сообщения будут собраны и как их доставлять,
Console — настройка консоли для управления директором,
Client — описание клиента, с которого будут сниматься резервные копии,
Pool — позволяет управлять т.н. Volume куда будут писаться данные для разных типов бэкапа (Full, Incremental, Differential), ограничить сроки хранения Volume, размеры,
FileSet — что бэкапим и дополнительные атрибуты,
Schedule — расписание,
Job — описание задачи по бэкапу.
Из официальной документации схема взаимодействия между службами:
Содержимое файла bareos-dir.conf:
# Добавляем в качестве отдельных файлов конфигурации двух остальных клиентов.
@/etc/bareos/bareos-dir.d/win.conf
@/etc/bareos/bareos-dir.d/bitrixvm.conf
Важно чтобы было соответствие между конфигурациями:
Далее настроим Storage в bareos-sd.conf:
После всех основных настроек нужно перезапустить службы bareos:
systemctl restart bareos-dir
systemctl restart bareos-sd
systemctl restart bareos-fd
В случае возникновения ошибок состояние смотрим командой:
systemctl status bareos-dir.service -l
Перейдем к установке плагина bareos клиента для Windows. Можно скачать тут.
Установка плагина проходит также просто. Из списка предлагаемых компонентов выбираем только два указанных на скриншоте: далее задаем имя для клиента, указываем параметры уже имеющегося директора:
Прописываем такие данные:
Client Name — win-fd
Director Name — bareos-server
Password — zcx@#$BGj
Networks Address — bareos-server
Введенные настройки всегда можно подправить, файл конфигурации по умолчанию лежит в «C:\Program Data\Bareos\bareos-fd.conf».
В файле hosts также указываем IP для сервера BareOS, чтобы имя резолвилось. Со стороны сервера (bareos-server) конфиг для клиента (win-fd) выглядит следующим образом и находиться по пути /etc/bareos/bareos-dir.d/win.conf:
Развернуть
Из директивы FileSet видим, что для задачи Job-win-Full копируем папку пользователей «C:\Users» и в задаче Job-win-Full-restore восстанавливаем ее в папку при необходимости «C:\tmp».
Остался еще один клиент (bitrixvm) для которого нужно выполнять копирование корневой директории и в отдельной задаче копирование базы данных mysql.
Перейдем на машину bitrixvm и выполним установку клиента:
yum install -y bareos-client bareos-common
Перейдем в каталог /etc/bareos
/bareos-dir.d
/bareos-fd.d
/bconsole.conf
/ssl
.rndpwd
tray-monitor.d
Для настройки клиента перейдем в директорию /bareos-fd.d
/client
/director
/messages
По умолчанию, после установки конфигурация разбросана на три показанные выше директории, поэтому для дальнейшего удобства закомитируем частичные конфигурации в директориях director и messages, и выполним все настройки в /client/myself.conf
Развернуть
Вносим параметры и перезапускаем службу:
/etc/init.d/bareos-fd restart
Прописываем в hosts адрес для bareos-server
Со стороны сервера (bareos-server) конфигурация для клиента (bitrixvm) выглядит следующим образом и находиться — /etc/bareos/bareos-dir.d/bitrixvm.conf:
Развернуть
В секции RunScript параметра Command мы запускаем команду mysqldump, передав все необходимые параметры «mysqldump -uroot -ppassword --opt --all-databases > /tmp/dump.sql».
Сохраненный файл dump.sql будет после бэкапирован как указано для FileSet с названием «bareos-fileset-bitrixvm-mysql».
Для шифрования передачи данных Bareos использует протокол TLS. Для каждого клиента и для директора у нас должны быть CA сертификат, сертификат и ключ. Будем использовать самоподписанные сертификаты, все это можно сделать через openssl.
Перейдем по пути конфигурационного файла openssl /etc/pki/tls/openssl.cnf
Генерируем CA сертификат:
#openssl req -config openssl.cnf -new -x509 -extensions v3_ca -keyout private/myca.key -out certs/myca.crt
После ввода пароля и остальных данных получим два файла:
/etc/pki/CA/private/myca.key
/etc/pki/CA/certs/myca.crt
Подправим/проверим файл настроек openssl.cnf чтобы были верно указаны пути к сертификатам, жирным выделено то, что нужно будет изменить.
Также нужно создать файлы index.txt и serial в папке /etc/pki/CA:
touch /etc/pki/CA/index.txt
В файл serial сразу заносим значение «01», в файле будет содержаться следующий номер для следующего сертификатам:
echo '01' > /etc/pki/CA/serial
Содержимое openssl.cnf:
Генерируем ключ для сервера, необходимо будет ввести пароль.
openssl genrsa -aes256 -out bareos-server.key.pem 4096
Генерируем запрос на сертификат. Важным моментом остается то, что в данном пункте при генерации сертификата необходимо правильно указать Common Name (CN) чтобы оно совпадало с именем машины, иначе возникнут ошибки при попытках выполнить какое-либо задание. В данном примере CN = bareos-server
openssl req -config openssl.cnf -key bareos-server.key.pem -new -sha256 -out bareos-server.csr.pem
Подписываем CSR через CA, получаем сам сертификат
openssl ca -config openssl.cnf -in bareos-server.csr.pem -out bareos-server.cert.pem
Убираем пароль для ключа, т.к. bareos он нужен безпарольный
openssl rsa -in bareos-server.key.pem -out bareos-server.nopass.key.pem
CA ключ и сертификат преобразуем в один файл с расширением PEM
cat /etc/pki/CA/private/myca.key /etc/pki/CA/certs/myca.cert > ca-chain.cert.pem
Генерируем DH ключ
openssl dhparam -out dh1024.pem -5 1024
Копируем сертификаты bareos-server.cert.pem bareos-server.nopass.key.pem ca-chain.cert.pem dh1024.pem в папку /etc/bareos/ssl, которую предварительно нужно создать и установить группу bareos
Для каждого сертификата меняем группу на bareos
chgrp bareos *
Аналогичные действия нужно проделать для каждого клиента (bitrixvm, win-fd):
openssl genrsa -aes256 -out bitrixvm.key.pem 4096
openssl req -config openssl.cnf -key bitrixvm.key.pem -new -sha256 -out bitrixvm.csr.pem
openssl ca -config openssl.cnf -in bitrixvm.csr.pem -out bitrixvm.cert.pem
openssl rsa -in bitrixvm.key.pem -out bitrixvm.nopass.key.pem
Посредством SCP копируем 4 файла bitrixvm.cert.pem bitrixvm.nopass.key.pem ca-chain.cert.pem dh1024.pem на удаленную машину bitrixvm в папку /etc/bareos/ssl, которую предварительно нужно создать и установить группу bareos как для папка так и для сертификатов.
В конфигурации клиента bitrixvm (/etc/bareos/bareos-fd.d/client/myself.conf) в секции Director {} необходимо чтобы были прописаны сертификаты клиента, но не директора. В конфигурации на стороне сервера (/etc/bareos/bareos-dir.d/bitrixvm.conf) в секции Client {} указаны сертификаты директора. После внесения изменений в конфигурации перезапустить службы.
Создание сертификатов для машины win-fd идентично.
Также нужно прописать сертификаты для bconsole, утилита, позволяющая управлять директором в файле /etc/bareos/bconsole.conf:
Развернуть
Процедура бэкапа или восстановления выглядит следующим образом. Воспользуемся утилитой bconsole, в качестве приветствия увидим *
run Покажет все возможные Job:
Развернуть
Результат выполнения команды можно просмотреть либо через команду message и в ответ получим примерно такое:
Развернуть
Или через команду status dir
Развернуть
Где по графе статус можно просмотреть состояние бэкапа. Job с номером 75 прошел успешно.
Восстановление происходит по команде restore
*restore
После чего будет предложен список всех возможных вариантов
To select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Cancel
Покажем список последних 20 заданий:
Жмем 3 и указываем номер JobID, например 75. После этого автоматически попадаем в консоль для выбора файлов, которые хотим восстановить
cwd is: /
$
Список всех доступных команд можно просмотреть через команду help. Проверяем какие файлы есть в наличии в данном бэкапе, отмечаем нужные файлы командой mark через указание файлов или через *, выбрав таким образом все. По завершении выполняем команду done после чего пойдет диалог с системой.
$ ls
tmp/
$ cd tmp/
cwd is: /tmp/
$ ls
dump.sql
$ mark *
1 file marked.
$ done
The job will require the following
Volume(s) Storage(s) SD Device(s)
===========================================================================
bitrixvm-bareos-client-Full-0011 bareos-server-sd bareos-sd
Volumes marked with "*" are online.
1 file selected to be restored.
Выбираем нужную нам задачу восстановления (пункт 2)
The defined Restore Job resources are:
1: Job-Full-restore
2: Job-bitrixvm-mysql-restore
3: Job-bitrixvm-Full-restore
Select Restore Job (1-3): 2
Задаем клиента для которого выполняем восстановление (2)
Defined Clients:
1: bareos-fd
2: bitrixvm
3: win-fd
Select the Client (1-3): 2
Using Catalog «bareos-server»
Run Restore job
JobName: Job-bitrixvm-mysql-restore
Bootstrap: /var/lib/bareos/bareos-server.restore.1.bsr
Where: /tmp
Replace: Always
FileSet: bareos-fileset-bitrixvm-mysql
Backup Client: bitrixvm
Restore Client: bitrixvm
Format: Native
Storage: bareos-server-sd
When: 2016-10-16 11:26:54
Catalog: bareos-server
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no): yes
Подтверждаем задачу через yes, командой mod можно отредактировать параметры восстановления перед началом, в том числе и сменить директорию для восстановления. Далее задаче назначается JobId.
Job queued. JobId=76
По команде status dir можно увидеть состояние восстановления. Как видим все прошло успешно. После этого можно переходить на удаленный клиент, и в папке /tmp обнаружим восстановленный файл dump.sql.
76 1 1.100 M OK 16-Oct-16 11:27 Job-bitrixvm-mysql-restore
В заключении можно сказать, что Bareos активно развивается, имеет в своем арсенале множество полезных функций, которые остались за пределами этой статьи, а наличие плагинов, которые могут расширить функционал также оказывают положительное впечатление (резервное копирование MS SQL, плагины для хранения данных на Ceph, Gluster, бэкап LDAP).
Похожие материалы на сайте: