Статус кольца Cassandra с использованием драйвера CQL python

Я пытаюсь получить работоспособность кластера cassandra, есть ли способ получить это с помощью драйвера python CQL?

Ранее я использовал pycassa для модели данных, основанной на бережливости: https://github.com/datastax/python-driver

Есть ли способ получить работоспособность кластера или get_endpoints с помощью драйвера Python CQL


person user3435964    schedule 08.11.2017    source источник


Ответы (1)


Кластер описывается метаданными, как описано в официальной документации. Например, существует Metadata.token_map, который содержит информацию о кольце, назначении токенов и т. д.

person Alex Ott    schedule 09.11.2017
comment
спасибо @Alex, я пытаюсь найти, есть ли какие-либо узлы в кластере, используя драйвер python. есть ли способ сделать это? - person user3435964; 09.11.2017
comment
Я не очень хорошо знаком с драйвером Python, но могу предложить получить все хосты с Metadata.all_hosts() и проверить, что is_up установлено на True - person Alex Ott; 09.11.2017
comment
Спасибо @alex, но когда я пробую это в среде с несколькими постоянными контактами и вижу значение is_up как None, есть идеи, почему is_up отображается как None? pastebin.com/jj06StKQ us-west-2 — это контроллер домена, к которому я подключаюсь и от которого отправляю запросы. есть идеи? - person user3435964; 09.11.2017
comment
None отображается, когда Кассандра не знает, работает этот хост или нет. Я могу порекомендовать попробовать открыть и закрыть соединение сокета с этим узлом, если вы получаете None вместо True или False - person Alex Ott; 09.11.2017
comment
Я также проверил, что порты открыты, а статус nodetool показывает, что все узлы запущены и работают. Вот что я делаю, дайте мне знать, если здесь что-то не так pastebin.com/YrSi3BJy - person user3435964; 09.11.2017
comment
Код выглядит правильно для меня. Но проверьте следующий вопрос SO: stackoverflow.com/questions/34743472/ и эта документация - datastax.github.io/python-driver/api/cassandra/ — возможно, у вас не настроено подключение к другому контроллеру домена, поэтому кластер не получить статус для узлов там - person Alex Ott; 09.11.2017
comment
Давайте продолжим обсуждение в чате. - person user3435964; 10.11.2017
comment
Я попытался с DCAwareRoundRobinPolicy и указал несколько IP-адресов от локального контроллера домена и удаленного контроллера домена, но все равно не повезло. >>> cluster = Cluster(['us-west-2_node', 'us-east-1_node'], auth_provider=auth_provider, load_balancing_policy=DCAwareRoundRobinPolicy(local_dc='us-west-2', used_hosts_per_remote_dc=0)) - person user3435964; 10.11.2017
comment
Вы пробовали RoundRobinPolicy вместо DCAwareRoundRobinPolicy? Это должно дать вам статус узлов во всех контроллерах домена. - person developthou; 09.03.2021