Кассандра "Невозможно подключиться к любым серверам" через Django, в то время как cqlsh работает

У меня Cassandra 3.x на моей машине с Linux. Я пытаюсь подключиться к нему с помощью https://github.com/tschellenbach/Stream-Framework

from stream_framework.feeds.cassandra import CassandraFeed

Я могу подключиться к Кассандре из командной строки cqlsh' and usingDBeaver GUI` на порту 9042.

Когда я пытаюсь запустить Django с указанным выше импортом, я получаю эту ошибку:

cassandra.cluster.NoHostAvailable: 
('Unable to connect to any servers', 
{'::1': error(111, "Tried connecting to [('::1', 9042, 0, 0)]. 
Last error: Connection refused"), 
'127.0.0.1': error(111, 
"Tried connecting to [('127.0.0.1', 9042)]. 
Last error: Connection refused")})

РЕДАКТИРОВАТЬ 3 Когда все настройки к значениям по умолчанию я получаю также

 DriverException('ProtocolError returned from
 server while using explicitly set client protocol_version 2',)})

Я искал решение и изменил/etc/cassandra/cassandra.yaml чтобы:

rpc_address: 0.0.0.0 #from localhost
rpc_port: 9042 #from 9160
listen_address: 127.0.0.1 #from localhost

Но это не помогло.

Есть идеи, как это решить?

РЕДАКТИРОВАТЬ Я превратил вещи в настройки по умолчанию и netstat -nat | grep 9042

tcp        0      0 127.0.0.1:56524         127.0.0.1:9042          ESTABLISHED
tcp        0      0 127.0.0.1:56528         127.0.0.1:9042          ESTABLISHED
tcp        0      0 127.0.0.1:56522         127.0.0.1:9042          ESTABLISHED
tcp        0      0 127.0.0.1:56558         127.0.0.1:9042          ESTABLISHED
tcp        0      0 127.0.0.1:56516         127.0.0.1:9042          ESTABLISHED
tcp        0      0 127.0.0.1:56514         127.0.0.1:9042          ESTABLISHED
tcp        0      0 127.0.0.1:56560         127.0.0.1:9042          ESTABLISHED
tcp        0      0 127.0.0.1:56530         127.0.0.1:9042          ESTABLISHED
tcp6       0      0 127.0.0.1:9042          :::*                    LISTEN
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56516         ESTABLISHED
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56514         ESTABLISHED
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56528         ESTABLISHED
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56558         ESTABLISHED
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56524         ESTABLISHED
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56560         ESTABLISHED
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56522         ESTABLISHED
tcp6       0      0 127.0.0.1:9042          127.0.0.1:56530         ESTABLISHED

Btw, nodetool status возвращается

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
UN  127.0.0.1  157.61 KB  256          100.0%            3b13b3f2-968d-4f53-8e9b-1aa4ae271c66  rack1

РЕДАКТИРОВАТЬ 2
Я не уверен, что это какая-то подсказка, но когда я подключаюсь к Cassandra с DBeaver, я получаю только один хост в списке:

0:0:0:0:0:0:0:1

Это IPv6 вместо IPv4?

1 ответ

Решение

Я нашел проблему. Стандартные настройки Stream-Framework для протокола Cassandra: 2 https://github.com/tschellenbach/Stream-Framework/blob/master/stream_framework/default_settings.py

после изменения на 4, тесты и приложение подключаются к Кассандре.

редактировать

Изменение в settings.py основного проекта. Как это:

CASSANDRA_DRIVER_KWARGS = { 'protocol_version': 4 }

Другие вопросы по тегам