Кассандра "Невозможно подключиться к любым серверам" через Django, в то время как cqlsh работает
У меня Cassandra 3.x на моей машине с Linux. Я пытаюсь подключиться к нему с помощью https://github.com/tschellenbach/Stream-Framework
from stream_framework.feeds.cassandra import CassandraFeed
Я могу подключиться к Кассандре из командной строки cqlsh' and using
DBeaver 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
}