Бэкап с помощью Open Source решения — Bareos

Опубликовано Medved - пн, 10/24/2016 - 15:34



Наличие актуального бэкапа под рукой является крайне важным моментом, потому как никто не застрахован от неприятных случаев, связанных с выходом из строя носителей, утери информации, случайного удаления и т.д. В таких ситуациях резервная копия сохранит не только нервы, но также избавит от возможных финансовых проблем, которые могут возникнуть из-за утери данных. 

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). 

Источник.


Похожие материалы на сайте: