Как настроить кассандру для удаленного подключения
Я пытаюсь настроить 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
- SSH на сервер
server_user@**.**.**.**
Стоп Кассандра, если работает:
- Проверьте, работает ли с
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)
- Перезагрузите Кассандру
./bin/cassandra -f
(из корня кассандры) - Откройте другой терминал на локальной машине и подключитесь через
cqlsh **.**.**.**
(IP вашего сервера) для проверки.
./bin/nodetool status
адрес сообщил мой локальный IP-адрес (127.0.0.1), но cqlsh удаленно все еще работал, несмотря на это.
Список и объяснение всех параметров конфигурации cassandra.yaml можно найти по адресу: http://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html