Не удается подключиться к 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
У меня такая же проблема. И я отвечаю на этот пост. К сожалению, мне не повезло, что он работает. Я провел некоторое исследование. И это работает сейчас. Вот мои изменения.
Я устанавливаю 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-адрес решает проблему.