Резервное копирование хранилища etcd
В этом разделе описано, как осуществлять резервное копирование и восстановление из копии хранилища конфигураций etcd с помощью утилит etcdctl
и etcdutl
.
В разделе рассматривается работа с etcd при следующих условиях:
В системе должны быть установлены утилиты |
Резервное копирование etcd
Чтобы создать резервную копию etcd, выполните следующую команду:
ETCDCTL_API=3 etcdctl snapshot save snapshot.db --cert=/etc/ssl/etcd/ssl/ca.pem --key=/etc/ssl/etcd/ssl/ca-key.pem
На конкретных инсталляциях SIEM пути к файлам TLS-сертификата (
|
Чтобы получить расширенный лог сообщений о ходе создания резервной копии, добавьте к команде выше опцию --debug=true .
|
Чтобы удостовериться, что резервная копия создана успешно, выполните следующую команду:
etcdutl snapshot status snapshot.db -w table
Пример вывода команды etcdutl snapshot status snapshot.db -w table
+---------+----------+------------+------------+
| HASH | REVISION | TOTAL KEYS | TOTAL SIZE |
+---------+----------+------------+------------+
| 7ef846e | 485261 | 11642 | 94 MB |
+---------+----------+------------+------------+
Номер ревизии (REVISION
) увеличивается на 1 при каждой операции записи в etcd.
Восстановление etcd из резервной копии
Для восстановления etcd из резервной копии в кластере Kubernetes следует использовать вариант восстановления "revision bumps": контроллеры Kubernetes используют так называемые информеры (informers), которые работают как кэш. Восстановление etcd из резервной копии без использования revision bumps может привести к некорректному восстановлению кэшей и, как следствие, неопределенному поведению контроллеров.
Чтобы выполнить восстановление etcd из резервной копии:
-
Выполните следующую команду:
etcdutl snapshot restore snapshot.db --bump-revision <n_bumps> --mark-compacted --data-dir <new_dir>
Здесь:
-
<n_bumps>
— 64-битное целое число, на которое следует увеличитьREVISION
. Его можно оценить, умножив среднее число операций записи в etcd в секунду на число секунд с момента создания резервной копии. Можно установить значение, большее оценки, меньшее — не рекомендуется.Например, если в etcd производится 100 операций записи в секунду, а резервная копия создана 24 часа назад, минимально допустимое значение
n_bumps
— 24 * 60 * 100 = 144000. -
<new_dir>
— новый каталог данных etcd, например,/var/lib/etcd_restored/
.Опция
--mark-compacted
отмечает предыдущие ревизии etcd как сжатые. Это позволяет удостовериться, что все процессы отслеживания etcd остановлены, и кэши информеров сделаны недействительными.
-
-
Остановите сервис etcd, выполнив следующую команду:
systemctl stop etcd.service
-
В файле
/etc/etcd.env
измените значение переменнойETCD_DATA_DIR
на путь, указанный в качестве значения<new_dir>
на шаге 1. -
Запустите сервис etcd, выполнив следующую команду:
systemctl start etcd.service
-
При необходимости удалите каталог, в котором хранились данные etcd до восстановления, с помощью следующей команды:
rm -rf <old_dir>
Здесь:
-
<old_dir>
— каталог, в котором хранились данные etcd до восстановления, например,/var/lib/etcd/
.
-