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

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

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

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

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

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

Заранее благодарю вас!

Ответ 1

Удаленный доступ к 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.

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

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

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

$ssh [email protected]

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

$статус nodetool

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

$cqlsh xxx.xxx.xx.xx

Ответ 2

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

Внесите эти изменения в конфигурационный файл 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

Ответ 3

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

  • ssh в сервер [email protected]**.**.**.**
  • Стоп кассандры при запуске:

    • Проверьте, работает ли с 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)
  • отредактируйте файл cassandra.yaml следующим образом

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

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