出现4个no时,CassandraDB节点崩溃

yshpjwxd  于 2022-12-23  发布在  Cassandra
关注(0)|答案(1)|浏览(126)

我正在尝试通过Docker设置Apache CassandraDB集群。
我已经使用docker run --network cassandra -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_SEEDS=node0 --name "node0" -d cassandra创建了多达3个节点(包括3个节点)。
每当我使用相同的命令添加第4个节点(只是更改容器名称)时,集群中的另一个随机节点就会崩溃,并且创建的节点也会在处于UJDJ阶段后不久退出。
我是这么试的。
x1米3英寸x1米4英寸
然后我等待节点启动,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

之后,我又向集群添加了两个节点。
x1米5英寸x1米6英寸
我一直等到这两个人加入集群,nodetool显示如下:

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的结果,按顺序排列:**

一个一个二个一个一个一个三个一个一个一个一个一个一个四个一个一个一个一个一个五个一个
以下是node1的日志:如您所见,日志中的第一项是确认node2已连接到集群。
https://gist.github.com/janic0/7e464e5c819c37e6ed38819fb3c19eff
下面是node3的日志(同样,这是新节点)
https://gist.github.com/janic0/0968b7136c3beb3ef76a2379f3cd9be5

dsekswqp

dsekswqp1#

我对此进行了调查,发现Docker使用退出代码137(即“内存不足”)来终止这些容器。
是啊,我就知道会发生这种事。
每个节点使用了大约4GB的RAM,第四个节点刚好足够迫使Docker删除一些容器。如果出于某种原因,您确实希望在一台机器上托管这么多节点,您可以增加内存限制:
我以前做过类似的事情。如果你只是做一些本地测试,你想要一个多节点集群,我以前用过Minikube。事实上,我做了一个repo,里面有一些资源可以做这件事:https://github.com/aploetz/cassandra_minikube
但是另一种可能是“快速修复”的方法是显式地调整Java堆的大小,使每个节点的堆都小很多。

-Xms512M
-Xmx512M
-Xmn256M

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

相关问题