当出现4个节点时CassandraDB节点崩溃



我正在尝试通过docker设置Apache CassandraDB集群。

我已经设法使用docker run --network cassandra -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_SEEDS=node0 --name "node0" -d cassandra创建了多达3个节点。

每当我使用相同的命令添加第4个节点(只是更改容器名称)时,集群中的另一个随机节点崩溃,并且创建的节点也在UJDJ阶段后不久退出。

这是我试过的。

docker network create cassandradocker run --network cassandra -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_SEEDS=node0 --name "node0" -d cassandra

然后等待,直到节点启动,nodetool显示如下:

Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                               Rack 
UN  172.19.0.2  88.49 KiB  16      100.0%            15573541-fc19-4569-9a43-cb04e49e134f  rack1

之后,我向集群中添加了两个额外的节点。

docker run --network cassandra -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_SEEDS=node0 --name "node1" -d cassandradocker run --network cassandra -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_SEEDS=node0 --name "node2" -d cassandra

我一直等到这两个加入集群,然后nodeool显示了这个:

Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                               Rack 
UN  172.19.0.2  74.11 KiB  16      64.7%             15573541-fc19-4569-9a43-cb04e49e134f  rack1
UN  172.19.0.4  98.4 KiB   16      76.0%             30afdc85-e863-452c-9031-59803e4b1f11  rack1
UN  172.19.0.3  74.04 KiB  16      59.3%             6d92cf62-65b4-4365-ab28-2d53872605e3  rack1

看起来不错!之后,我想添加另一个节点来测试复制因子是否正常工作。因此,我使用相同的命令向集群添加了另一个节点:

docker run --network cassandra -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_SEEDS=node0 --name "node3" -d cassandra

当我添加这个节点时,node1立即崩溃。node3(这是一个新的)在UJ(上行连接)阶段,然后切换到DJ(下行连接),然后从节点列表中删除。

以下是nodetool status的结果,按顺序:

Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                               Rack 
UN  172.19.0.2  74.11 KiB  16      64.7%             15573541-fc19-4569-9a43-cb04e49e134f  rack1
UN  172.19.0.4  74.03 KiB  16      76.0%             30afdc85-e863-452c-9031-59803e4b1f11  rack1
DN  172.19.0.3  74.04 KiB  16      59.3%             6d92cf62-65b4-4365-ab28-2d53872605e3  rack1
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                               Rack 
UJ  172.19.0.5  20.75 KiB  16      ?                 2e4a25e4-3c81-4383-9c9f-6326e4043910  rack1
UN  172.19.0.2  74.11 KiB  16      64.7%             15573541-fc19-4569-9a43-cb04e49e134f  rack1
UN  172.19.0.4  74.03 KiB  16      76.0%             30afdc85-e863-452c-9031-59803e4b1f11  rack1
DN  172.19.0.3  74.04 KiB  16      59.3%             6d92cf62-65b4-4365-ab28-2d53872605e3  rack1
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                               Rack 
DJ  172.19.0.5  20.75 KiB  16      ?                 2e4a25e4-3c81-4383-9c9f-6326e4043910  rack1
UN  172.19.0.2  74.11 KiB  16      64.7%             15573541-fc19-4569-9a43-cb04e49e134f  rack1
UN  172.19.0.4  74.03 KiB  16      76.0%             30afdc85-e863-452c-9031-59803e4b1f11  rack1
DN  172.19.0.3  74.04 KiB  16      59.3%             6d92cf62-65b4-4365-ab28-2d53872605e3  rack1
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                               Rack 
UN  172.19.0.2  74.11 KiB  16      64.7%             15573541-fc19-4569-9a43-cb04e49e134f  rack1
UN  172.19.0.4  74.03 KiB  16      76.0%             30afdc85-e863-452c-9031-59803e4b1f11  rack1
DN  172.19.0.3  74.04 KiB  16      59.3%             6d92cf62-65b4-4365-ab28-2d53872605e3  rack1

以下是node1的日志:如您所见,日志中的第一项是确认node2已连接到集群。

https://gist.github.com/janic0/7e464e5c819c37e6ed38819fb3c19eff

以下是node3(同样,这是新节点)的日志

https://gist.github.com/janic0/0968b7136c3beb3ef76a2379f3cd9be5

我调查了一下,发现Docker杀死这些容器的退出码是137 -或者"内存不足"。

是的,我就知道会发生这样的事。

每个节点使用了大约4GB的RAM,第四个节点刚好足以迫使Docker杀死一些容器。如果出于某种原因需要在一台机器上托管那么多节点,可以增加内存限制:

我以前做过类似的事情。如果您只是要进行一些本地测试,并且需要一个多节点集群,那么我以前使用过Minikube。事实上,我整理了一个repo,里面有一些资源:https://github.com/aploetz/cassandra_minikube

但另一种方法可能是"快速修复"。对您来说,就是显式地调整Java堆大小,使每个节点的堆大小都小得多。在上面的Minikube示例中,我设置:

-Xms512M
-Xmx512M
-Xmn256M

这将创建1/2gb的堆,这对于本地开发或一些简单的测试来说已经足够了。你可以在你的cassandra-env.shjvm-server.options文件中设置这些值(取决于你的Cassandra版本)。

相关内容

  • 没有找到相关文章

最新更新