Не удается подключиться к узлу cassandra с другого хоста
У меня есть узел Кассандре на машине. Когда я получаю доступ к cqlsh из того же machne, он работает правильно.
но когда я попытался подключиться к нему cqlsh, используя " 192.X. X. x " с другой машины, я получаю сообщение об ошибке
ошибка подключения: ('не удается подключиться к серверам', {'192.х.х.х: ошибка(111, "пробовали подключить к [('192.X. X. x', 9042). Последняя ошибка: соединение отказано")})
в чем причина этого? Как я могу это исправить?
7 ответов
вероятно, удаленный узел Cassandra не привязан к внешнему сетевому интерфейсу, а к петле (это конфигурация по умолчанию). Вы можете убедиться в этом, используя "telnet thecassandrahost 9042" с удаленного компьютера, он не должен работать.
чтобы привязать Кассандру к внешнему сетевому интерфейсу, вам нужно отредактировать Кассандру.файл конфигурации yaml и задайте свойства"listen_address
" и "rpc_address
" удаленный IP или "0.0.0.0" (не все версии Cassandra поддерживает подстановочные адреса).
проверьте также, что брандмауэр правильно настроен или отключен (sudo service iptables stop).
задайте параметр config, в котором находится этот файл. Возможно!--1-->.
Кассандра.и YAML
listen_address: 192.x.x.x
rpc_address: 192.x.x.x
перезапустите службу.
1.Обновление:./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.перезапустить
./bin/cassandra
Case: я столкнулся с проблемой, что я не могу удаленный доступ к Кассандре, когда я использую java access cassandra
У меня такая же проблема. И я отвечу в этом посте. К сожалению, у меня ничего не получается. Я провел кое-какие исследования. И сейчас это работает. Вот моя сдача.
окружающая среда Ubuntu Server 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 / Кассандра / Кассандра.и 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: "соединение отказано (соединение отказано)". ubuntu08@ubuntu08:~$ nodetool статус
ошибка: узел еще не имеет system_traces, вероятно, все еще загружается ubuntu08@ubuntu08:~$ nodetool статус
Центр Обработки Данных: SearchGraphAnalytics
Статус=Вверх/Вниз / / Состояние=Нормальный / Выход/Присоединение / Перемещение -- Токены загрузки адреса владеют стойкой host ID ООН 10.0.0.44 278.51 КИБ 32 ? 19db0016-df63-4470-9921-f3b5fe4e9341 rack1 `
- Я могу получить доступ к run ' cqlsh 172.20.10.9 ' с локальной или другой машины.
Это еще один документ для Кассандры https://docs.datastax.com/en/developer/java-driver/3.3/manual/address_resolution/
даже после того, как я поставил RPC_ADDRESS
, Это не сработало для меня, пока я не установил .
Он всегда был установлен до false
в моем случае. Я пробовал это с Ubuntu, Docker и Cassandra.
установите следующий параметр конфигурации в cassandra.файл yaml (для CentOS он находится в /etc/cassandra / default.conf)
rpc_address: 0.0.0.0
проверьте следующие значения такие же, как и ниже(обычно они по умолчанию)
start_native_transport: true
native_transport_port:9042
последний шаг для CentOS, обновите конфигурацию брандмауэра и разрешите порт 9042 через Для входящие соединения
- доступ к брандмауэру из "System / Administration / Firewall" в меню CentOS
- добавить порт в разделе "другие порты"
У меня тот же вопрос Я редактирую Кассандру.yaml установить listen_address и roc_address в качестве ip-адреса решить проблему.