集群中每个节点上的多个 Cassandra 实例

Posted

技术标签:

【中文标题】集群中每个节点上的多个 Cassandra 实例【英文标题】:Multiple instances of Cassandra on each node in the cluster 【发布时间】:2018-10-20 09:59:51 【问题描述】:

是否可以在 Cassandra 中拥有一个集群,其中每个服务器都运行多个 Cassandra 实例(每个实例都是同一个集群的一部分)。

我知道如果集群中有一台服务器,那么it's possible to run multiple instances of Cassandra on it,但集群中是否也可以有多个这样的服务器。如果是,配置将如何(监听地址、端口等)?

即使有可能,我也知道可能根本没有任何性能优势,只是想知道理论上是否可行。

【问题讨论】:

【参考方案1】:

是的,这是可能的,并且这种设置通常用于测试,例如,使用 CCM,尽管它会在环回 (127.0.0.2, ...) 上创建多个接口。 DataStax Enterprise 也有所谓的Multi-instance。

您需要仔细配置实例以分隔端口等。现在,可能使用 Docker 可能是实现它的更简单的解决方案。

但是为什么你需要这样做呢?除非您的机器非常笨拙,具有大量 RAM 和多个 SSD,否则这不会为您带来额外的性能。

【讨论】:

点赞我;我也将如何表达它(带有警告)。 CCM 已经走了很长一段路,基本上完全按照他的要求去做。 CCM 是在多个节点(不同的物理服务器)上创建多个实例,都在一个集群中协同工作,还是只在一个节点上创建多个实例? CCM 用于在单个主机上部署多个实例,但我提到它是因为您可以采用类似的方法。但我建议仔细考虑在单个盒子上使用多个实例 我已经阅读了如何在单个主机上配置多个实例,但我无法弄清楚如何为多个节点执行此操作(每个节点的监听地址、广播地址是什么?实例?)实际上,我们想在实验的基础上尝试这个,因为我们认为如果每个节点只有一个实例,我们的 RAM 没有得到充分利用。 目前,我们只有一个 2 节点集群,每个节点都有超过 150 GB 的 RAM 和几个磁盘。目前我们的项目处于初始阶段,因此我们只是在探索几种实现方案,以后可能会增加节点数量,我们也可能使用 SSD。【参考方案2】:

是的,即使我在生产集群的一台服务器上运行了 5 个实例,也有可能。 相信我,它仍然在运行,但我遇到的一般问题是高 GC,突变下降和高延迟,所以这种设置当然不好。 但是对于您的问题的回答,是的,它是可能的,也可以投入生产。

【讨论】:

你有多少个节点?我的意思是物理上不同的节点。 我有 2 个数据中心,每个数据中心有 22 个节点,每个节点上运行 5 个 JVM。 如果您可以扩展您的答案以包括您如何准确配置 YAML 文件,主要是listen_address、broadcast_rpc_address、存储端口和native_transport_port,这将非常有帮助。

以上是关于集群中每个节点上的多个 Cassandra 实例的主要内容,如果未能解决你的问题,请参考以下文章

管理多个 Cassandra 会话

Cassandra 多个节点位于同一服务器上的不同数据中心

Cassandra 节点上的高磁盘 I/O

Cassandra:挂节点工具修复

由于我的 Cassandra 集群中的负载过大,节点上的写入失败

当表在集群中的多个节点之间复制时,COPY 如何在 cassandra 中工作?