【问题标题】:cassandra on GCE: use private ip for internode and public IP for seedsGCE 上的 cassandra:对节点间使用私有 IP,对种子使用公共 IP
【发布时间】:2016-07-13 14:42:34
【问题描述】:

假设我们在 GCE 上有一个 3 节点 (linux) cassandra 3.7 集群(EC2 可能相同)。虚拟机知道它们的私有 IP,也有一个公共 IP。

节点是根据doc: multiple network interfaces 配置的,简而言之,将私有 IP 用于监听地址,公共 IP 用于广播地址,公共 IP 用于种子。

根据上面的文档,“Cassandra 在建立连接后切换到私有 IP。”但这不会发生,tcpdump 显示到端口 7000 的流量的一端始终是公共 IP。 在 cassandra-rackdc.properties 上使用“prefer_local=true”只会使客户端尝试连接到失败的私有 IP。

所有这些都有效,客户端连接并且节点可以看到彼此,但是节点之间的通信是通过它们的公共 IP 进行的。我们希望客户端连接到公共 IP,从协调器获取公共 IP 列表作为联系点(端点),但协调器通过私有 IP 转发请求。可以这样做(没有 iptables 等)吗?

【问题讨论】:

    标签: cassandra google-compute-engine


    【解决方案1】:

    初步测试显示以下场景有效:

    1)

    listen_address: private
    broadcast_address: public
    rpc_address: private
    broadcast_rpc_address: public
    seeds: public
    
    nodetool status shows public.
    

    2)

    listen_address: private
    broadcast_address: private (or comment out)
    rpc_address: private
    broadcast_rpc_address: public
    seeds: private
    
    nodetool status shows private
    some few data between nodes on port 7000 go through public.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 2022-11-23
      相关资源
      最近更新 更多