2

我有 3 个 elassandra 节点在 docker 容器中运行。

创建的容器如下:

主机 10.0.0.1 : docker run --name elassandra-node-1 --net=host -e CASSANDRA_SEEDS="10.0.0.1" -e CASSANDRA_CLUSTER_NAME="BD 存储" -e CASSANDRA_DC="DC1" -e CASSANDRA_RACK="r1 " -d 表带数据/elassandra: 最新

主机 10.0.0.2 : docker run --name elassandra-node-2 --net=host -e CASSANDRA_SEEDS="10.0.0.1,10.0.0.2" -e CASSANDRA_CLUSTER_NAME="BD 存储" -e CASSANDRA_DC="DC1" -e CASSANDRA_RACK="r1" -d 带数据/elassandra: 最新

主机 10.0.0.3 : docker run --name elassandra-node-3 --net=host -e CASSANDRA_SEEDS="10.0.0.1,10.0.0.2,10.0.0.3" -e CASSANDRA_CLUSTER_NAME="BD 存储" -e CASSANDRA_DC=" DC1" -e CASSANDRA_RACK="r1" -d strapdata/elassandra:latest

自从创建以来,Cluster 工作了几天,弹性的,cassandra 一切都很完美。

然而,目前所有 cassandra 节点都变得无法相互访问:所有节点上的 Nodetool 状态就像

数据中心:DC1

Status=Up/Down |/State=Normal/Leaving/Joining/Moving -- 地址加载令牌拥有(有效)主机 ID 机架 DN 10.0.0.3 11.95 GiB 8 100.0% 7652f66e-194e-4886-ac10-0fc21ac8afeb r1 DN 10.0。 0.2 11.92 GiB 8 100.0% b91fa129-1dd0-4cf8-be96-9c06b23daac6 r1 UN 10.0.0.1 11.9 GiB 8 100.0% 5c1afcff-b0aa-4985-a3cc-7f932056c08f r1

其中 UN 是当前主机 10.0.0.1 在所有其他节点上相同。

10.0.0.1 上的 Nodetool describecluster 就像

集群信息:名称:BD Storage Snitch:org.apache.cassandra.locator.GossipingPropertyFileSnitch DynamicEndPointSnitch:启用分区器:org.apache.cassandra.dht.Murmur3Partitioner 架构版本:24fa5e55-3935-3c0e-9808-99ce502fe98d:[10.0.0.1]

            UNREACHABLE: [10.0.0.2,10.0.0.3]

当附加到第一个节点时,它只会重复这些信息:

2018-12-09 07:47:32,927 WARN [OptionalTask​​s:1] org.apache.cassandra.auth.CassandraRoleManager.setupDefaultRole(CassandraRoleManager.java:361) CassandraRoleManager 跳过了默认角色设置:一些节点尚未准备好 2018-12-09 07:47:32,927 INFO [OptionalTask​​s:1] org.apache.cassandra.auth.CassandraRoleManager$4.run(CassandraRoleManager.java:400) 设置任务失败并出现错误,重新安排 2018-12-09 07:47:32,980 信息 [握手-/10.0.0.2] org.apache.cassandra.net.OutboundTcpConnection.lambda$handshakeVersion$1(OutboundTcpConnection.java:561) 与 /10.0.0.2 的握手版本 2018-12-09 07:47:32,980 INFO [HANDSHAKE-/10.0 .0.3] org.apache.cassandra.net.OutboundTcpConnection.lambda$handshakeVersion$1(OutboundTcpConnection.java:561) 握手版本与/10.0.0.3

一段时间后,某个节点重新启动:

2018-12-09 07:52:21,972 WARN [MigrationStage:1] org.apache.cassandra.service.MigrationTask.runMayThrow(MigrationTask.java:67) 无法发送架构拉取请求:节点 /10.0.0.2 已关闭。

到目前为止尝试过:同时重新启动所有容器 一个接一个地重新启动所有容器 在所有容器中重新启动 cassandra,例如: service cassandra restart Nodetool disablegossip 然后启用它 Nodetool repair :Repair command #1 failed with error Endpoint not alive: /10.0.0.2

似乎所有节点模式都不同,但我仍然不明白为什么它们被标记为彼此。

4

1 回答 1

0

如果您有不同的 Cassandra 版本,则 nodetool repair 将不会提取数据。保持相同版本的 Cassandra。有时,由于八卦没有正确发生,节点会显示或无法访问。原因可能是网络,该节点上的高负载或节点非常繁忙,并且正在进行大量 i/o 操作,例如修复、压缩等。

于 2018-12-13T04:19:54.690 回答