новый узел cassandra не может сплетничать с семенем

Я пытаюсь запустить новый узел, используя cassandra 2.0.7. Оба узла находятся в Digital Ocean. Начальный узел запущен и работает, и я могу подключиться через telnet к порту 7000 на этом хосте с узла, который я пытаюсь запустить.

[root@cassandra02 apache-cassandra-2.0.7]# telnet 10.10.1.94 7000

Trying 10.10.1.94...

Connected to 10.10.1.94.

Escape character is '^]'.

Но когда я запускаю cassandra на новом узле, я вижу следующее исключение:

INFO 00:01:34,744 Handshaking version with /10.10.1.94

ERROR 00:02:05,733 Exception encountered during startup

java.lang.RuntimeException: Unable to gossip with any seeds

    at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1193)

    at         org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:447)

    at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:656)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:612)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:505)

    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:362)

    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:480)

    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:569)

java.lang.RuntimeException: Unable to gossip with any seeds

    at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1193)

    at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:447)

    at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:656)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:612)

    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:505)

    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:362)

    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:480)

    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:569)

Exception encountered during startup: Unable to gossip with any seeds

ERROR 00:02:05,742 Exception in thread Thread[StorageServiceShutdownHook,5,main]

java.lang.NullPointerException

    at org.apache.cassandra.gms.Gossiper.stop(Gossiper.java:1270)

    at org.apache.cassandra.service.StorageService$1.runMayThrow(StorageService.java:573)

    at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)

    at java.lang.Thread.run(Thread.java:745)

Я использую раздел murmur3 на обоих узлах, и у меня есть IP-адрес начального узла, указанный в cassandra.yaml нового узла. Мне просто интересно, в чем может быть проблема и как я могу ее обойти.


person bluethundr    schedule 26.05.2014    source источник
comment
Можешь попробовать с 2.0.10?   -  person Zanson    schedule 30.08.2014
comment
Эй, у меня то же самое. Вы решили это?   -  person JRun    schedule 17.09.2014


Ответы (4)


Хорошо, потратив на это целый день, я в конце концов нашел IRC-канал #cassandra на freenode. (это мой первый совет, ходите туда регулярно)

Проблема, с которой вы столкнулись, скорее всего (и в моем случае была) так называемой проблемой «курицы и яйца». Курица и яйцо: Узел 1: семена=узел2 Узел 2: семена=узел1

Ни один из узлов не может загружаться должным образом, потому что нет ни одного начального узла, полностью загруженного в... время загрузки.

Чтобы решить эту проблему, просто установите: Узел 1: семена = узел1, узел2 Узел 2: семена = узел2.

Теперь загрузится node1. Узел 2 в конечном итоге тоже загрузится.

Вуаля.

person JRun    schedule 17.09.2014

Проверьте брандмауэр: настройка порта в новом узле.

http://www.datastax.com/documentation/cassandra/2.0/cassandra/security/secureFireWall_r.html

person Neha Dave    schedule 03.09.2014

Настоящая проблема здесь в том, что вы пытаетесь запустить Cassandra без данных и с включенным auto_bootstrap на всех узлах.

С точки зрения JRun, «курица и яйцо» на самом деле представляют собой ситуацию «Я пытаюсь автоматически загружать узлы без узлов, чтобы сказать ему, что делать».

Вам нужно отключить auto_bootstrap в файле cassandra.yaml на одном из узлов (желательно семени).

См.: документацию DataStax Cassandra 2.1

В частности: auto_bootstrap: false (Add this setting only when initializing a fresh cluster with no data.)

Итак, чтобы решить эту проблему... Просто измените файл cassandra.yaml, как в приведенном ниже примере:

Кластер C* с тремя узлами БЕЗ ДАННЫХ

Информация об IP-адресе:

  • Узел 1: 192.168.1.10
  • Узел 2: 192.168.1.11
  • Узел 3: 192.168.1.12

Первоначально назначенные семена:

Узел 1 (192.168.1.10) / Узел 3 (192.168.1.12)

cassandra.yaml -> - seeds: "192.168.1.10,192.168.1.12"

auto_bootstrap включено по умолчанию

Новое назначенное начальное число: узел 3 (192.168.1.12)

**Внесите это изменение на всех трех узлах: **

cassandra.yaml -> - seeds: "192.168.1.12"

Внесите это изменение в исходный узел в дополнение к предыдущему cassandra.yaml -> auto_bootstrap: false

(Скорее всего, запись auto_bootstrap не будет существовать, так что вперед и добавьте ее куда-нибудь в yaml).

После внесения вышеуказанных изменений перезапустите все процессы cassandra.

Все должно быть в порядке, как только все они полностью запустятся, вы сможете вернуться и настроить свои семена так, как вам хочется!

person mbeacom    schedule 04.12.2015

Я столкнулся с той же проблемой и решил ее методом JRun, описанным выше. Но изначально этого не было, потому что я установил начальный узел как 127.0.0.1. позже я изменил его на свой IP-адрес интерфейса и решил проблему. Мне пришлось установить те же IP-адреса, которые использовались в качестве адреса прослушивания и адреса rpc.

person Shamin    schedule 06.11.2015