Off-site резервирование данных в Carbonio
Ранее мы уже рассказывали про систему резервирования данных в коммерческой версии Carbonio. Напомним, что она поддерживает два вида резервирования - снятие снапшотов системы, а также транзакционное резервирование, которое позволяет сохранять каждую транзакцию и в случае возникновения проблем восстанавливать не только систему целиком, но и отдельные элементы. Однако для действительно надежного резервирования данных требуется, чтобы сервер и резервная копия данных находились в географически разнесенных локациях. В данной статье мы расскажем о том, как настроить Carbonio Backup таким образом, чтобы получить полноценное Off-site резервирование данных.
Данная инструкция подходит только для коммерческой версии Carbonio.
В этой статье мы будем исходить из того, что у вас уже настроено резервное копирование в локальную папку /opt/zextras/backup и рассмотрим варианты настройки как с полностью удаленным резервным копированием, так и вариант, при котором будут создаваться как локальная, так и off-site резервные копии.
1. Хранилище NFS
Самым простым способом организовать резервное копирование на удаленной машине - это примонтировать в пути резервирования NFS-папку на удаленной машине и записывать резервную копию туда.
Монтирование осуществляется средствами системы. Пример записи в /etc/fstab для автоматического монтирования хранилища в пути резервного копирования приведен ниже:
10.0.1.47:/opt/CarbonioBackup /opt/zextras/backup/ nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
В этом примере мы автоматически монтируем папку на сетевом хранилище (10.0.1.47:/opt/CarbonioBackup) в локальную папку (/opt/zextras/backup/), указываем протокол и некоторые параметры, улучшающие скорость и стабильность подключения хранилища.
Отметим, что при монтировании пустого хранилища в пути резервирования вам потребуется заново провести процедуру SmartScan. Это создаст в новом расположении снапшот системы, к которому впоследствии будут инкрементно записываться осуществляемые в системе транзакции.
Также возможен вариант размещения удаленной резервной копии в хранилище, подключенном в другой папке. Для этого необходимо смонтировать хранилище в желаемой папке и смигрировать путь резервирования в нее. Пример:
carbonio backup migrateBackupVolume Local /opt/zextras/backup_nfs threads 10
В этом примере мы вызываем утилиту carbonio-advanced, указываем модуль резервного копирования и команду для переноса папки резервного копирования в другой путь на локальном диске и делаем это ы 10 одновременных потоков.
В данном случае мы указываем новую папку для резервного копирования, в которую уже подключен накопитель NFS и переносим данные из старого пути резервного копирования в новый. Как правило, перенос данных из старой папки осуществляется быстрее, чем создание новой резервной копии.
Отметим, что при использовании хранилища NFS для резервного копирования необходимо уделять внимание ширине интернет-канала, связывающего сервер Carbonio с хранилищем, а также сетевой задержке. В случае, если они будут недостаточными, возможно возникновение различных проблем, связанных с недостаточной скоростью резервирования данных.
2. Синхронизация данных в пути резервирования на удаленном сервере
Другим вариантом организации off-site резервного копирования является использование утилиты rsync, которая позволяет синхронизировать данные в локальной папке с удаленным сервером.
Данная утилита может быть установлена из стандартных репозиториев Ubuntu, а ее использование сводится к одной команде, в которой мы указываем имя исходной папки, а также имя папки на целевом сервере.
Пример использования rsync:
rsync -avzh /opt/zextras/backup/ root@10.0.1.47:/opt/CarbonioBackup
Это простейший пример, который обеспечивает однократную синхронизацию данных. В случае, если вы не используете транзакционное резервирование, можно выполнять такую синхронизацию сразу после снятия снапшота с почтовой системы. Поскольку rsync также копирует данные инкрементно, при новых запусках будут копироваться только те файлы, которые не были скопированы в прошлый раз.
Для того, чтобы синхронизация выполнялась постоянно, в связке с rsync следует использовать утилиту inotifywait, которая отслеживает изменения в файловой системе и запускает синхронизацию в случае их возникновения. Пример использования:
while inotifywait -r -e modify,create,delete,move /directory; do
rsync -avzh /opt/zextras/backup/ root@10.0.1.47:/opt/CarbonioBackup
done
Здесь мы настраиваем inotifywait, чтобы запускать rsync при каждом изменении файловой системы, чтобы оба хранилища оставались автоматически синхронизированными.
3. Резервирование в объектное хранилище
Копирование резервной копии в объектное хранилище, которое поддерживает избыточное хранение и географическое распределение данных, является наиболее надежным способом организовать off-site резервирование данных.
Для того, чтобы начать использовать объектное хранилище в качестве расположения для резервной копии, потребуется создать новый том S3, подключить его в качестве хранилища резервной копии, а затем осуществить миграцию данных резервной копии в него.
Отметим, что для корректной работы резервирования в объектном хранилище, необходимо, чтобы его показатели IOPS и скорости записи соответствовали данным показателям первичного хранилища данных.
Первое, что нужно сделать для резервирования в объектное хранилище - создать бакет S3, в который будет вестись запись. Это можно сделать как в Консоли администратора, так и в командной строке.
Для добавления бакета перейдите в раздел Хранилище - Список Бакетов и нажмите на кнопку “Создать”.
В появившемся меню выберите формат используемого объектного хранилища и укажите данные добавляемого бакета:
Метка — метка подключаемого бакета;
Имя блока — название подключаемого бакета;
Ключ доступа;
Секретный ключ;
URL — ссылка на бакет;
Обращение — префикс, который будет добавляться к файлам при записи их в данный бакет. Это позволяет отличать данные записанные Carbonio от данных, записанных в тот же бакет другими приложениями;
Заметки — поле для указания дополнительной информации, касающейся добавляемого бакета.
После ввода всех данных можно прямо в Консоли администратора протестировать подключение к бакету S3 и добавить в список имеющихся бакетов.
Добавить бакет в командной строке можно с помощью команды carbonio core doCreateBucket с указанием типа хранилища и параметров, аналогичных тем, что указывались в графическом интерфейсе. Например:
carbonio core doCreateBucket MinIO MinioBackup P@ssw0rd ******* http://s3.company.ru BackupBucket
В данном случае мы создаем бакет MinIO с параметрами:
Bucket name - MinioBackup
Access Key - P@ssw0rd
Secret Key - *******
URL - http://s3.company.ru
Label - BackupBucket
Получить список бакетов можно командой carbonio core listBuckets, добавив тип подключенного бакета. Например, carbonio core listBuckets Yandex
В выводе этой команды помимо введенных нами параметров содержится также uuid подключенного бакета. Он требуется для подключения бакета в качестве хранилища резервной копии.
Настроить резервирование в бакет S3 можно только в командной строке. Делается при помощи команды carbonio backup setBackupVolume. Укажите также тип хранилища и его uuid, чтобы подключить созданный бакет в качестве хранилища для бэкапа. Например:
carbonio backup setBackupVolume Yandex 39ec16f2-b71c-4cf0-a72e-5117445ff230
После того как хранилище будет подключено, выполните SmartScan для создания off-site снапшота данных почтовой системы:
carbonio backup doSmartScan start deep true remote_metadata_upload true
Еще раз обращаем ваше внимание, что система резервного копирования в Carbonio чрезвычайно чувствительна к скорости хранилища и сетевой задержке, поэтому перед использованием описанной инструкции настоятельно рекомендуем убедиться в том, что показатели IOPS и скорости чтения/записи у вашего хранилища S3 сопоставимы с показателями первичного тома Carbonio.
По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.