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などなしで)行うことができますか?