Связь Cassandra Datastax с NodeTool

Я создал новый кластер в Amazon AWS с 3 экземплярами, следуя инструкциям на странице установки Datastax для Cassandra.

Я также настроил все в файле cassandra.yaml, как указано в инструкциях Datastax по добавлению нового узла. Они все совпадают.

Теперь, когда я запускаю статус nodetool, я получаю 3 узла в своем кластере, и это здорово! Однако 2 узла не работают. Те, которые не работают, - это те, которые не являются узлом, с которого я запускаю статус nodetool.

Например: если я запускаю состояние nodetool с узла 1, он показывает, что узлы node0 и node2 отключены. Если я запускаю состояние nodetool с node0, он показывает, что node1 и node2 отключены.

Кто-нибудь знает, почему это происходит? Я настроил группы безопасности, как указано в документации.

Спасибо


person hockeybro    schedule 06.06.2016    source источник
comment
Все ли узлы находятся в одной группе безопасности? Вы настроили широковещательный_адрес как общедоступный или частный IP-адрес в cassandra.yaml?   -  person Karen B    schedule 06.06.2016
comment
Я настроил широковещательный_адрес на частный IP-адрес. И да, они находятся в одной группе безопасности.   -  person hockeybro    schedule 06.06.2016
comment
Я изменил широковещательный_адрес на частный IP-адрес, и это не помогло. Какой IP должен быть в группе безопасности? Я установил свой IP-адрес, и по умолчанию он был назначен на адрес, который не является ни моим публичным, ни частным адресом.   -  person hockeybro    schedule 06.06.2016
comment
Мой кластер пока также развернут в одном регионе.   -  person hockeybro    schedule 06.06.2016
comment
Вы проверили журналы на наличие неработающих узлов? Вероятно под /var/log/cassandra. Кроме того, на одном узле попробуйте запустить telnet <private IP of another node 9042. Если он подключается, порт открыт. Если время истекло, у вас проблема с брандмауэром.   -  person Karen B    schedule 06.06.2016
comment
Я могу подключиться через порт 9042, используя telnet и частный IP-адрес.   -  person hockeybro    schedule 06.06.2016
comment
Я изменил свою группу безопасности для порта 7000, чтобы открыть (где угодно) в AWS, и это сработало. Каким должен быть порт, так как я не хочу, чтобы кто-либо мог получить доступ к этому кластеру? Это должен быть мой частный порт или как?   -  person hockeybro    schedule 06.06.2016
comment
Это не работало, когда у вас был открыт порт 7000 для группы безопасности? Вы уверены, что у вас там было это правило?   -  person Karen B    schedule 06.06.2016
comment
Да, у меня было такое правило. Как только я открыл порт 7000 для всех, он работает. Какой IP-адрес должен быть в порту 7000? Прямо сейчас я просто нажал MyIP в AWS, и он заполнил случайный.   -  person hockeybro    schedule 06.06.2016
comment
Используете ли вы общедоступные или частные IP-адреса для настройки начального узла в cassandra.yaml?   -  person Karen B    schedule 06.06.2016
comment
В любом случае, если ваши узлы пытаются обмениваться данными через порт 7000, используя общедоступные IP-адреса (что объясняет, почему это сработало только после того, как вы открыли этот порт для Интернета), что-то в файлах конфигурации заставляет это делать. Дважды проверьте cassandra.yaml.   -  person Karen B    schedule 06.06.2016
comment
в соответствии с этим он говорит, что порт 7000 используется для связи между узлами cassandra: docs.datastax.com/en/cassandra/2.1/cassandra/install/   -  person hockeybro    schedule 06.06.2016
comment
Можете ли вы сказать мне, какой IP-адрес должен быть у этих портов в группе безопасности?   -  person hockeybro    schedule 06.06.2016
comment
Вам не нужно добавлять отдельные IP-адреса в правило брандмауэра. Вам нужно выяснить, почему узлы пытаются обмениваться данными через общедоступные IP-адреса, а не через частный IP-адрес, который должен быть где-то в конфигурациях Cassandra.   -  person Karen B    schedule 06.06.2016
comment
Согласно документации datastax, этот порт используется для связи между узлами, верно? Что правильно?   -  person hockeybro    schedule 06.06.2016
comment
Да, это. Но это не меняет того факта, что вы можете и должны использовать для этого частные IP-адреса, поэтому членства в группе безопасности будет достаточно, чтобы открыть его. Дважды проверьте, что вы используете адреса 10.x.x.x для настроек seeds, rpc_address, broadcast_address и broadcast_rpc_address в cassandra.yaml.   -  person Karen B    schedule 06.06.2016
comment
Мой rpc_address — 0.0.0, а мой порт rpc — 9160. Это неправильно?   -  person hockeybro    schedule 07.06.2016
comment
Хорошо, если rpc_address равен 0.0.0.0. А как насчет других настроек, о которых я спрашивал?   -  person Karen B    schedule 07.06.2016
comment
Все они настроены на общедоступный IP-адрес узла и семени соответственно.   -  person hockeybro    schedule 07.06.2016
comment
Тогда это проблема. Вам либо нужно настроить их на использование частного IP-адреса, чтобы членства в группе безопасности было достаточно, либо вам нужно добавить общедоступный IP-адрес каждого узла в правило брандмауэра для каждого порта (и поддерживать этот список при добавлении новых узлов).   -  person Karen B    schedule 07.06.2016
comment
Итак, вы говорите, что Broad_address, Broad_rpc_address и seed должны быть частным IP? Это не сработало.   -  person hockeybro    schedule 07.06.2016
comment
У меня есть конфигурация в ответе на этот пост: stackoverflow.com/questions/26892330/   -  person hockeybro    schedule 07.06.2016