【问题标题】:Cassandra client connection to multiple addressesCassandra 客户端连接到多个地址
【发布时间】:2018-11-16 07:18:04
【问题描述】:

我有一个关于 Cassandra 的问题。 是否可以在多个 IP 上打开 Cassandra 客户端连接?

在我的服务器上,我有 2 个网卡(eth0 和 eth1),IP 分别为 10.197.11.21 (eth0) 和 192.168.0.45 (eth1) 和 127.0.0.1 (lo)。

我希望我的客户端使用这三个 IP 连接到 Cassandra 数据库 在本地主机中,10.197.11.21 和 192.168.0.45

目前我只能选择1个IP,在cassandra.yaml文件中修改有什么作用?

【问题讨论】:

  • 是的,我修改 ma yaml 文件并添加:listen_address: 10.197.11.21 127.0.0.1 broadcast_address: 10.197.11.255 127.0.0.1 listen_on_broadcast_address: true seed: "10.197.11.21, 127.0.0.1" 但它是当我尝试在 localhost 中连接时不起作用
  • 您可以在Cassandra.yaml中使用0.0.0.0 listen_on__address 来查看所有接口上的Cassandra。
  • listen_on__address 参数在 cassandra.yaml 中不存在参数listen_address,我无法设置 0.0.0.0 因为在 cassandra doc 中:将 listen_address 设置为 0.0.0.0 总是错误的。

标签: cassandra


【解决方案1】:

你需要在cassandra.yaml中设置rpc_address: 0.0.0.0

请注意,当您将 rpc_address 设置为 0.0.0.0 时,您还必须broadcast_rpc_address 设置为 0.0.0.0 以外的值(例如 10.197.11.21)。

  • rpc_address 是 Cassandra 监听来自客户端的连接的地址
  • listen_address 是 Cassandra 监听来自其他 Cassandra 节点的连接(不是客户端连接)的地址
  • broadcast_rpc_address 是 Cassandra 向尝试发现集群中其他节点的客户端广播的地址。当应用程序首次连接到 Cassandra 集群时,集群会向应用程序发送集群中所有节点的列表及其 IP 地址。发送到应用程序的 IP 地址是 broadcast_ip_address(旁注:cassandra 实际上发送了所有 IP 地址,这只是它告诉客户端连接的一个地址)。这允许应用程序自动发现集群中的所有节点,即使只为应用程序提供了一个 IP 地址。这还允许应用程序处理节点离线或添加新节点等情况。

即使您的broadcast_rpc_address 只能指向这两个 IP 地址之一,您的应用程序仍然可以连接到其中一个。但是,您的应用程序还将尝试通过集群发回的broadcast_rpc_addresses 连接到其他节点。您可以通过向您的应用程序提供集群中每个节点地址的完整列表来解决此问题,但最好的解决方案是构建一个driver-side address translator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2011-11-26
    • 2015-04-20
    • 2017-07-24
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多