Как известно, все люди делятся на два типа: те, кто еще не делает резервные копии, и те, кто их уже делает. У тех, кто только начинает делать резервные копии, обычно первый вопрос, который возникает, — как заархивировать данные.
Простые варианты (вырезание заготовок вручную, архивирование целых каталогов на других серверах) мы рассматривать не будем — у них весьма скромные возможности по индексированию и поиску архивных файлов.
Вместо этого давайте обратимся к системам автоматического резервного копирования, в частности к Bacula. В этой статье не рассматривается вопрос, почему бакула.
Основная причина в том, что он распространяется по бесплатной лицензии, доступен на множестве платформ и обладает большой гибкостью.
Второй вопрос после выбора системы архивирования – это выбор места хранения резервных копий.
Bacula позволяет использовать стримеры, компакт-диски, записывать архивы в устройства FIFO и в обычные файлы.
Стример удобен на корпоративных серверах, где есть постоянное физическое подключение к оборудованию.
Хранение архивов в файлах подходит, когда объем архивов не превышает объем жестких дисков, плюс для надежности хранения желательно сделать RAID-массив с резервированием, а то и несколько физических серверов для резервного копирования, желательно в разных помещениях.
В противном случае все это произойдет еще до первого пожара.
Нарезка на диски – домашний вариант, основным недостатком которого является необходимость регулярно втыкать свежие диски.
Мы настроили Bacula для архивирования данных на Amazon S3. Amazon S3 — файловое хранилище в облаке Amazon, которое очень недорогое и подходит для архивирования любых серверов, постоянно подключенных к Интернету.
Это могут быть домашние компьютеры, офисные серверы и серверы в дата-центрах.
Итак, приступим к настройке.
В нашем бизнесе архивируются локальная сеть офиса и небольшой кластер в дата-центре.
DirectorBacula спроектирован таким образом, что центральную роль в нем играет главный сервер Director. Его функция — хранить информацию обо всей системе архивирования, запускать необходимые задачи по расписанию и протоколировать результаты их выполнения.
Устанавливаем на сервер офисной сети пакет bacula-director-mysql (так он называется в Debian).
Bacula имеет отличную документацию по настройке.
Я остановлюсь только на ключевых настройках.
В разделе Каталог указывается адрес сервера MySQL, на котором будет храниться индекс архива, имя базы данных, имя и пароль.
В разделе «Сообщения» прописываем электронную почту администратора, на которую будут приходить отчеты о результатах выполнения:
mailcommand = "/usr/lib/bacula/bsmtp -h smtp.example.com -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r"
mail = [email protected] = all, !skipped
StorageBacula имеет распределенную архитектуру.
Серверы, к которым подключаются носители информации, на которые будут записываться архивы, называются Хранилищами.
Именно серверы хранения будут взаимодействовать с Amazon S3. В нашей системе нам понадобилось два Storage-сервера — один установлен в офисе, непосредственно на сервере с Директором (на него будут резервироваться все данные с офисных компьютеров), другой на одном из серверов в дата-центре (данные с другие компьютеры в дата-центре перейдут туда).
Смысл разделения — избежать гонения платного трафика между дата-центром и офисом.
Зарегистрировавшись в Amazon AWS и создав корзину с выбранным вами именем, вы получите следующие данные: имя корзины, ключ_доступа и секретный_ключ.
Следующим шагом будет использование модуля s3fs для Fuse для монтирования нашей корзины непосредственно в файловую систему сервера.
s3fs не является частью дистрибутива Debian — вам придется собрать его вручную.
Почему-то последние версии заработали не сразу (были некоторые зависания после удаления файлов, пришлось перемонтировать файловую систему), а вот версия 1.16 заработала сразу без единой проблемы.
В нагрузку сервера вписываем следующее: s3fs your-bucket-name /mnt/backup -o allow_other,retries=10,connect_timeout=30,readwrite_timeout=30
И создайте файл /etc/passwd-s3fs с паролями S3: access_key:secret_key
После монтирования файловой системы мы установим пакет bacula-sd и попросим bacula хранить архивные файлы в S3. Для этого в файле конфигурации bacula-sd.conf в разделе Storage укажите Имя, чтобы мы могли легко его идентифицировать, например Name=companyname-office-sd, Maximum Concurrent Jobs=1, чтобы не было одновременный доступ к различным файлам через S3. В разделе «Директор» вводим имя нашего сервера «Директор» и какой-нибудь случайный пароль.
В разделе Storage описываем Device — фактическое физическое место хранения архивов: Device {
Name=S3-companyname-office
Media Type=file
ArchiveDevice=/mnt/backup/office
Label Media=yes;
Random Access=yes;
AutomaticMount=yes;
RemovableMedia=no;
AlwaysOpen=no;
}
Теперь вернемся на минутку к серверу Director и создадим в его конфигурации новый раздел Storage: Storage {
Name = S3-companyname-office
Address = storage.server.domain.name
SDPort = 9103
Password = "storage-server-password"
Device = S3-companyname-office
Media Type = File
Maximum Concurrent Jobs = 1
}
В разделе Director указываем тот же пароль, что и в конфиге Storage.
File DaemonFile Daemon — это настоящий демон, который устанавливается на компьютеры, для которых необходимо выполнить резервное копирование.
На всех машинах кластера, на офисных компьютерах, где есть ценные данные, установлен пакет bacula-fd и настроен его конфиг bacula-fd.conf. В разделе «Директор» вводим ID нашего сервера «Директор» и придумываем новый случайный пароль.
На этом его настройка завершена, и мы снова возвращаемся на сервер Director для регистрации нового клиента.
В конфиге Директора создаем новый раздел: Client {
Name = server-name-fd
Address = this.server.host.name
FDPort = 9102
Catalog = MyCatalog
Password = "file-server-password"
Maximum Concurrent Jobs = 1
AutoPrune = yes
Job Retention = 365 days
}
В разделе Director указываем тот же пароль, что и в конфиге File Daemon.
Важным параметром является сохранение заданий.
По истечении этого времени старые данные будут удалены из индекса архива.
Чем дольше это время, тем дольше ваши старые архивные файлы не будут перезаписаны, и тем больше денег вы заплатите за Amazon S3. Чем меньше, тем дешевле вам обойдется резервное копирование, но и глубина архивирования будет меньше.
Кроме того, убедитесь, что Полное архивирование происходит чаще, чем Сохранение задания, иначе у вас будут моменты, когда старые данные уже удалены, а новые еще не заархивированы.
Освобождение места Обратите внимание, что данные физически не удаляются из архива, даже если ссылки на них удаляются из индекса после истечения Интервала хранения.
Удаление из индекса просто означает, что можно записать новые файлы для замены старых.
Это не освобождает место на диске, и вы не заплатите меньше, даже если очистите весь индекс.
Физически файлы можно либо удалить вручную, убедившись, что в индексе больше нет ссылок на них, либо установить последнюю версию bacula, которая умеет автоматически усекать освободившиеся тома.
На практике это требуется редко, и мы этой возможностью не пользуемся.
Настройка межсетевых экранов Во время работы bacula требуется три типа TCP-соединений — от Директора к Хранилищу на порту 9103, от Директора к Файловому Демону на порту 9102 и от Файлового Демона к Хранилищу на порту 9103. Во всех этих направлениях фаерволлы должны быть открыты, а адреса, указанные в параметрах Address в Storage and File Daemon, должны быть доступны в указанных направлениях.
В частности, если вдруг ваше Хранилище окажется внутри локальной сети, то Директор и Файловые Демоны, которые будут в нем архивироваться, также должны находиться внутри той же сети.
Если вдруг по каким-то причинам вам нужно держать Storage внутри сети, то вам нужно настроить маршрутизацию таким образом, чтобы соответствующий порт пробрасывался внутри сети.
Особенности s3fs При записи в любой файл s3fs считывает всю предыдущую версию файла на компьютер, все изменения происходят в локальной копии, и после закрытия файла он полностью загружается обратно в S3. Это значит, что даже добавление нескольких байт к 500-мегабайтному архивному файлу приведет к передаче по сети гигабайта.
Поскольку трафик на Amazon S3 тарифицируется, не стоит забывать об этой особенности s3fs. Размер файла не должен быть очень большим, чтобы загрузка и выгрузка обратно были небольшими.
У нас есть 3 пула на каждом сервере хранения - для полных резервных копий (Максимальное количество байтов тома = 500000000, сохранение тома = 12 месяцев), для резервных копий Diff (Максимальное количество байтов тома = 300000000, сохранение тома = 7 месяцев) и для добавочных резервных копий (максимальный объем Байт=100000000, Хранение тома=2 месяца).
Обратите внимание, что в данном примере дифференциальные резервные копии необходимо делать не реже одного раза в 2 месяца (у нас 1 месяц), иначе будут случаи, когда инкрементные резервные копии уже удалены, а свежего дифференциального резервного копирования ещё нет. Аналогично, полные резервные копии следует делать не реже одного раза в 7 месяцев (у нас их 6).
Кроме того, поскольку вам нужно место для хранения локальных копий, вам необходимо всегда иметь его в файловой системе.
Где хранить локальные копии указывается в опции use_cache при монтировании s3fs. По умолчанию это корневая файловая система.
Чем больше файлов вы открываете одновременно, тем больше места вам понадобится.
Поэтому мы ограничиваем как максимальное количество одновременных заданий на одном сервере хранения (чтобы многие файлы не оставались открытыми), так и максимальное количество байтов тома.
Если место внезапно закончится, s3fs зависнет и будет ждать, пока место освободится.
Цена вопросаЦены на хранилище варьируются от $0,037 за гигабайт в месяц (для больших объемов хранилища с пониженной надежностью 99,99%) до $0,14 за гигабайт в месяц (для небольших объемов хранилища со стандартной надежностью 99,999999999%).
Мы выбрали стандартную надежность и храним около терабайта архивов — это стоит (вместе со стоимостью трафика) около $180 в месяц.
Безопасность.
Вот небольшой контрольный список, касающийся безопасности:
- закрыть всем доступ на чтение к конфигам bacula и файлу /etc/passwd-s3fs, поскольку разглашать написанные там пароли крайне опасно;
- ограничить доступ к портам 9101, 9102 и 9103, за исключением направлений, необходимых для работы бакулы;
- настроить bacula для использования TLS при передаче данных по общедоступным сетям;
- закрыть каталоги с архивами от посторонних глаз;
- использовать плавкое шифрование для шифрования данных, которые будут поступать в Amazon S3;
- создавать разные корзины S3 на разных серверах хранения, чтобы в случае компрометации одного архива хакер не получил доступ к другим;
- Регулярно выполняйте тестовое восстановление, чтобы убедиться, что вы не забыли поместить в архивы что-нибудь важное.
- Бакула - www.bacula.org
- Амазонка S3 — aws.amazon.com/s3
- s3fs - code.google.com/p/s3fs/wiki/FuseOverAmazon
- шифрование в предохранителе - prefetch.net/blog/index.php/2007/05/29/encrypting-data-with-the-fuse-encryption-module
-
О Плохом И Хорошем Коде
19 Oct, 24 -
Выпущен Софтфон 3Cxphone Для Mac Os
19 Oct, 24