Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

Установка Bareos

Bareos — это система резервного копирования с открытым исходным кодом, позволяющая создавать, управлять и восстанавливать бэкапы для серверов. В этой статье рассмотрим процесс установки и настройки Bareos для автоматизированного резервного копирования данных как на выделенном, так и на облачном сервере, используя S3-хранилище для хранения бэкапов.

Создание ресурсов

Для начала создадим облачный сервер, на котором будет работать Bareos.

Так как на сервере будут работать несколько ресурсоемких служб, включая базу данных и Bareos Storage Director, оптимальная конфигурация будет следующей:

  • vCPU: 2
  • RAM: 4 ГБ
  • Диск: 50 ГБ SSD
  • ОС: Ubuntu 22.04 Jammy

Однако вы можете выбрать другую конфигурацию в зависимости от ваших потребностей, объема данных и частоты резервного копирования.

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

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

Далее создадим S3-бакет. Для наших целей идеально подойдет холодный класс хранилища. Учтите, что даже если используется инкрементное резервное копирование, в хранилище должен помещаться как минимум один полный бэкап всего сервера, а также ежедневные изменения, умноженные на количество дней хранения.

Настройка сервера

Bareos использует PostgreSQL для хранения конфигурации и информации о бэкапах. Чтобы упростить установку, мы воспользуемся Docker Compose. В результате установим саму СУБД и Adminer — веб-интерфейс для работы с базой.

Создание СУБД

Сначала установим Docker и Docker Compose:

    

Создадим манифест docker-compose.yml:

    

Укажите вместо <ваш_пароль_администратора_бд> пароль администратора базы данных.

Выполните команду для запуска контейнеров:

    

После загрузки образов и запуска контейнеров убедитесь, что они работают:

    

Вы должны увидеть примерно такой вывод:

    

Установка Bareos

Добавим репозитории Bareos с помощью официального скрипта:

    

Обновим список пакетов и установим необходимые компоненты:

    

Во время установки появится запрос на настройку Postfix. Выберите No configuration.

Screenshot 02 24 25 16:06:24

Затем будет предложено настроить подключение к базе данных. Выберите No.

Screenshot 02 24 25 16:07:15

Настройка подключения к базе данных

Запустим инструмент для настройки подключения к базе данных:

    

В первом окне выберите Yes.

Screenshot 02 24 25 16:07:53

В качестве типа подключения укажите TCP/IP.

Screenshot 02 24 25 16:08:10

Так как база данных запущена на localhost, выберите его.

Screenshot 02 24 25 16:08:26

Если вы не меняли порт в docker-compose.yml, укажите 5432.

Screenshot 02 24 25 16:08:49

В качестве метода аутентификации администратора выберите password.

Screenshot 02 24 25 16:09:04

Для пользователя базы данных также выберите password.

Screenshot 02 24 25 16:09:20

Bareos использует базу данных с именем bareos и пользователя bareos.

Создадим базу данных.

Screenshot 02 24 25 16:09:44

Затем создадим пользователя.

Screenshot 02 24 25 16:10:02

Установим пароль пользователя.

Screenshot 02 24 25 16:10:24

Подтвердим пароль.

Screenshot 02 24 25 16:10:40

Теперь необходимо ввести данные администратора PostgreSQL, которые мы задавали в docker-compose.yml.

Имя пользователя: admin.

Screenshot 02 24 25 16:11:10

Введите пароль администратора PostgreSQL.

Screenshot 02 24 25 16:11:29

Пароль администратора потребуется ввести несколько раз в процессе настройки.

Чтобы убедиться, что база создана и работает, откройте браузер и перейдите по адресу http://<ip_сервера>:8080.

Залогиньтесь, используя имя пользователя bareos и ранее заданный пароль.

Screenshot 02 24 25 16:12:28

После авторизации должны отобразиться таблицы базы данных Bareos.

Screenshot 02 24 25 16:12:46

Теперь запустим службы:

    

Проверим, что службы работают, подключены к базе данных и не содержат ошибок:

    

Настройка веб-интерфейса Bareos WebUI

Для работы веб-интерфейса Bareos необходимо включить php8-fpm в Apache2.

Включите модули Apache для работы с PHP-FPM:

    

