我有一个关于卡桑德拉的问题。是否可以在多个IP上打开Cassandra客户端连接?
在我的服务器上,我有两个网卡(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中修改它会做什么?
您需要在cassandra.yaml 中设置rpc_address: 0.0.0.0
请注意,当您将rpc_address
设置为0.0.0.0时,还必须将broadcast_rpc_address
设置为0.0.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
(side-note:casandra实际上发送所有IP地址,这只是它告诉客户端连接的IP地址(。这允许应用程序自动发现群集中的所有节点,即使只为应用程序提供了一个IP地址。这还允许应用程序处理节点脱机或添加新节点等情况
即使您的broadcast_rpc_address
只能指向这两个IP地址中的一个,您的应用程序仍然可以连接到其中任何一个。但是,您的应用程序也将尝试通过集群发回的broadcast_rpc_address
es连接到其他节点。您可以通过向应用程序提供集群中每个节点的地址的完整列表来解决这一问题,但最好的解决方案是构建一个驱动程序端地址转换器。