2016-07-13 8 views
0

GCEに3ノード(linux)のcassandra 3.7クラスタがあるとしましょう(おそらくEC2の場合)。 VMはプライベートIPを知っており、パブリックIPも持っています。cassandra on GCE:ノードのプライベートIPとシードの公開IPを使用

ノードは、listen_addressにはプライベートIP、broadcast_addressにはパブリックIP、シードにはパブリックIPを使用すると言われているdoc: multiple network interfacesに従って構成されています。

上記の文書によれば、「カッサンドラは接続を確立した後にプライベート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. 
関連する問題