Активируйте конфигурацию PHP 8.1 FPM:

    

Перезагрузите Apache, чтобы изменения вступили в силу:

    

В Ubuntu AppArmor может блокировать доступ php-fpm к файлам веб-интерфейса. Разрешим необходимые пути:

    

Применим новые политики безопасности:

    

Теперь необходимо создать пользователя bareos. Для его создания, воспользуемся утилитой bconsole:

    

Создадим учетную запись admin для веб-интерфейса:

    

Вместо <пароль_пользователя> укажите желаемый пароль.

Применим изменения:

    

Выйти из bconsole можно сочетанием клавиш Ctrl + D.

Теперь можно открыть браузер и перейти по адресу http://<ip_сервера>/bareos-webui. Войти в систему можно, используя ранее созданные учетные данные.

Screenshot 02 24 25 16:14:50

Подключение S3-хранилища к Bareos Storage Director

Создадим файл с параметрами подключения:

    

Добавим в него следующую конфигурацию:

    

Данные для заполнения (<s3_access_key> и <s3_secret_access_key>) можно найти в информации о бакете в панели управления.

Selection 184

Конфигурация бэкапного устройства

Создадим файл:

    

Запишем в него информацию об устройстве. Укажите имя своего бакета в Device Options:

    

Дадим пользователю Bareos доступ к этим файлам:

    

Bareos может не подключаться к хранилищу, если включён TLS. Отключим его, добавив TlsEnable=no и TlsRequire=no в следующие файлы.

Откроем файл bareos-sd.conf:

    

Изменим содержимое:

    

Откроем файл bareos-dir.conf:

    

Изменим содержимое:

    

Запомните или сохраните пароль, указанный в Password из bareos-dir.conf, он понадобится на следующем шаге.

Подключение Bareos Storage Daemon к Bareos Director

В bconsole подключим bareos-storage-daemon к bareos-director, используя ранее сохранённый пароль:

    

Выполним команду:

    

В команде укажите <ip_сервера_бэкапов> и <sd_passwd>.

Примените конфигурацию:

    

Для применения изменений перезапустим службы:

    

Обратите внимание, что Bareos читает файлы конфигурации только в ASCII-кодировке. Если вы редактировали файлы способом, отличным от указанного в инструкции, может возникнуть ошибка. Чтобы это исправить, необходимо изменить кодировку файлов. Сделать это можно при помощи команды:

    

Настройка бэкапов

Создание пользователя для соединения

Сначала необходимо создать пользователя, через которого основной сервер будет соединяться с сервером бэкапов.

Войдем в bconsole:

    

Выполним команду:

    

В команде укажите два параметра:

  • <usr_ip> — внешний IP-адрес сервера, для которого будут создаваться бэкапы.

  • <usr_pswd> — пароль для подключения. Его нужно придумать.

Примените изменения:

    

После выполнения команды в консоли появится подобный вывод:

Selection 185

Это сформированный конфигурационный файл с паролем пользователя. Сохраните значение из поля Password, оно понадобится для подключения сервера. Если пароль будет утерян, его можно найти с помощью команды:

    

Настройка пулов и вольюмов

Для хранения данных Bareos использует pool и volume:

  • Pool — хранилище резервных копий, ограниченное размером S3-бакета.
  • Volume — единица хранения данных, изначально предназначенная для сменных носителей, таких как ленты.

В нашем случае:

  • Размер volume (<i>) — должен быть равен полному объему информации сервера, который мы собираемся бэкапить.
  • Количество volumes (<n>) — определяет, сколько копий данных необходимо хранить.
  • VolumeRetention (<r>) — время хранения резервной копии в днях, после которого она будет помечена для перезаписи.

Данные из volume не удаляются, а только помечаются как стертые и подготовленные к перезаписи.

Настройка пула для полных бэкапов

Откроем файл конфигурации:

    

Отредактируйте, приведя к виду:

    

Настройка пула для инкрементальных бэкапов

Откроем файл:

    

Приведем к виду:

    

Создание FileSet

FileSet — это конфигурационный файл, в котором указывается, какие именно файлы или базы данных необходимо включить в бэкап, а также какие параметры будут использоваться при их копировании (например, уровень сжатия или метод проверки целостности данных).

FileSet для резервного копирования файлов в /home

