Как настроить Cassandra для удаленного подключения

Я пытаюсь настроить Cassandra Datastax Community Edition для удаленного подключения в Windows,

Cassandra Server установлен на ПК с Windows 7, С помощью локального CQLSH он отлично подключается к локальному серверу.

Но когда я пытаюсь подключиться с CQLSH с другого компьютера в той же сети, я получаю следующее сообщение об ошибке:

Ошибка подключения: («Невозможно подключиться к каким-либо серверам», {«MYHOST»: ошибка (10061, «Попытка подключиться к [('HOST_IP', 9042)]. Последняя ошибка: не удалось установить соединение, поскольку целевая машина активно отказалась Это")})

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

Заранее спасибо!


person Obama    schedule 21.03.2016    source источник


Ответы (3)


Удаленный доступ к Cassandra осуществляется через его экономичный порт для Cassandra 2.0. В Cassandra 2.0.x порт прослушивания cqlsh по умолчанию - 9160, который определяется в cassandra.yaml параметром rpc_port. По умолчанию Cassandra 2.0.x и более ранние версии включают Thrift, задав для start_rpc значение true в файле cassandra.yaml.

В Cassandra 2.1 утилита cqlsh использует собственный протокол. В Cassandra 2.1, который использует драйвер Python Datastax, порт прослушивания cqlsh по умолчанию - 9042.

Узел cassandra должен быть привязан к IP-адресу сетевой карты вашего сервера - он не должен быть 127.0.0.1 или localhost, который является IP-адресом интерфейса обратной связи, привязка к нему предотвратит прямой удаленный доступ. Чтобы настроить привязанный адрес, используйте параметр rpc_address в cassandra.yaml. Установка 0.0.0.0 будет прослушивать все сетевые интерфейсы.

Вы проверили, может ли удаленная машина подключиться к узлу Cassandra? Есть ли брандмауэр между машинами? Вы можете попробовать эти шаги, чтобы проверить это:

1) Убедитесь, что вы можете подключиться к этому IP-адресу с сервера, на котором вы находитесь:

$ ssh [email protected]

2) Проверьте статус узла и убедитесь, что он показывает тот же IP-адрес:

Статус $ nodetool

3) Запустите команду для подключения по IP-адресу (указывайте порт только в том случае, если вы не используете значение по умолчанию):

$ cqlsh xxx.xxx.xx.xx

person Kat    schedule 21.03.2016
comment
Здравствуйте, спасибо за вашу помощь, на самом деле ваш второй момент очень помог мне выяснить, что вызывает проблему. напечатанный статус nodetool показал, что узел не указывает на локальный IP-адрес машины, затем с помощью команды ipconfig я обнаружил, что машина использует адаптер Virtualbox Ethernet. Итак, после отключения виртуального адаптера Virtualbox, nodetool напечатал настоящий локальный IP-адрес, и удаленное соединение сработало для меня !!! еще раз спасибо! - person Obama; 22.03.2016

Как насчет этого:

Внесите эти изменения в конфигурационный файл cassandra.yaml:

start_rpc: true

rpc_address: 0.0.0.0

broadcast_rpc_address: [node-ip]

listen_address: [node-ip]

seed_provider:
  - class_name: ...
    - seeds: "[node-ip]"

ссылка: https://gist.github.com/andykuszyk/7644f334586e8ce29eaf8b93ec6418c4ec64ec64

person ahll    schedule 09.05.2018
comment
Этот ответ более четкий и точный, чем принятый. - person Ritesh Sinha; 08.08.2018
comment
этот работает .. stackoverflow.com/questions/30927615/ - person Nilesh; 27.08.2019
comment
Спасибо, спас мой день - person Omar Merghany; 19.04.2021

Альтернативное решение Kat. Работал с Ubuntu 16.04

  1. ssh на сервер server_user@**.**.**.**
  2. Остановите кассандру, если она работает:

    • Check if running with ps aux | grep cassandra
    • # P3 #
      # P4 #
      # P5 #
    • Остановитесь с помощью kill <process_id> (в данном случае 14018)
  3. отредактируйте файл cassandra.yaml, чтобы он был следующим

    • rpc_address: 0.0.0.0
    • broadcast_rpc_address: **.**.**.** ‹- IP вашего сервера (не может быть 0.0.0.0)
  4. Перезапустите cassandra ./bin/cassandra -f (из корня cassandra)
  5. Откройте другой терминал на локальном компьютере и подключитесь через cqlsh **.**.**.** (IP-адрес вашего сервера) для тестирования.

Адрес ./bin/nodetool status сообщил о моем IP-адресе localhost (127.0.0.1), но, несмотря на это, удаленно cqlsh все еще работал.

person ChickenFeet    schedule 26.06.2017