5.1.5.5. Бекапы
Бекап - резервная копия обслуживаемой системы.
5.1.5.5.1. Как работает
Выделим два способа создания резервной копии: Создание снимка БД с использованием встроенных утилит и сохранение data-dir
базы данных напрямую из файловой системы. Подробнее ниже.
5.1.5.5.2. Предпосылки
В ETCD кластере, используемом для работы Kube-API, часто могут содержаться важные данные, восстановить которые будет невозможно в случае потери данной БД. К примеру, в случае с in-cloud, это могут быть данные о проектах и инстансах в них. По этой причине, даже в случае аварийного восстановления кластера, необходимо попытаться восстановить данны е и при возможности создать резервную копию.
Таким образом бекап следует делать в следующих ситуациях:
-
Регулярно по расписанию с использованием специальных утилит или собственных скриптов.
-
Перед проведением технических работ с кластером. Чтобы иметь возможность восстановить прежнее состояние кластера в случае ошибок.
-
В случае инцидента, перед проведением восстановительных работ.
5.1.5.5.3. Инструкция
5.1.5.5.3.1. Создание мгновенных снимков
- etcdctl
- ectl
- nectl
- kectl
Рекомендуемый метод. Позволяет сохранить дамп за пределами контейнера ETCD.
etcdctl --endpoints=${ENDPOINTS} snapshot save PATH_TO_SAVE/backup.db
Рабочий вариант, когда под рукой нет исполняемого файла. Дамп будет сохранен внутри файловой системы контейнера. Поэтому рекомендуется указывать путь в примонтированные области.
ectl snapshot save /var/lib/etcd/backup.db
В кластерах in-cloud файлы ETCD по умолчанию хранятся на мастере по одноименному пути /var/lib/etcd
Теперь на хостовой машине вы можете скопировать файл /var/lib/etcd/backup.db
в другое место, чтобы сохранить его. Например:
cp /var/lib/etcd/backup.db /tmp/etcd/backup.db
Рабочий вариант, когда под рукой нет исполняемого файла. Дамп будет сохранен внутри файловой системы контейнера. Поэтому рекомендуется ука зывать путь в примонтированные области.
nectl snapshot save /var/lib/etcd/backup.db
В кластерах in-cloud файлы ETCD по умолчанию хранятся на мастере по одноименному пути /var/lib/etcd
Теперь на хостовой машине вы можете скопировать файл /var/lib/etcd/backup.db
в другое место, чтобы сохранить его. Например:
cp /var/lib/etcd/backup.db /tmp/etcd/backup.db
Вариант удаленного создания и сохранения резервной копии.
Для использования функции dlbackupfile
необходимо задать переменные SEARCH_NAMESPACE
, SEARCH_POD_NAME
, NODE_USERNAME
и BACKUP_FILE
А также alias-ы kectlflagsearch
, kgdatadirpath
, kectl
и dlbackupfile
export SEARCH_NAMESPACE=undefined
export SEARCH_POD_NAME=undefined
export NODE_USERNAME=undefined
export BACKUP_FILE=undefined
kectl snapshot save $(kgdatadirpath $SEARCH_NAMESPACE $SEARCH_POD_NAME )/$BACKUP_FILE
Теперь вы можете скопировать файл с хостовой машины в текущую директорию используя данную команду:
dlbackupfile $SEARCH_NAMESPACE $SEARCH_POD_NAME $NODE_USERNAME $BACKUP_FILE
5.1.5.5.3.2. Создание резервной копии файлов БД
Основной файл БД ETCD кластера расположен по пути /var/lib/etcd/member/snap/db
В случае, если нет возможности для создания мгновенного снимка, можно создать резервную копию
файла БД /var/lib/etcd/member/snap/db
или целиком дериктории /var/lib/etcd
:
cp -r /var/lib/etcd/member/snap/db /tmp/etcd/db
cp -r /var/lib/etcd /tmp/etcd/backup