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

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

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

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

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

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

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

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 user@xxx.xxx.xx.xx

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

$ nodetool status

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

$ cqlsh xxx.xxx.xx.xx

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

Сделайте эти изменения в файле конфигурации 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/7644f334586e8ce29eaf8b93ec6418c4

Альтернативное решение для Кэт. Работал с Ubuntu 16.04

  1. SSH на сервер server_user@**.**.**.**
  2. Стоп Кассандра, если работает:

    • Проверьте, работает ли с ps aux | grep cassandra
    • При запуске выдает большой блок команд / флагов, например

      ubuntu 14018 4.6 70.1 2335692 712080 pts/2 Sl+ 04:15 0:11 java -Xloggc:./../logs/gc.log ........

      Примечание 14018 в примере является идентификатором процесса

    • Стоп с kill <process_id> (в данном случае 14018)
  3. отредактируйте файл cassandra.yaml следующим образом

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

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

Список и объяснение всех параметров конфигурации cassandra.yaml можно найти по адресу: http://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html

Другие вопросы по тегам