Cassandra-Portnutzung - Wie werden die Ports verwendet?

96

Beim Experimentieren mit Cassandra habe ich festgestellt, dass Cassandra die folgenden Ports abhört:

  • TCP *: 8080
  • TCP *: 8888
  • TCP *: 57311
  • TCP *: 57312
  • TCP 127.0.0.1:7000
  • TCP 127.0.0.1:9160
  • UDP 127.0.0.1:700

Wie verwendet Cassandra jeden der aufgelisteten Ports?

knorv
quelle
13
adamse: Danke für den Tipp! Das ist wahrscheinlich so, aber für zukünftige Cassandra-Benutzer auf Stackoverflow (eine wachsende Bevölkerung!) Hält ich es für gut, die Antwort auch hier zu speichern :-)
knorv

Antworten:

131

@Schildmeijer hat weitgehend recht, jedoch wird Port 7001 weiterhin verwendet, wenn TLS-verschlüsselte Internode-Kommunikation verwendet wird

Meine vollständige Liste wäre also für aktuelle Versionen von Cassandra:

  • 7199 - JMX (war 8080 vor Cassandra 0.8.xx)
  • 7000 - Internode-Kommunikation (wird nicht verwendet, wenn TLS aktiviert ist)
  • 7001 - TLS Internode-Kommunikation (wird verwendet, wenn TLS aktiviert ist)
  • 9160 - Thrift-Client-API
  • 9042 - CQL nativer Transportport
Matthew O'Riordan
quelle
4
Hier ist der aktuelle Link ab 2017 zur offiziellen Dokumentation cassandra.apache.org/doc/latest/faq/index.html#what-ports
Johnride
44

Für Apache Cassandra 2.0 müssen Sie die folgenden TCP- Ports berücksichtigen : (Siehe Konfiguration der EC2-Sicherheitsgruppe und häufig gestellte Fragen zu Apache Cassandra. )

Kassandra

  • 7199 JMX-Überwachungsport
  • 1024 - 65355 Zufälliger Port für JMX erforderlich. Ab Java 7u4 kann mit der com.sun.management.jmxremote.rmi.portEigenschaft ein bestimmter Port angegeben werden .
  • 7000 Cluster zwischen Knoten
  • 7001 SSL-Cluster zwischen Knoten
  • 9042 CQL Native Transport Port
  • 9160 Sparsamkeit

DataStax OpsCenter

  • 61620 opscenterd Daemon
  • 61621 Agent
  • 8888 Website

Die Architektur

Eine mögliche Architektur mit Cassandra + OpsCenter auf EC2 könnte folgendermaßen aussehen: AWS EC2 mit OpsCenter

joscas
quelle
35

8080 - JMX (Remote)

8888 - Remote-Debugger (entfernt in 0.6.0)

7000 - Wird intern von Cassandra verwendet
(7001 - Veraltet, entfernt in 0.6.0. Wird für die Kommunikation mit Mitgliedern verwendet, auch bekannt als Klatsch)

9160 - Thrift-Client-API

Cassandra FAQ Welche Ports verwendet Cassandra?

Schildmeijer
quelle
7

JMX verwendet jetzt Port 7199 anstelle von Port 8080 (ab Cassandra 0.8.xx).

Dies ist in Ihrer Datei cassandra-env.sh konfigurierbar, der Standardwert ist jedoch 7199.

David
quelle
5

Die Ports 57311 und 57312 sind zufällig zugewiesene Ports, die für die RMI-Kommunikation verwendet werden. Diese Ports ändern sich bei jedem Start von Cassandra, müssen jedoch zusammen mit 8080/7199 (je nach Version) in der Firewall geöffnet sein, um einen Remote-JMX-Zugriff zu ermöglichen. Etwas, das nicht besonders gut dokumentiert zu sein scheint, mich aber in der Vergangenheit gestolpert hat.

Chrisbunney
quelle
1
Für die Nachwelt sollte dieser Ärger ab Cassandra 2.0.8 gemäß diesem Ticket behoben werden . Die Standardeinstellung cassandra-env.shsetzt die com.sun.management.jmxremote.rmi.portEigenschaft jetzt auf den gleichen Wert wie der Haupt-JMX-Port, sodass keine zufälligen Ports verwendet werden.
ches
0

Wenn Sie im Rahmen der Konfiguration Ihrer Firewall SSH verwenden, verwenden Sie zusätzlich zu den obigen Antworten Port 22.

Keerthikanth Chowdary
quelle
0

Ich habe das Problem mithilfe der folgenden Schritte behoben:

  1. Stoppen Sie die Cassandara-Dienste

    sudo su -
    systemctl stop datastax-agent
    systemctl stop opscenterd
    systemctl stop app-dse
    
  2. Nehmen Sie ein Backup und ändern Sie den Port von 9042 auf 9035

    cp /opt/dse/resources/cassandra/conf/cassandra.yaml /opt/dse/resources/cassandra/conf/bkp_cassandra.yaml
    Vi /opt/dse/resources/cassandra/conf/cassandra.yaml
    native_transport_port: 9035
    
  3. Starten Sie die Cassandra-Dienste

    systemctl start datastax-agent
    systemctl start opscenterd
    systemctl start app-dse
    
  4. Erstellen Sie eine cqlshrc-Datei.

    vi  /root/.cassandra/cqlshrc
    
    [connection]
    hostname = 198.168.1.100
    port = 9035
    

Danke, Mahesh

Mahesh Agrawal
quelle