Cassandra 1.2 nodetool получает "Не удалось подключиться" при попытке подключения к удаленному узлу
Я использую кластер из 6 узлов Cassandra 1.2 на VPC Amazon Web Service с 64-битной JVM от Oracle версии 1.7.0_10.
Когда я вошел в систему на одном из узлов (например, 10.0.12.200), я могу запустить nodetool -h 10.0.12.200 status
просто хорошо.
Однако, если я пытаюсь использовать другой IP-адрес в кластере (10.0.32.153) с того же терминала, я получаю Failed to connect to '10.0.32.153:7199: Connection refused'
,
На узле 10.0.32.153, к которому я пытаюсь подключиться, я сделал следующие проверки.
С 10.0.12.200 я могу бегать
telnet 10.0.32.153 7199
и я получаю соединение, поэтому оно не является проблемой группы безопасности / брандмауэра для порта 7199.На 10.0.32.153 если я бегу
netstat -ant|grep 7199
я вижуtcp 0 0 0.0.0.0:7199 0.0.0.0:* LISTEN
Кассандра, кажется, слушает в порту
Файл cassandra-env.sh в 10.0.32.153 содержит все активные JVM_OPTS для jmx
-Dcom.sun.management.jmxremote.port=7199 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Единственный выстрел в темноте, который я видел, пытаясь решить эту проблему при поиске в сети, - это установить следующее:
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=10.0.32.153"
Но когда я делаю это, я даже не получаю ответ. Это просто висит.
Любое руководство будет с благодарностью.
1 ответ
Эта проблема в конечном итоге стала проблемой брандмауэра / группы безопасности. Хотя верно то, что используется порт jmx 7199, очевидно, что другие порты используются случайным образом для rmi. Использование порта Кассандры - как используются порты?
Таким образом, решение состоит в том, чтобы открыть брандмауэры, а затем сконфигурировать cassandra-env.sh для включения
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<ip>