【问题标题】:Run multiple cassandra nodes (a cluster) from the same machine?从同一台机器上运行多个 cassandra 节点(一个集群)?
【发布时间】:2018-03-30 01:13:00
【问题描述】:

如何在我的 Ubuntu 上运行 3 个 cassandra 节点(实际上是一个集群)?我不想创建 3 个 VMWare/VirtualBox 实例,而是将每个 cassandra 节点配置为侦听不同的端口。安装一个 cassandra 可以吗?

我想到的一个解决方案是安装 3 个本地 cassandra 并独立配置每个 cassandra.yaml,但实际上我更希望通过我安装的 cassandra 配置文件来实现。

显然,我需要这样的配置仅用于测试目的。

【问题讨论】:

  • 这不能通过分配不同的端口来完成,因为有些端口不容易配置。但是,通过使用本地主机的同义地址(127.0.0.1、127.0.0.2 等)很容易做到这一点。在stackoverflow.com/questions/22513979/… 的答案中描述了这种方法
  • 你说你不想要虚拟机,但你可以使用容器(例如 Docker)来让它工作。这个问题已经 8 年了,所以我猜你现在已经继续前进了,但它可以帮助其他人,因为这仍然是谷歌上出现的第一页。
  • @KNejad 有相关文档吗?我不熟悉 Docker,所以学习 Docker 和部署多个节点会很好:)

标签: cassandra cluster-computing


【解决方案1】:

在 github 上查看这个 Cassandra 集群管理器 https://github.com/pcmanus/ccm

(链接是配置多个 Cassandra 以侦听不同 localhost 接口 127.0.0.1、127.0.0.2、127.0.0.3 的脚本)

【讨论】:

    【解决方案2】:

    我想如果你有 3 个程序副本,3 个不同的配置,每个端口都不同,并且你必须从可能的连接套接字中排除这些端口,这是可能的。

    编辑我不明白反对意见。这实际上是最简单的方法,拥有一组二进制文件并为每个节点创建一组 conf 和 yaml 文件,然后为所需的每个本地节点使用一个启动脚本。

    示例:7199 上的机器 1、7200 上的机器 2、7201 上的机器 3 等等。 为您的本地主机 IP、127.0.0.2、.3、.4 等使用别名

    Nodetool ring 将按预期工作,并显示一个集群,只有它们都具有相同的根 IP。

    【讨论】:

    • 可能是因为并非所有端口都可以轻松移动,有些是硬编码的。看起来比 Cassandra 的功能更多的错误,但这需要一些特殊的解决方法。
    【解决方案3】:

    我似乎在 JMX 库上遇到了端口冲突问题?可能是 Jamm?之前,似乎没有通过 yaml 配置,但也许启动 .sh 脚本可以禁用它,这似乎是启动脚本中构建的 JVM 选项。

    还有一个技巧是为服务器实例使用不同的环回地址,以便它们可以与相同的端口共存,但这会遇到堵塞问题。那是来自 Packt cassandra 高性能食谱。

    但从 1.2.5 及更高版本开始,我大致无法成功地做到这一点。

    【讨论】:

    • 这可以通过为每个 Cassandra 实例设置不同的 JMX 端口来轻松解决。该端口定义在 conf/cassandra-env.sh 中,编辑后会再次生效。
    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 2013-02-02
    • 2015-03-09
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    相关资源
    最近更新 更多