Бекап VestaCP в Google Cloud Storage (Nearline)
Posted: Mon Jul 09, 2018 2:09 pm
Всем привет, так как официальной реализации бекапов в облачные хранилища (в частности засвеченный Google Nearline expiremental backup support) дождаться не пришлось - накостылял максимально простую и в то же время гибкую реализацию выгрузки бекапов в Google Cloud Storage.
Изначально была идея использовать CloudBerry Backup, который умеет выгрузку в Google Cloud, но позже счел данную утилиту неуместной и громоздкой в данной ситуации, не будем пересоздавать бекапы, а будем работать с теми архивами, которые создает VestaCP в /home/backup/ и выгружать их официальной утилитой для работы с Google Cloud - gsutil.
Настройка Google Cloud Storage
У вас уже должен быть аккаунт в console.cloud.google.com, с настроенным методом оплаты, создадим хранилище и учетную запись для доступа к нему.
1. IAM и администрирование -> Сервисные аккаунты: Создаем сервисный аккаунт с ролью (Хранение данных -> Администратор объектов в хранилище), отмечаем чек-бокс "Создать новый закрытый ключ" (в формате .json). Все, сервисный пользователь создан, начнется загрузка .json файла с ключем доступа пользователя, он нам пригодится позже.
2. Переходим в раздел "Storage" и создаем сегмент (собственно хранилище). Класс хранилища выбирайте межу Multi-Regional и Regional (не Nearline, он для хранения данных более одного месяца, за удаление ранее чем через месяц после создания файла в хранилище класса Nearline будет взыматься дополнительная плата (получится в 2 раза дороже чем Multi-Regional при создании ежедневного бекапа одного и того же объема). Насчет стоимости, у меня один виндовый сервер бекапится каждый час инкрементально в Multi-Regional EU, бекапы хранятся около 2х месяцев, общий объем около 80GB - стоимость $0.67/мес. В данном случае я выбрал Regional EU-North1 (так как самый дешевый $0.02/GB)
3. Настраиваем жизненный цикл файлов резервного копирования. В списке сегментов, в столбце "Жизненный цикл" кликаем на "нет" и в открывшемся окне настраиваем удаление файлов (я выбрал удаление файлов спустя 14 дней после создания).

4. Настраиваем права доступа к сегменту

Выбираем созданного в первом шаге пользователя с ролью "Администратор объектов в хранилище" и сохраняем изменения.

Настройка сервера
Все действия по выгрузке бекапа будут выполнятся от учетной записи "admin".
1. Дадим доступ пользователю "admin" к директории /home/backup/ добавлением его в группу backup
2. Скорректируем права на /home/backup/ (дадим разрешения не только для владельца, а и для группы backup)
3. Устанавливаем gsutil (В первом же шаге, установщик спросит куда устанавливать утилиту, рекомендую указать - /opt/) Инструкции под разные ОС
4. Переключаемся в юзера "admin"
5. Передаем на сервер скачанный при создании сервисного аккаунта в Google Cloud .json файл и авторизируем gsutil для работы с созданным хранилищем.
6. Проверяем что авторизация работает, запрашиваем у GCP список фалов в вашем сегменте.
Даже если хранилище пустое - должен вернутся пустой ответ, но без ошибок.
7. Редактируем cron задание бекапа в панели Vesta к такому виду
Использованные ключи утилиты gsutil
Изначально была идея использовать CloudBerry Backup, который умеет выгрузку в Google Cloud, но позже счел данную утилиту неуместной и громоздкой в данной ситуации, не будем пересоздавать бекапы, а будем работать с теми архивами, которые создает VestaCP в /home/backup/ и выгружать их официальной утилитой для работы с Google Cloud - gsutil.
Настройка Google Cloud Storage
У вас уже должен быть аккаунт в console.cloud.google.com, с настроенным методом оплаты, создадим хранилище и учетную запись для доступа к нему.
1. IAM и администрирование -> Сервисные аккаунты: Создаем сервисный аккаунт с ролью (Хранение данных -> Администратор объектов в хранилище), отмечаем чек-бокс "Создать новый закрытый ключ" (в формате .json). Все, сервисный пользователь создан, начнется загрузка .json файла с ключем доступа пользователя, он нам пригодится позже.
2. Переходим в раздел "Storage" и создаем сегмент (собственно хранилище). Класс хранилища выбирайте межу Multi-Regional и Regional (не Nearline, он для хранения данных более одного месяца, за удаление ранее чем через месяц после создания файла в хранилище класса Nearline будет взыматься дополнительная плата (получится в 2 раза дороже чем Multi-Regional при создании ежедневного бекапа одного и того же объема). Насчет стоимости, у меня один виндовый сервер бекапится каждый час инкрементально в Multi-Regional EU, бекапы хранятся около 2х месяцев, общий объем около 80GB - стоимость $0.67/мес. В данном случае я выбрал Regional EU-North1 (так как самый дешевый $0.02/GB)
3. Настраиваем жизненный цикл файлов резервного копирования. В списке сегментов, в столбце "Жизненный цикл" кликаем на "нет" и в открывшемся окне настраиваем удаление файлов (я выбрал удаление файлов спустя 14 дней после создания).
4. Настраиваем права доступа к сегменту
Выбираем созданного в первом шаге пользователя с ролью "Администратор объектов в хранилище" и сохраняем изменения.

Настройка сервера
Все действия по выгрузке бекапа будут выполнятся от учетной записи "admin".
1. Дадим доступ пользователю "admin" к директории /home/backup/ добавлением его в группу backup
Code: Select all
usermod -a -G backup admin
Code: Select all
chmod 0751 /home/backup/
Code: Select all
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
Code: Select all
su admin
Code: Select all
gcloud auth activate-service-account --key-file путь_к_файлу.json
Code: Select all
gsutil ls gs://название-сегмента
7. Редактируем cron задание бекапа в панели Vesta к такому виду
Code: Select all
sudo /usr/local/vesta/bin/v-backup-users && /opt/google-cloud-sdk/bin/gsutil -q rsync -r /home/backup/ gs://название-сегмента/
- -q - Не выводить информацию о процессе синхронизации, если его не указать - VestaCP будет присылать письмо о каждом создании бекапа с выводом утилиты gsutil.
- -r - рекурсивное копирование.