Срок действия SSL-соединения kazoolib истекает - PullRequest
0 голосов
/ 24 апреля 2020

Я использую kazooclient для связи с ZK-сервером для распределенной операции. Не-SSL-соединение работало безупречно, однако, когда я интегрировал изменения с SSL-соединением, я вижу много разрывов соединений и сокетов в рабочем потоке ZK-сервера, и моя служба также больше не находится в рабочем состоянии.

Ниже приведены некоторые фрагменты исключений kazoolib:

Connection dropped: socket connection error: The operation did not complete (read) (_ssl.c:1977)
Transition to CONNECTING
Traceback (most recent call last):
  File "analyzer_mapper.py", line 349, in redistribute
    analyzer_dict = json.loads((zkc.get(parseConfig.ANALYZERS_PATH))[0].decode('UTF-8'))
  File "/a/lib/kazooclient/kazoo/client.py", line 1075, in get
    return self.get_async(path, watch=watch).get()
  File "/a/lib/kazooclient/kazoo/handlers/utils.py", line 75, in get
    raise self._exception
kazoo.exceptions.ConnectionLoss
Exception in worker queue thread
Traceback (most recent call last):
  File "/a/lib/kazooclient/kazoo/handlers/threading.py", line 128, in _thread_worker
    func()
  File "/a/lib/kazooclient/kazoo/handlers/threading.py", line 291, in <lambda>
    self.callback_queue.put(lambda: callback.func(*callback.args))
TypeError: watcher() takes 1 positional argument but 2 were given
Exception in worker queue thread
Traceback (most recent call last):
  File "/a/lib/kazooclient/kazoo/handlers/threading.py", line 128, in _thread_worker
    func()
  File "/a/lib/kazooclient/kazoo/handlers/threading.py", line 291, in <lambda>
    self.callback_queue.put(lambda: callback.func(*callback.args))

Разница между вызовами SSL и NON-SSL:

ВЫЗОВ SSL:

get_zookeeper_client_zkc = KazooClient(server_ips, keyfile = keyfile, certfile = certfile, use_ssl = True, verify_certs = False)

Вызов NON-SSL :

get_zookeeper_client_zkc = KazooClient(server_ips, connection_retry = False)

Сбои:

  1. В основном все мои операции set () и get () также не выполняются, из-за чего мое приложение не работает, так как мое приложение зависит от данных API set () и get ().

  2. А также много раз вызывается экземпляр слушателя для разъединения и повторного соединения служб с узлами ZK.

Ниже представлен API-интерфейс обратного вызова моего слушателя:

def my_listener(state):
    global zk_reconnect
    logger.info('Inside listener()')
    if state == KazooState.LOST:
        # Register somewhere that the session was lost
        logger.info('Lost')
    elif state == KazooState.SUSPENDED:
        # Handle being disconnected from Zookeeper
        logger.info('Disconnected')
    else:
        # Handle being connected/reconnected to Zookeeper
        logger.info('Reconnecting')
        zk_reconnect = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...