Назад | Перейти на главную страницу

Восстановление после сбоя кластера etcd2 / CoreOS

У меня есть кластер из 3 машин CoreOS, работающих в Azure. Я перезагрузил два одновременно, и кластер вышел из строя, как и ожидалось.

Мне нужно заменить токен обнаружения, облачная конфигурация читается при каждой загрузке, но согласно документам CoreOS:

После подготовки экземпляра в Azure конфигурацию облака изменить нельзя.

Есть ли способ избавиться от этого, кроме уничтожения, а затем развертывания нового кластера?

там файл конфигурации существует в месте

/var/lib/waagent/CustomData

С помощью

sudo vim /var/lib/waagent/CustomData

Вы должны иметь возможность редактировать его. После перезагрузки подберется конфигурация.

Если вы удалите два узла в трехузловом кластере, вы потеряете кворум, с тремя узлами вы можете потерять только один узел, для получения дополнительной информации об отказоустойчивости для CoreOS:

Fault Tolerance Table

It is recommended to have an odd number of members in a cluster. Having an odd cluster size doesn't change the number needed for majority, but you gain a higher tolerance for failure by adding the extra member. You can see this in practice when comparing even and odd sized clusters:
Cluster Size    Majority    Failure Tolerance
1   1   0
3   2   1
4   3   1
5   3   2
6   4   2
7   4   3
8   5   3
9   5   4

https://coreos.com/etcd/docs/latest/admin_guide.html

Вы можете попробовать изменить определение службы etcd в /run/systemd/system/etcd.service.d/20-cloudinit.conf - вы должны увидеть что-то вроде

[Service]
Environment="ETCD_ADDR=10.1.1.1:4001"
Environment="ETCD_DISCOVERY=https://discovery.etcd.io/47fabddb4eed191a09bf5b70ba93426a"
Environment="ETCD_PEER_ADDR=10.1.1.1:7001"

Измените URL-адрес обнаружения на новый, а затем перезапустите его.

systemctl daemon-reload
systemctl restart etcd

Однако вам нужно будет проверить, выживает ли он после перезагрузки в Azure!