Назад | Перейти на главную страницу

В соединении отказано с внутренним частным DNS-именем

У меня есть кластер Cassandra, настроенный на 5 узлах EC2. Узлы могут нормально обмениваться данными с использованием частных IP-адресов, но при использовании частного внутреннего DNS-имени возникают сбои соединения. Localhost тоже не работает.

Я пытаюсь использовать инструмент cassandra-stress, но получаю Failed to connect over JMX; not collecting these stats, а при включении подробного ведения журнала я получаю следующий стек:

java.lang.RuntimeException: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: ip-172-1-2-2.eu-west-1.compute.internal; nested exception is:
    java.net.ConnectException: Connection refused (Connection refused)]
    at org.apache.cassandra.stress.util.JmxCollector.connect(JmxCollector.java:99)
    at org.apache.cassandra.stress.util.JmxCollector.<init>(JmxCollector.java:85)
    at org.apache.cassandra.stress.StressMetrics.<init>(StressMetrics.java:62)
    at org.apache.cassandra.stress.StressAction.run(StressAction.java:198)
    at org.apache.cassandra.stress.StressAction.runMulti(StressAction.java:126)
    at org.apache.cassandra.stress.StressAction.run(StressAction.java:72)
    at org.apache.cassandra.stress.Stress.main(Stress.java:109)

Когда я бегу cqlsh Я должен указать частный IP-адрес (./cqlsh 172.1.2.3), поскольку использование локального хоста по умолчанию не работает.

Требуется ли какая-то дополнительная конфигурация для сопоставления этого внутреннего имени с localhost или для разрешения частных IP-адресов на каждом узле?

РЕДАКТИРОВАТЬ:

Бег host ip-172-1-2-3.eu-west-1.compute.internal дает правильный результат:

ip-172-1-2-3.eu-west-1.compute.internal has address 172.1.2.3

Так что похоже, что DNS работает правильно.

Для моих настроек cassandra.yaml у меня есть listen_address закомментировано, но я использую:

listen_interface: eth0
broadcast_address: 172.1.2.3
rpc_address: 172.1.2.3

Репликация отлично работает с этими настройками. Я не уверен, как настроить JMX для явного прослушивания частного IP-адреса.

Ваша команда cqlsh 172.1.2.3 не работает, потому что вы настроили rpc_address слушать только по заданному адресу. Если вы хотите везде прослушивать CQL-трафик, вам нужно установить rpc_address к 0.0.0.0, и установите broadcast_rpc_address к 172.1.2.3 - все это описано в cassandra.yaml сам.

Что касается JMX - на самом деле не обязательно, чтобы он был включен - он собирает некоторые данные о сборке мусора и т. Д., Которые, возможно, еще не нужны, если вы только начинаете. Рекомендую сконцентрироваться на самом тестировании, вроде описанном в Эта статья, например.

Но если вы действительно хотите выставить JMX снаружи, вам нужно изучить cassandra-env.sh - в нем есть подробные комментарии о том, что делать. Вам нужно только убедиться, что вы защитили JMX, иначе кто угодно сможет делать с вашим кластером практически все, что угодно - стирать данные, настраивать их и т. Д.