无法与任何种子进行八卦,但由于节点在其自己的种子列表中而继续
Unable to gossip with any seeds but continuing since node is in its own seed list
要从 AWS I 中的 2 节点集群中删除一个节点 运行
nodetool removenode <Host ID>
在此之后,如果我正确地放置了所有 cassandra.yaml
和 cassandra-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.yaml : https://pastebin.com/A3BVUUUr
cassandra-rackdc.properties: https://pastebin.com/xmmvwksZ
system.log : https://pastebin.com/2KA60Sve
netstat -atun https://pastebin.com/Dsd17i0G
两个节点都有相同的错误日志。
所有需要的端口都已打开。
有什么建议吗?
如果您的数据中心只有两个可用节点,通常最佳做法是每个 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 作为种子节点并重新启动集群。
如果节点 1 关闭而节点 2 启动,您必须更改节点 1 配置中的 - seeds: ...
部分以仅指向节点 2 的 IP 地址并仅启动节点 1。
如果您的节点由于防火墙配置错误而无法找到彼此,验证特定端口是否可以从其他位置访问通常是一个很好的方法。例如。您可以使用 nc
检查某个端口是否打开:
nc -vz node1 7000
参考和链接
在下面查看 Cassandra 使用的端口列表 link
http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureFireWall.html
另请参阅有关 运行 多个节点的详细文档,其中包含大量示例命令:
http://docs.datastax.com/en/cassandra/2.1/cassandra/initialize/initializeMultipleDS.html
这是为了将来参考。我的问题已经通过在 AWS 中为同一安全组打开 7000 端口而得到解决。虽然它是开放的,但安全组是不同的。
当我 运行:
ec2-user@ip-Node1 ~]$ telnet Node2 7000
Trying Node2...
telnet: connect to address Node2: Connection timed out
我开始知道问题可能出在安全组。
这就是问题的解决方式。
关于种子,我使用两个节点的 IP,如下所示:
-seeds: "node1,node2"
两个节点上都是一样的。
要从 AWS I 中的 2 节点集群中删除一个节点 运行
nodetool removenode <Host ID>
在此之后,如果我正确地放置了所有 cassandra.yaml
和 cassandra-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.yaml : https://pastebin.com/A3BVUUUr
cassandra-rackdc.properties: https://pastebin.com/xmmvwksZ
system.log : https://pastebin.com/2KA60Sve
netstat -atun https://pastebin.com/Dsd17i0G
两个节点都有相同的错误日志。
所有需要的端口都已打开。
有什么建议吗?
如果您的数据中心只有两个可用节点,通常最佳做法是每个 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 作为种子节点并重新启动集群。
如果节点 1 关闭而节点 2 启动,您必须更改节点 1 配置中的 - seeds: ...
部分以仅指向节点 2 的 IP 地址并仅启动节点 1。
如果您的节点由于防火墙配置错误而无法找到彼此,验证特定端口是否可以从其他位置访问通常是一个很好的方法。例如。您可以使用 nc
检查某个端口是否打开:
nc -vz node1 7000
参考和链接
在下面查看 Cassandra 使用的端口列表 link http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureFireWall.html
另请参阅有关 运行 多个节点的详细文档,其中包含大量示例命令: http://docs.datastax.com/en/cassandra/2.1/cassandra/initialize/initializeMultipleDS.html
这是为了将来参考。我的问题已经通过在 AWS 中为同一安全组打开 7000 端口而得到解决。虽然它是开放的,但安全组是不同的。 当我 运行:
ec2-user@ip-Node1 ~]$ telnet Node2 7000
Trying Node2...
telnet: connect to address Node2: Connection timed out
我开始知道问题可能出在安全组。 这就是问题的解决方式。
关于种子,我使用两个节点的 IP,如下所示:
-seeds: "node1,node2"
两个节点上都是一样的。