Восстановление Etcd
Если остались работающие узлы Etcd, восстанавливать сбойный узел из резервной копии не требуется.
-
Удалите сбойный узел и добавьте в кластер повторно:
$ mkdir /var/lib/etcd/default.etcd/old$ mv /var/lib/etcd/default.etcd/member/ /var/lib/etcd/default.etcd/old/$ export ETCDCTL_API=2$ etcdctl --endpoints=http://<IP_АДРЕС_ЖИВОГО_УЗЛА_КЛАСТЕРА>:2379 member list$ etcdctl --endpoints=http://<IP_АДРЕС_ЖИВОГО_УЗЛА_КЛАСТЕРА>:2379 member remove <ID_СБОЙНОГО_УЗЛА>$ etcdctl --endpoints=http://<IP_АДРЕС_ЖИВОГО_УЗЛА_КЛАСТЕРА>:2379 member add <ИМЯ_СБОЙНОГО_УЗЛА> http://<АДРЕС_СБОЙНОГО_УЗЛА>:2380 -
Отредактируйте на сбойном узле конфигурационный файл
/etc/etcd/etcd.conf, указав в параметре:$ ETCD_INITIAL_CLUSTER_STATE="existing" -
Запустите сбойный узел.
Подробная информация о восстановлении описана на официальном сайте.
Чтобы восстановить Etcd, если кластер утерян полностью:
-
На всех узлах выполните команды:
$ systemctl stop etcd$ mkdir /var/lib/etcd/default.etcd/old$ mv /var/lib/etcd/default.etcd/member/ /var/lib/etcd/default.etcd/old/ -
На первом узле:
-
Распакуйте содержимое архива резервной копии:
$ tar xvf meta-1#etcd#<DATETIME>.tar.gz -
Перед каждым параметром конфигурационного файла
/etc/etcd/etcd.confвведитеexportи загрузите в текущие переменные окружения, кромеETCD_DATA_DIR.Пример выводаexport ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"export ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"export ETCD_NAME="meta-1"export ETCD_ELECTION_TIMEOUT="2000"export ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.30:2380export ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.30:2379export ETCD_INITIAL_CLUSTER="meta-2=http://meta-2:2380,meta-1=http://meta-1:2380,meta-3=http://meta-3:2380"export ETCD_INITIAL_CLUSTER_STATE="existing"export ETCD_INITIAL_CLUSTER_TOKEN="etcd-token"export ETCD_ENABLE_V2="true"export ETCD_AUTO_COMPACTION_RETENTION="3" -
Запустите
Etcdвsingle node clusterс использованием восстановленных данных:$ /usr/bin/etcd --force-new-cluster --data-dir="<ПУТЬ_К_РАСПАКОВАННОМУ_БЕКАПУ>/" -
Оставьте консоль работать, не закрывайте процесс.
-
-
Зайдите на второй узел:
-
Подключитесь через Etcdctl к первому узлу и проверьте список членов кластера:
$ etcdctl --endpoints=http://meta-1:2379 member list -
Оставьте эту консоль открытой.
-
-
Консоль первого узла, где работает процесс
Etcd, остановите через CTRL+C. Затем запустите повторно, но уже без ключа--force-new-cluster:$ /usr/bin/etcd --data-dir="<ПУТЬ_К_РАСПАКОВАННОМУ_БЕКАПУ>/" -
Вернитесь к консоли второго узла:
-
Добавьте второй узел в кластер:
$ etcdctl --endpoints=http://meta-1:2379 member add meta-2 http://meta-2:2380 -
Строки конфигурации, полученные на предыдущем шаге, добавьте в файл
/etc/etcd/etcd.confна втором узле. Если такие строки существуют, замените их. -
Запустите сервис на втором узле:
$ systemctl start etcd -
Закройте консоль второго сервера.
-
-
Перейдите на третий сервер:
-
Добавьте в
Etcdтретий сервер:$ etcdctl --endpoints=http://meta-1:2379 member add meta-3 http://meta-3:2380 -
Строки конфигурации, полученные на предыдущем шаге, добавьте в файл
/etc/etcd/etcd.confна третьем узле. Если такие строки существуют, замените их. ПараметрETCD_INITIAL_CLUSTERбудет отличаться от параметра второго узла. -
Запустите третий сервер:
$ systemctl start etcd
-
-
Остановите в консоли первого сервера процесс
Etcd, нажав CTRL+C. -
На третьем или втором сервере:
-
Запросите список серверов на втором или третьем сервере:
$ etcdctl --endpoints=http://meta-3:2379 member list -
Там же удалите первый сервер и добавьте его повторно:
$ etcdctl --endpoints=http://meta-3:2379 member remove 8369eb9c5f01$ etcdctl --endpoints=http://meta-3:2379 member add meta-1 http://meta-1:2380 -
Строки конфигурации, полученные на предыдущем шаге, добавьте в файл
/etc/etcd/etcd.confна третьем узле. Если такие строки существуют, замените их. ПараметрETCD_INITIAL_CLUSTERбудет отличаться от параметров предыдущих узлов.
-
-
Запустите сервис
Etcdна первом сервере не из консоли, а как обычный сервис:$ systemctl start etcd -
Проверьте состояние кластера
Etcd:$ etcdctl cluster-health -
Если серверов
Etcdв кластере было больше трех, продолжайте добавлять аналогично третьему серверу. -
После добавления новых серверов в кластер
Etcdпропишите список всех серверов сEtcdна каждом сервере кластера — в параметрETCD_INITIAL_CLUSTERфайла конфигурации/etc/etcd/etcd.conf.