Этот файлсет используется для бэкапа пользовательских данных, хранящихся в /home.

Создадим файл:

    

Добавим следующий конфиг:

    

Здесь:

  • Signature = MD5 — включает проверку целостности данных.

  • Compression = LZ4 — используется быстрый алгоритм сжатия, который снижает нагрузку на CPU.

  • File = "/home" — указывает, что резервное копирование будет выполняться для /home.

FileSet для резервного копирования баз данных MySQL

Для бэкапа MySQL необходимо использовать специальный плагин, позволяющий корректно копировать базы без прерывания работы сервера.

Создадим файл:

    

Добавим конфигурацию:

    

Здесь:

  • Plugin = "python3" — указывает, что для создания бэкапа будет использоваться плагин на Python.

  • ":module_name=bareos-fd-percona-xtrabackup" — использует Percona XtraBackup для создания бэкапа без остановки MySQL.

  • ":mycnf=/root/.my.cnf" — указывает путь к файлу конфигурации MySQL, содержащему учетные данные.

FileSet для резервного копирования баз данных PostgreSQL

Для PostgreSQL также используется специальный плагин, позволяющий создавать бэкапы без прерывания работы сервера.

Создадим файл:

    

Добавим:

    

Замените:

  • <psql_user> — на имя пользователя PostgreSQL.

  • <psql_passwd> — на пароль от базы данных.

Параметры:

  • ":db_host=/run/postgresql/" — указывает, что PostgreSQL работает через Unix-сокеты.

  • ":wal_archive_dir=/var/lib/pgsql/wal_archive/" — включает копирование WAL-журналов.

Установка прав для пользователя

Чтобы Bareos мог прочитать созданные файлы, дадим пользователю bareos необходимые права:

    

И обновить конфигурацию сервера bareos чтобы прочитать новые файлсеты:

    

Создание расписания бэкапов

Bareos позволяет задать расписание резервного копирования через параметр Schedule.

Запустим bconsole:

    

Создадим правило:

    

Применим изменение:

    

Мы задали расписание:

  • Полный бэкап (Level=Full) выполняется раз в 3 дня в 00:00.

  • Инкрементальный бэкап (Level=Incremental) выполняется ежедневно в 01:00.

Настройка заданий резервного копирования

Bareos использует два типа конфигурационных файлов для бэкапов:

  • JobDefs — содержит общие настройки, которые могут использоваться в нескольких заданиях.

  • Job — конкретное задание резервного копирования с указанием клиентских данных.

Создание общих правил для заданий (JobDefs)

Открываем bconsole:

    

Добавляем правило:

    

Применим изменение:

    

Описание параметров:

  • Storage=S3_Object — указывает, что бэкапы будут храниться в S3.

  • Level=Incremental — по умолчанию бэкап выполняется как инкрементальный.

  • Pool=Incremental — используется пул для инкрементальных копий.

  • FullBackupPool=Full — полные копии отправляются в пул Full.

  • Schedule=BackupSchedule — задает расписание.

  • Messages=Standard — формат логирования.

Создание задания для резервного копирования /home

Добавляем задачу:

    

Применим изменение:

    

Здесь:

  • Client=BackupUser — указывает, что бэкап выполняется для клиента BackupUser.

  • FileSet=HomeFileset — задает файловый набор с путями к данным.

Создание задания для восстановления данных

Чтобы можно было восстановить файлы, создадим задание RestoreJob:

    

Применим изменение:

    

Параметры:

  • Type=Restore — задает, что это задание восстановления.

  • Storage=S3_Object — указывает хранилище.

  • Pool=Incremental — используется пул инкрементальных бэкапов.

  • Where="/" — файлы восстанавливаются в корневую директорию.

Очистка ненужных конфигурационных файлов

Bareos по умолчанию создает демонстрационные конфигурации, которые не используются в продакшен-среде. Их необходимо удалить:

    

Очистим базу данных от неиспользуемых записей:

    

Настройка сервера, который будем бэкапить

Установка Bareos File Daemon

Bareos использует службу bareos-filedaemon, которая должна быть установлена на сервере, с которого будут создаваться резервные копии.

Установка в Ubuntu

Добавим репозиторий Bareos:

    

Обновим список пакетов и установим Bareos File Daemon:

    

