cassandra 1.2 nodetool получает сообщение «Не удалось подключиться» при попытке подключения к удаленному узлу

Я запускаю кластер из 6 узлов cassandra 1.2 на Amazon Web Service VPC с 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"

Но когда я это делаю, я даже не получаю ответа. Просто висит.

Мы будем очень признательны за любые рекомендации.


person jspyeatt    schedule 02.07.2013    source источник
comment
У вас настроен обратный DNS? JMX кажется самым счастливым, когда это так, поэтому IP-адрес разрешается в имя хоста, которое разрешается обратно в тот же IP-адрес.   -  person Richard    schedule 02.07.2013
comment
Я не верю, что обратный DNS доступен в частных подсетях AWS VPC.   -  person jspyeatt    schedule 02.07.2013


Ответы (1)


Проблема в конечном итоге оказалась проблемой брандмауэра/группы безопасности. Хотя это правда, что используется порт jmx 7199, по-видимому, другие порты используются случайным образом для rmi. Использование портов Cassandra - как используются порты?

Таким образом, решение состоит в том, чтобы открыть брандмауэры, а затем настроить cassandra-env.sh для включения

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<ip>

person jspyeatt    schedule 02.07.2013