Cassandra cqlsh - соединение отказано
Я только начал работать с Cassandra (datastax), версии 2.1.3 и cqlsh версии 5.0.1.
Кассандра запускается нормально, и кластер работает мгновенно.
Cqlsh не работает (ни на одном из узлов) и испускает следующую ошибку:
Ошибка подключения: ( "Невозможно подключиться к любым серверам", {'127.0.0.1': ошибка (111, "Пробовал подключиться к [('127.0.0.1', 9042)]. Последняя ошибка: соединение отклонено" )})
Я пробовал запустить cqlsh с хостами собственного ip, других хостов ip, разных портов, но результат остается тем же - всегда отказано в соединении.
Ответы
Ответ 1
Попробуйте изменить адрес rpc_address
чтобы он указывал на IP-адрес узла вместо 0.0.0.0, и укажите IP-адрес при подключении к cqlsh, как если бы IP-адрес был 10.0.1.34, а для rpc_port
осталось значение по умолчанию 9160, тогда должно работать следующее:
cqlsh 10.0.1.34 9160
Или же:
cqlsh 10.0.1.34
Также убедитесь, что start_rpc имеет значение true в файле конфигурации /etc/cassandra/cassandra.yaml.
Ответ 2
Вам нужно отредактировать cassandra.yaml
на node, к которому вы пытаетесь подключиться, и установить IP-адрес node для rpc_address
и listen_address
и перезапустить Cassandra.
rpc_address
- это адрес, по которому Cassandra прислушивается к клиентским вызовам.
listen_address
- это адрес, на котором Кассандра прислушивается к другим узлам Кассандры.
Ответ 3
Если вы проверите файл system.log для cassandra в /var/log/cassandra, вы увидите, что эта проблема возникает из-за того, что сервер rpc не запущен.
По умолчанию start_rpc имеет значение false в файле cassandra.yaml. Установите значение start_rpc: true, а затем повторите попытку.
По крайней мере, в Cassandra 3.0 start_rpc по умолчанию имеет значение true. https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html
Ответ 4
Это из-за некоторых предварительных настроек в Кассандре. И чтобы это исправить, в файле cassandra-env.sh
есть следующие закомментированные строки:
#add this if youre having trouble connecting:
#JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>
где вы должны начать исправление ошибки.
Откройте терминал и начните исправление, выполнив следующие простые действия:
Шаг 1
использование
sudo nano/etc/cassandra/cassandra-env.sh
эта команда и ищет JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=
раскомментировать строку, просто удалив #
прикрепленный в начале строки.
ПРИМЕЧАНИЕ. Если вы никогда не открывали этот файл, чтобы исправить эту ошибку, вы найдете JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>
Шаг 2 Теперь замените <public name>
на 127.0.0.1
Шаг 3 Сохраните файл и перезапустите systemctl restart cassandra.service
используя systemctl restart cassandra.service
(если у вас его нет, сервер уже запущен). ИЛИ запустить systemctl start cassandra.service
с помощью systemctl start cassandra.service
(если сервер не запущен).
Шаг-4 Проверьте состояние, используя sudo service cassandra status
или systemctl status cassandra.service
.
Примечание: однажды проверьте системный монитор, работает ли Cassandra там или нет.
Попробуйте cqlsh
сейчас. Это сработает.
Примечание: nano
- редактор, вы можете использовать другие редакторы, которые вам удобны.
Ответ 5
Рекомендуется проверить журнал cassandra, даже если сервер работает. Я получал точно такое же сообщение и не мог ничего с этим поделать, и тогда я узнал, что в журнале есть ошибки, и система на самом деле не работает.
Глупо, я знаю, но может случиться...
Ответ 6
Была такая же проблема недавно после перехода с Cassandra 3.0 на Cassandra 2.2 на ArchLinux.
В отличие от вышеперечисленных решений моя проблема не была в .cassandra, но версия 3.0 оставила свою конфигурацию в каталоге /var/lib/cassandra.
Следующие команды решили мою проблему:
sudo rm -R /var/lib/cassandra
sudo rm -R /var/log/cassandra
sudo rm -R /usr/share/cassandra
Затем я установил cassandra, и все снова работало:)
Ответ 7
Посмотрите на native_transport_port в /etc/cassandra/cassandra.yaml
По умолчанию используется 9842.
native_transport_port: 9842
Для подключения к localhost с cqlsh этот порт работал у меня.
cqlsh 127.0.0.1 9842
Ответ 8
попробуйте изменить native_transport_protocol
на порт 9160
(если для него установлено значение, отличное от 9160
, оно может указывать на 9042
). Проверьте свои журналы и посмотрите, какой порт cassandra прослушивает CQL-клиенты?
Ответ 9
Для меня оказалось, что служба вообще не работает.
Проверьте с помощью
service cassandra status
Если у вас такая же ошибка, как и у меня, или другой тип, то беспорядок с IP-адресами не решит вашу проблему вообще.
Ошибка, которую я получил:
cassandra dead but pid file exists
Изменить: это решение для моей проблемы: fooobar.com/questions/166060/...
Ответ 10
Я пытался запустить его на сетевом диске. Поэтому я увеличил client_timeout
в cqlsh, и он сработал.
Ответ 11
Убедитесь, что вы также установили "семена" на адрес, который вы указали в "listen_address"
Ответ 12
Я столкнулся с той же проблемой с Cassandra 3.11.0, в любое время, когда я изменил адрес rpc или адрес прослушивания, cqlsh не работал. Я должен был добавить тот же локальный ip к seeds
Итак, после долгих проб и ошибок мой рабочий cassandra.yml закончился следующим образом:
class-name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
-seeds: "192.168.0.30"
listen_adress: 192.168.0.30
rpc_address: 192.168.0.30
Ответ 13
Попробуйте подключиться к указанному адресу. В моем случае брандмауэр блокировал меня.
Ответ 14
Когда я установил Cassandra 3.11.1, я столкнулся с этой проблемой. Я проверил /var/log/cassandra/cassandra.log и обнаружил эту ошибку. Исключительная ситуация, возникшая при запуске.... Это ошибка, о которой уже сообщалось. Оригинальная ссылка на пост https://issues.apache.org/jira/browse/CASSANDRA-14173.
Решение состоит в том, чтобы понизить Cassandra до 3,0
- скачать Cassandra rpm
curl -O https://www.apache.org/dist/cassandra/redhat/30x/cassandra-3.0.15-1.noarch.rpm
или же
wget https://www.apache.org/dist/cassandra/redhat/30x/cassandra-3.0.15-1.noarch.rpm
- rpm -ivh cassandra-3.0.15-1.noarch.rpm
- служба Кассандра Старт
- служба статуса Кассандры # проверка статуса Кассандры
Кассандра (PID 2322) работает...
- cqlsh # начать Кассандру
Ответ 15
Попавший в эту проблему для [cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
пришлось установить start_native_transport: true
в файл cassandra.yaml
.
Для проверки
- попробуйте открыть файл
tailf /var/log/cassandra/system.log
в одной вкладке
- обновить
cassandra.yaml
- перезапустите кассандру
sudo service cassandra restart
В лог файле есть показы.
INFO [main] 2019-03-15 19:53:06,156 Server.java:156 - Starting listening for CQL clients on /10.139.45.34:9042 (unencrypted)...
Ответ 16
cqlsh --cqlversion = "3.4.0"
Подключен к тестовому кластеру 127.0.0.1:9042.
[cqlsh 5.0.1 | Кассандра 3.0.9 | CQL spec 3.4.0 | Собственный протокол v4]
попробуйте приведенную выше команду. Меня устраивает.
Ответ 17
Попробуйте изменить адрес rpc_address так, чтобы он указывал на IP-адрес узла вместо 0.0.0.0, и укажите IP-адрес при подключении к cqlsh, как если бы IP-адрес был 10.0.2.64, а для rpc_port осталось значение по умолчанию 9160, тогда должно работать следующее:
cqlsh 10.0.2.64 9160
ИЛИ
cqlsh 10.0.2.64
Также убедитесь, что для start_rpc задано значение true в файле конфигурации /etc/cassandra/cassandra.yaml.