cassandra.yaml中的broadcast_address和broadcast_rpc_address有什么区别?

What is the difference between broadcast_address and broadcast_rpc_address in cassandra.yaml?

目标: 我正在尝试了解配置我的 Cassandra 集群的最佳方法,以便跨多个不同网络场景的多个不同驱动程序可以与其正确通信。

PROBLEM/QUESTION: 在阅读文档后,我并不完全清楚这两个设置之间的区别:broadcast_address 和 broadcast_rpc_address 因为它与驱动程序连接集群并与之交互的方式有关。我应该将这些设置中的哪一个或哪个组合用于我节点的可访问网络端点(客户端可获得的 DNS 记录's/drivers)?

这是 datastax 中 broadcast_address 的文档: (默认值:listen_address)note 节点告诉集群中的其他节点与其联系的 IP 地址。它允许 public 和私有地址不同。例如,在并非所有节点都可以通过其私有 IP 地址访问其他节点的拓扑中使用 broadcast_address 参数。 如果您的 Cassandra 集群部署在多个 Amazon EC2 区域并且您使用 EC2MultiRegionSnitch,请将 broadcast_address 设置为 public 节点的 IP 地址,将 listen_address 设置为私有 IP。

这是 datastax 中 broadcast_rpc_address 的文档: (默认值:未设置)注意广播给驱动程序和其他 Cassandra 节点的 RPC 地址。这不能设置为 0.0.0.0。如果为空,则设置为 rpc_address 或 rpc_interface 的值。如果rpc_address或rpc_interface设置为0.0.0.0,则必须设置此属性。

编辑:此问题与 Cassandra 2.1 版有关,将来可能不相关。

freenode 上#cassandra 的一位用户好心地回答了这个问题:

rpc 系列设置与使用 Thrift 协议与 cassandra 通信的驱动程序有关。对于那些使用本机传输的驱动程序,将报告并使用 broadcast_address。

我的测试用例证实了这一点。