Восстановление из сбойного кластера etcd2 / CoreOS
У меня есть кластер из 3 машин CoreOS, работающих на Azure. Я перезагрузил два одновременно, и кластер отказал как ожидалось.
Мне нужно заменить токен обнаружения, cloud-config читается при каждой загрузке, но в соответствии с документацией CoreOS:
После подготовки экземпляра в Azure конфигурацию облака нельзя изменить.
Есть ли способ для восстановления после этого, кроме разрушения и последующего развертывания нового кластера?
3 ответа
Там файл конфигурации существует в местоположении
/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!