【问题标题】:Unable to gossip with any seeds but continuing since node is in its own seed list无法使用任何种子进行八卦,但由于节点位于其自己的种子列表中,因此继续
【发布时间】:2018-01-16 23:50:23
【问题描述】:

为了从我运行的 AWS 中的 2 节点集群中删除一个节点

nodetool removenode <Host ID>

在此之后,如果我正确放置了所有 cassandra.yamlcassandra-rackdc.properties,我应该可以恢复我的集群。 我做到了,但我仍然无法取回我的集群。

nodetool status 只显示一个节点。

cassandra 上重要的 system.log 是:

INFO  [main] 2017-08-14 13:03:46,409 StorageService.java:553 - Cassandra version: 3.9
INFO  [main] 2017-08-14 13:03:46,409 StorageService.java:554 - Thrift API version: 20.1.0
INFO  [main] 2017-08-14 13:03:46,409 StorageService.java:555 - CQL supported versions: 3.4.2 (default: 3.4.2)
INFO  [main] 2017-08-14 13:03:46,445 IndexSummaryManager.java:85 - Initializing index summary manager with a memory pool size of 198 MB and a resize interval of 60 minutes
INFO  [main] 2017-08-14 13:03:46,459 MessagingService.java:570 - Starting Messaging Service on /172.15.81.249:7000 (eth0)
INFO  [ScheduledTasks:1] 2017-08-14 13:03:48,424 TokenMetadata.java:448 - Updating topology for all endpoints that have changed
WARN  [main] 2017-08-14 13:04:17,497 Gossiper.java:1388 - Unable to gossip with any seeds but continuing since node is in its own seed list
INFO  [main] 2017-08-14 13:04:17,499 StorageService.java:687 - Loading persisted ring state
INFO  [main] 2017-08-14 13:04:17,500 StorageService.java:796 - Starting up server gossip

文件内容:

cassandra.yamlhttps://pastebin.com/A3BVUUUr

cassandra-rackdc.propertieshttps://pastebin.com/xmmvwksZ

system.loghttps://pastebin.com/2KA60Sve

netstat -atun https://pastebin.com/Dsd17i0G

两个节点都有相同的错误日志。

所有需要的端口都打开了。

有什么建议吗?

【问题讨论】:

  • 之前集群中有多少个节点...您是否更改了种子节点(如果删除了种子节点)
  • 删除节点前后有两个节点我没有更改种子。两个节点都有种子,就像节点 1 有 - seeds: "node1,node2" node 2 had -seeds: "node2,node1"`
  • 两个集群节点都启动了吗?如果不是,请先检查。
  • 我已经这样做了,但还是同样的问题。
  • 您还有一个节点在运行吗?当您尝试读取节点时,能否将来自 cassandas system.log 的日志发布到正在运行的节点和起始节点上?

标签: amazon-ec2 cassandra nodetool


【解决方案1】:

如果您的数据中心只有两个可用节点,每个 DC 有一个种子节点通常是最佳做法。在这种情况下,您不应该将每个节点都设为种子节点。

我注意到 node1 在您的配置中有 - seeds: "node1,node2" 和 node2 有 - seeds: "node2,node1"。如果节点可以在cassandra.yml 配置文件的- seeds: ... 部分中找到它的IP 地址作为第一个元素,则默认情况下该节点将在不联系任何其他种子的情况下启动。您也可以在日志中找到这些内容:

... Unable to gossip with any seeds but continuing since node is in its own seed list ...

我怀疑,在您的情况下,node1 和 node2 是在没有相互联系的情况下启动的,因为它们将自己标识为种子节点。

尝试在两个实例的配置中仅使用 node1 作为种子节点并重新启动集群。 如果 node1 关闭而 node2 启动,您必须将 node1 配置中的 - seeds: ... 部分更改为仅指向 node2 的 IP 地址并启动 node1。

如果您的节点由于防火墙配置错误而无法找到彼此,通常是验证特定端口是否可从其他位置访问的好方法。例如。您可以使用nc 来检查某个端口是否打开:

nc -vz node1 7000

参考和链接

在以下链接下查看 Cassandra 正在使用的端口列表 http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureFireWall.html

另请参阅有关使用大量示例命令运行多个节点的详细文档: http://docs.datastax.com/en/cassandra/2.1/cassandra/initialize/initializeMultipleDS.html

【讨论】:

  • 不工作。同样的问题。甚至我也关注了这个stackoverflow.com/questions/23874160/…
  • 你检查端口是否打开了吗?另外对我有帮助的是执行netstat -nlp 并检查特定节点是否使用正确的以太网接口来接受八卦消息。
  • 所有端口都打开了,我跑了netstat -atun这么多次来检查它。
  • 我会再次重新检查您的配置。您能否也运行ifconfig -a,以便我们可以看到节点中配置的接口?谢谢!
  • 很高兴这个问题终于解决了。仅供参考nc -vz node2 7000 会与telnet Node2 7000 进行相同的检查
【解决方案2】:

这是供将来参考。只需在 AWS 中为同一安全组打开 7000 端口即可解决我的问题。虽然它是开放的,但安全组是不同的。 我跑的时候:

ec2-user@ip-Node1 ~]$ telnet Node2 7000
Trying Node2...
telnet: connect to address Node2: Connection timed out

我知道问题可能出在安全组上。 这就是它的解决方法。

关于种子我使用两个节点的 IP,如下所示:

-seeds: "node1,node2"

在两个节点上都是一样的。

【讨论】:

    猜你喜欢
    • 2014-01-08
    • 2015-12-22
    • 1970-01-01
    • 2017-01-27
    • 2015-02-07
    • 2014-08-19
    • 2014-11-28
    • 2016-05-18
    • 1970-01-01
    相关资源
    最近更新 更多