Включим и запустим Bareos File Daemon:

    

Установка в RHEL

Добавим правила для файрвола, открыв необходимые порты:

    

Добавим репозиторий Bareos:

    

Обновим кеш пакетов и установим Bareos File Daemon:

    

Включим и запустим Bareos File Daemon:

    

Подключение к серверу бэкапов

Теперь необходимо настроить подключение к Bareos Director, используя пароль, который был получен на этапе создания пользователя.

Открываем конфигурационный файл:

nano /etc/bareos/bareos-fd.d/director/bareos-dir.conf

Указываем следующие параметры:

    

Обязательно добавьте параметры TlsEnable=no и TlsRequire=no, иначе сервер бэкапов не сможет подключиться.

Перезапускаем службу, чтобы применить изменения:

    

Включение поддержки плагинов на клиенте

Для резервного копирования баз данных необходимо включить поддержку плагинов в конфигурации клиента.

Открываем файл:

    

Приводим его к следующему виду:

    

Применяем изменения:

    

Установка пакетов для резервного копирования баз данных

MySQL

Для создания резервных копий MySQL потребуется Percona XtraBackup, а также два плагина: bareos-filedaemon-python3-plugin и bareos-filedaemon-percona-xtrabackup-python-plugin.

Установка в Ubuntu

Скачаем пакет Percona XtraBackup:

    

Установим пакет:

    

Установим плагины Bareos для работы с Percona XtraBackup:

    

Установка в RHEL

Скачаем пакет Percona XtraBackup:

    

Установим пакет:

    

Установим плагины Bareos для работы с Percona XtraBackup:

    

PostgreSQL

Для резервного копирования PostgreSQL необходимо установить пакеты bareos-filedaemon-python3-plugin, bareos-filedaemon-postgresql-python-plugin и pg8000 — драйвер Python для подключения к PostgreSQL.

Установка в Ubuntu

Установим плагины Bareos для PostgreSQL:

    

Установим pip для управления пакетами Python:

    

Установим библиотеку pg8000 для работы с PostgreSQL:

    

Установка в RHEL

Установим плагины Bareos для PostgreSQL:

    

Установим pip для управления пакетами Python:

    

Установим библиотеку pg8000 для работы с PostgreSQL:

    

Настройка WAL-архивации в PostgreSQL

Для корректного резервного копирования PostgreSQL необходимо включить WAL-архивацию.

Открываем конфигурацию PostgreSQL:

    

Приводим параметры к виду:

    

Здесь:

  • archive_mode = on — включает архивирование WAL.

  • archive_command = 'cp %p /var/lib/pgsql/wal_archive/%f' — копирует WAL-журналы в /var/lib/pgsql/wal_archive/.

  • archive_timeout = 60 — задаёт интервал в 60 секунд для принудительного сохранения WAL.

Создадим директорию для хранения архивных WAL-файлов:

    

Настроим права доступа:

    

Применим изменения:

    

Если к базе данных ограничен внешний доступ, необходимо настроить доступ к базе с сервера бэкапов. Для этого отредактируйте файл:

    

Добавляем строку с IP-адресом сервера бэкапов:

    

Где <bareos_external_ip> — IP-адрес сервера бэкапов.

Перезапускаем PostgreSQL:

    

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

Ручное создание резервной копии

Для проверки можно запустить тестовый бэкап вручную из консоли bconsole или через веб-интерфейс.

Создание бэкапа из консоли

  1. Открываем консоль управления Bareos:
    
  1. Запускаем задание:
    
  1. Выбираем нужное задание (например, BackupJob) и подтверждаем запуск, введя yes.
  2. Дожидаемся завершения бэкапа и проверяем его статус:
    
  1. Чтобы посмотреть логи последнего задания, используем:
    

Создание бэкапа через веб-интерфейс

  1. Открываем Bareos WebUI — http://<ip_сервера>/bareos-webui.
  2. В меню переходим в «Jobs» → «Run».
  3. Выбираем нужное задание, клиент и подтверждаем запуск.

Screenshot 02 25 25 13:17:04

  1. Ожидаем завершения выполнения задания и проверяем его статус во вкладке «Jobs» → «Show».
Была ли статья полезна?
Ваша оценка очень важна