2016-07-13 81 views
0

假設我們在GCE上有一個3節點(linux)cassandra 3.7羣集(可能與EC2相同)。虛擬機知道他們的私有IP,並且也擁有公共IP。cassandra on GCE:使用私人IP用於節點和公共IP用於種子

節點根據doc: multiple network interfaces進行配置,簡稱IP地址爲listen_address,public IP爲broadcast_address,public ip爲種子。

根據上述文檔,「Cassandra在建立連接後切換到專用IP」。但是這並沒有發生,tcpdump顯示7000端口的流量總是一個公有IP。 對cassandra-rackdc.properties使用「prefer_local = true」只會讓客戶端嘗試連接失敗的私有IP。

所有這些工作,客戶端連接和節點互相看到,但節點之間的通信發生在他們的公共IP地址。我們希望客戶端連接到公共IP,從協調器獲取公共IP作爲聯繫點(端點),但協調者通過私有IP轉發請求。這可以做到(沒有iptables等)?

回答

0

初步測試顯示,在下列情況下工作:

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.