我应该在 cassandra.yaml 中为 listen_address 使用啥地址?

Posted

技术标签:

【中文标题】我应该在 cassandra.yaml 中为 listen_address 使用啥地址?【英文标题】:What address should i use for listen_address in cassandra.yaml ?我应该在 cassandra.yaml 中为 listen_address 使用什么地址? 【发布时间】:2015-09-21 07:40:53 【问题描述】:

我正在尝试在两台不同的机器上设置一个多节点 cassandra 数据库。 我应该如何配置 cassandra.yaml 文件? datastax 文档说

监听地址¶ (默认值:localhost)其他 Cassandra 节点用于连接到该节点的 IP 地址或主机名。如果未设置,则主机名必须使用 /etc/hostname、/etc/hosts 或 DNS 解析为此节点的 IP 地址。不要指定 0.0.0.0。

当我使用'localhost'作为listen_address的值时,它在本地机器上运行良好,当我使用我的IP地址时,它无法连接。为什么会这样?

【问题讨论】:

我猜,原因之一是在我的seeds 中,没有一个条目对应于我的 IP 地址(我在 listen_address 中提到过)。我将 127.0.0.1 替换为 然后它开始工作了。 【参考方案1】:

在 Cassandra 中配置节点和种子节点相当简单,但必须遵循某些步骤。设置多节点集群的过程很好documented,我将引用链接文档。

我认为用 4 个而不是 2 个来说明节点的设置更容易,因为 2 个节点对运行的 Cassandra 实例没有多大意义。如果您在 2 台机器和每台机器上的 1 个种子节点之间拆分 4 个节点,则概念配置将如下所示:

node1 86.82.155.1 (seed 1)
node2 86.82.155.2

node3 192.82.156.1 (seed 2)
node4 192.82.156.2

如果这些机器中的每一个在布局方面都相同,您可以在所有节点上使用相同的 cassandra.yaml 文件。

如果集群中的节点在磁盘布局、共享库等方面相同,则可以在所有节点上使用 cassandra.yaml 文件的相同副本

您需要在 cassandra.yaml 中的 -seeds 配置下设置 IP 地址。

-seeds:每个种子节点的内部IP地址

    parameters:
     - seeds: "86.82.155.1,192.82.156.1"

了解节点和种子节点之间的区别很重要。如果您越过了这些 IP 地址,您可能会遇到与您所描述的问题类似的问题,并且从您的评论中可以看出您已更正了配置。

种子节点不引导,这是一个新节点加入现有集群的过程。对于新集群,将跳过种子节点上的引导过程。

如果您无法掌握基于节点的架构,请阅读Achitecture in Brief 文档或观看Understanding Core Concepts class。

【讨论】:

以上是关于我应该在 cassandra.yaml 中为 listen_address 使用啥地址?的主要内容,如果未能解决你的问题,请参考以下文章

在Cassandra中加载cassandra.yaml之外的其他配置文件

cassandra.yaml 配置

Cassandra 配制 cassandra.yaml

如果在 cassandra.yaml 中启用了 auto_snapshot,那么这些快照啥时候会被删除

在 cassandra.yaml 中获取超过 max_value_size_in_mb 的值的错误

cassandra.yaml中的群集配置问题,用于多节点群集,其中只有1个公共IP