Обработка объектов ETCDClient при сбое хоста - PullRequest
0 голосов
/ 27 мая 2020

Я работаю над проектом, который использует 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
...