2016-07-13 6 views
0

Nehmen wir an, wir haben einen 3-Knoten (Linux) Cassandra 3.7 Cluster auf GCE (das gleiche wahrscheinlich für EC2). VMs kennen ihre privaten IPs und haben auch eine öffentliche IP.Cassandra auf GCE: Verwenden Sie private IP für Internodium und öffentliche IP für Samen

Knoten wurden nach doc: multiple network interfaces konfiguriert, die kurz gesagt private IPs für listen_address, öffentliche IP für broadcast_address und öffentliche IP für Seeds verwenden.

Gemäß dem obigen Dokument "wechselt Cassandra nach dem Herstellen einer Verbindung zur privaten IP-Adresse." aber das passiert nicht, tcpdump zeigt ein Ende des Verkehrs an Port 7000 ist immer eine öffentliche IP. Die Verwendung von "prefer_local = true" in cassandrackdc.properties lässt die Clients nur versuchen, eine Verbindung mit den privaten IPs herzustellen, die fehlschlagen.

All dies funktioniert, Clients verbinden und Knoten sehen einander, aber die Kommunikation zwischen Knoten passieren durch ihre öffentlichen IPs. Wir möchten, dass Clients eine Verbindung zur öffentlichen IP herstellen, eine Liste öffentlicher IPs als Kontaktpunkte (Endpunkte) vom Koordinator erhalten, aber einen Koordinator, um Anfragen über die privaten IPs weiterzuleiten. Kann das gemacht werden (ohne iptables und so)?

Antwort

0

Vorläufige Tests zeigen die folgenden Szenarien arbeiten:

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. 
Verwandte Themen