Не удается подключиться к cassandra node с другого хоста

У меня есть кассандра node на машине. Когда я получаю доступ к cqlsh из той же машины, он работает правильно.

Но когда я попытался подключиться к нему cqlsh, используя "192.x.x.x" с другого компьютера, я получаю сообщение об ошибке

Ошибка соединения: ( "Невозможно подключиться к любым серверам", {'192.xxx': ошибка (111, "Пробное подключение к [('192.xxx, 9042)]. Последняя ошибка: соединение отклонено" )})

В чем причина этого? Как я могу это исправить?

Ответ 1

Вероятно, удаленный узел Cassandra связан не с внешним сетевым интерфейсом, а с петлевым (это конфигурация по умолчанию). Вы можете убедиться в этом, используя "telnet thecassandrahost 9042" с удаленного компьютера, он не должен работать.

Чтобы привязать Cassandra к внешнему сетевому интерфейсу, вам нужно отредактировать файл конфигурации cassandra.yaml и установить свойства " listen_address " и " rpc_address " для вашего удаленного IP-адреса или "0.0.0.0" (не все версии Cassandra поддерживают подстановочные адреса).

Также проверьте, правильно ли настроен или отключен брандмауэр (остановка службы iptables sudo).

Ответ 2

Задайте параметр конфигурации, в котором находится этот файл. Возможно /etc/cassandra/cassandra.yaml.

cassandra.yaml

listen_address: 192.x.x.x
rpc_address: 192.x.x.x

Затем перезапустите службу.

Ответ 3

1.Update: ./conf/cassandra.yaml

rpc_address: 0.0.0.0 ("0.0.0.0" allow anywhere IP,but you can appoint an IP)

\# broadcast_rpc_address: 1.2.3.4 (Delete comment if pc_address=0.0.0.0)

2.restart

./bin/cassandra

Случай. Я столкнулся с проблемой, из-за которой я не могу получить доступ к кассандре. Когда я использую java-доступ cassandra

Ответ 4

У меня такая же проблема. И я отвечаю на этот пост. К сожалению, мне не повезло, что он работает. Я провел некоторое исследование. И это работает сейчас. Вот мои изменения.

  • Окружающая среда Сервер Ubuntu 16.04.3 LTS на VirtualBox, DSE версия 5.1

  • Установить DSE

Я устанавливаю DSE, следую этой странице https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/install/installGUIdse.html

  • Перейдите в /etc/dse/cassandra/cassandra.yaml
  • Измените "семена" с 127.0.0.1 на {seriver ip} exp. мое - 172.20.10.9
  • listen_address В официальном документе DSE 5.1 ​​говорится: "Никогда не указывать 0.0.0.0; это всегда неправильно". Что я сделал, так это комментировать параметр "listen_address".
  • 'rpc_address' изменяется с localhost на 0.0.0.0
  • 'broadcast_address' изменится на IP-адрес сервера. Шахта - 172.20.10.9
  • 'broadcast_rpc_address' изменение на сервер ip
  • перезапустите dse, подождите пару минут, он меняется. Если все еще не работает, перезагрузите компьютер.

Это мой журнал за 15 секунд. `ubuntu08 @ubuntu08: ~ $статус nodetool nodetool: Не удалось подключиться к "127.0.0.1:7199" - ConnectException: "Отклонено соединение (Connection отказано)". ubuntu08 @ubuntu08: ~ $статус nodetool

Ошибка: у node пока нет системных_трасс, возможно, все еще загрузочная ubuntu08 @ubuntu08: ~ $статус nodetool

Центр данных: SearchGraphAnalytics

Status = Up/Down |/Состояние = Обычный/Выход/Соединение/Перемещение - Адресные токены для загрузки ООН 10.0.0.44 278.51 KiB 32? 19db0016-df63-4470-9921-f3b5fe4e9341 rack1 `

  • Я могу получить доступ, выполнив 'cqlsh 172.20.10.9' от локальной или другой машины.

Это еще один документ для Cassandra https://docs.datastax.com/en/developer/java-driver/3.3/manual/address_resolution/

Ответ 5

Даже после того, как я установил RPC_ADDRESS, это не сработало для меня, пока я не установил параметр -e CASSANDRA_START_RPC=true.

В моем случае всегда было false. Я пробовал это с Ubuntu, Docker и Cassandra.

Ответ 6

Задайте следующий конфигурационный параметр в файле cassandra.yaml(для CentOS он находится в /etc/cassandra/default.conf)

rpc_address: 0.0.0.0

Убедитесь, что следующие значения такие же, как указано ниже (обычно они по умолчанию)

start_native_transport: истинно

native_transport_port: 9042

Последний шаг для CentOS, обновите конфигурацию брандмауэра и разрешите порт 9042 для входящих соединений

  • Доступ к брандмауэру из "System/Administration/Firewall" в меню CentOS
  • Добавить порт в разделе "Другие порты"

Ответ 7

У меня была та же проблема, мне не разрешили слушать 0.0.0.0, и Cassandra работала на виртуальной машине с мостовой сетью. Решение, которое я нашел, состояло в том, чтобы позволить VM SSH к себе, порт перенаправляя порт на сетевом интерфейсе с мостом на localhost:

ssh -L 192.168.x.x:9042:127.0.0.1:9042 [email protected]

Поскольку IP-адрес сетевой карты с мостовым соединением будет меняться (в зависимости от того, на какой машине разработчика она была запущена), ssh-команда должна была сначала получить IP-адрес, для этого сработало следующее:

ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'

Также, как это должно происходить при загрузке, вы должны создать ключ SSH для vm-пользователя и доверять ему через .ssh/authorized_keys.

Ответ 8

Я редактирую cassandra.yaml set listen_address и roc_address, так как IP-адрес решает проблему.