Я работаю над проектом, который использует ETCD почти для всего, от хранения данных до передачи команд от одного объекта другому.
Прямо сейчас я использую 3 отдельные машины внутри моего кластера ETCD, чьи IP-адреса мы для простоты назовем IPNode1, IPNode2, IPNode3.
Моя проблема заключается в том, как обработать событие, при котором происходит сбой одного клиента ETCD.
Прямо сейчас все мои объекты в проекте содержат etcd3 .client, который всегда настраивается следующим образом:
class anObject:
def __init__(self):
self.etcd_client = etcd3.client(host="IPNode1", port=5880)
У меня создалось впечатление, что если клиент ETCD на IPNode1 выйдет из строя, все объекты будут динамически менять свой хост, но это не так. Итак, что я хотел бы знать, так это то, что в библиотеке ETCD уже есть способ, чтобы все объекты внутри моей рабочей области автоматически переключались на другой хост, если их текущий выйдет из строя, или мне нужно реализовать это вручную
Что Я бы хотел иметь:
myEtcdObject = anObject()
while True:
try:
myEtcdObject.etcd_client.put("SomeKey", "SomeValue")
except myEtcdObject.etcd_client.isCrashed():
myEtcdObject.etcd_client.switch_to_next_host_in_cluster()
#myEtcdObject.etcd_client.host is now IPNode2