Команда Nodetool от одного узла к другому не работает - PullRequest
1 голос
/ 24 февраля 2020
nodetool -h 10.16.252.129 -p 9042 -u cassandra -pw cassandra status

выдает ошибку:

nodetool: Failed to connect to '10.16.252.129:9042' - 
ConnectIOException: 'non-JRMP server at remote endpoint'.

Это в файле cassandra.yaml:

rpc_address: 10.16.252.129
rpc_port: 9160

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Здесь вы должны использовать порт 7199 для команды nodetool. Однако вам нужно проверить, открыт ли ваш порт, если нет, то вам следует открыть / разрешить этот порт на брандмауэре.

Конфигурацию порта JMX можно найти в cassandra-env. sh.

Затем попробуйте выполнить следующую команду: -

nodetool -h Имя хоста / IP -p 7199 -u username -pw состояние пароля

Вы можете найти более подробную информацию о синтаксисе и использовании nodetool можно найти по ссылке ниже. http://cassandra.apache.org/doc/latest/tools/nodetool/compactionhistory.html

0 голосов
/ 24 февраля 2020

Прежде всего, порт 9042 предназначен для клиентских подключений CQL собственного двоичного протокола. Порт 9160 предназначен для устаревших (устаревших) клиентских соединений протокола Thrift. Команды между узлами nodetool используют протокол JMX (Java Management eXtensions) через порт 7199.

Обратите внимание, что для работы удаленного JMX необходимо открыть порт 7199 (брандмауэр) и cassandra-env.sh имеет строки конфигурации для:

$JMX_PORT="7199"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=$HOST_IP"

Вы также можете включить аутентификацию по паролю JMX :

JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Кроме того, вам не нужно отправлять порт или учетные данные. Кредиты cassandra / cassandra используются по умолчанию для аутентификации базы данных, а не для JMX. Если вы включили аутентификацию пароля JMX, вам нужно будет отправить любое имя пользователя и пароль, которые вы определили в файле паролей. Но в противном случае это должно работать (если на текущем и целевом узлах включен удаленный JMX):

nodetool -h 10.16.252.148 status
...