Cassandra客户端连接到多个地址

时间:2018-11-14 13:01:48

标签: cassandra

我对Cassandra有疑问。 可以在许多IP上打开Cassandra客户端连接吗?

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

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

目前我只能选择1个IP,它在cassandra.yaml文件中做了什么修改?

1 个答案:

答案 0 :(得分:0)

您需要在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地址)。即使应用程序仅分配了一个IP地址,这也允许应用程序自动发现集群中的所有节点。这还允许应用程序处理诸如节点脱机或添加新节点之类的情况。

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