การใช้พอร์ต Cassandra - ใช้พอร์ตอย่างไร?


97

เมื่อทดลองกับ Cassandra ฉันสังเกตเห็นว่า Cassandra ฟังพอร์ตต่อไปนี้:

  • 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

Cassandra ใช้แต่ละพอร์ตในรายการอย่างไร?


13
adamse: ขอบคุณสำหรับเคล็ดลับ! นั่นอาจเป็นเช่นนั้น แต่เพื่อประโยชน์ของผู้ใช้ Cassandra ในอนาคตบน Stackoverflow (จำนวนประชากรที่เพิ่มขึ้น!) ฉันคิดว่ามันเป็นการดีที่จะมีคำตอบเก็บไว้ที่นี่ด้วย :-)
knorv

คำตอบ:


131

@Schildmeijer นั้นถูกต้องเป็นส่วนใหญ่อย่างไรก็ตามยังคงใช้พอร์ต 7001 เมื่อใช้การสื่อสาร TLS Encrypted Internode

ดังนั้นรายการทั้งหมดของฉันจะเป็นของ Cassandra เวอร์ชันปัจจุบัน:

  • 7199 - JMX (จาก 8080 ก่อน Cassandra 0.8.xx)
  • 7000 - การสื่อสารภายในโหนด (ไม่ใช้หากเปิดใช้งาน TLS)
  • 7001 - การสื่อสาร TLS Internode (ใช้หากเปิดใช้งาน TLS)
  • 9160 - API ไคลเอนต์ Thrift
  • 9042 - พอร์ตการขนส่งดั้งเดิม CQL

4
นี่คือลิงค์ล่าสุดของปี 2017 ไปยังเอกสารอย่างเป็นทางการcassandra.apache.org/doc/latest/faq/index.html#what-ports
Johnride

45

สำหรับ Apache Cassandra 2.0 คุณต้องคำนึงถึงพอร์ตTCPต่อไปนี้: (ดูการกำหนดค่ากลุ่มความปลอดภัย EC2และคำถามที่พบบ่อยเกี่ยวกับ Apache Cassandra )

คาสซานดรา

  • พอร์ตการตรวจสอบ7199 JMX
  • 1024 - 65355พอร์ตสุ่มที่ JMX ต้องการ เริ่มต้นด้วย Java 7u4 พอร์ตเฉพาะสามารถระบุได้โดยใช้com.sun.management.jmxremote.rmi.portคุณสมบัติ
  • คลัสเตอร์ระหว่างโหนด7000
  • คลัสเตอร์ระหว่างโหนด7001 SSL
  • 9042 CQL Native Transport Port
  • 9160 Thrift

DataStax OpsCenter

  • 61620 opscenterd daemon
  • 61621ตัวแทน
  • เว็บไซต์8888

สถาปัตยกรรม

สถาปัตยกรรมที่เป็นไปได้ด้วย Cassandra + OpsCenter บน EC2 อาจมีลักษณะดังนี้: AWS EC2 พร้อม OpsCenter


35

8080 - JMX (รีโมท)

8888 - ตัวดีบักระยะไกล (ลบออกใน 0.6.0)

7000 - ใช้ภายในโดย Cassandra
(7001 - ล้าสมัยลบออกใน 0.6.0 ใช้สำหรับการสื่อสารแบบสมาชิกหรือที่เรียกว่าซุบซิบ)

9160 - API ไคลเอนต์ Thrift

คำถามที่พบบ่อยCassandra Cassandra ใช้พอร์ตอะไร?


7

ตอนนี้ JMX ใช้พอร์ต 7199 แทนพอร์ต 8080 (เหมือน Cassandra 0.8.xx)

สิ่งนี้สามารถกำหนดค่าได้ในไฟล์ cassandra-env.sh ของคุณ แต่ค่าเริ่มต้นคือ 7199


5

พอร์ต 57311 และ 57312 เป็นพอร์ตที่กำหนดแบบสุ่มที่ใช้สำหรับการสื่อสาร RMI พอร์ตเหล่านี้จะเปลี่ยนทุกครั้งที่ Cassandra เริ่มทำงาน แต่จำเป็นต้องเปิดในไฟร์วอลล์พร้อมกับ 8080/7199 (ขึ้นอยู่กับเวอร์ชัน) เพื่อให้สามารถเข้าถึง JMX ระยะไกลได้ สิ่งที่ดูเหมือนจะไม่ได้รับการบันทึกไว้เป็นอย่างดีโดยเฉพาะ แต่ทำให้ฉันสะดุดในอดีต


1
สำหรับคนรุ่นหลังความน่ารำคาญนี้ควรได้รับการแก้ไขตั้งแต่ Cassandra 2.0.8 เป็นต้นไปตามตั๋วนี้ ค่าดีฟอลต์cassandra-env.shจะตั้งค่าcom.sun.management.jmxremote.rmi.portคุณสมบัติเป็นค่าเดียวกับพอร์ต JMX หลักเพื่อไม่ให้ใช้พอร์ตแบบสุ่ม
ches

0

นอกเหนือจากคำตอบข้างต้นซึ่งเป็นส่วนหนึ่งของการกำหนดค่าไฟร์วอลล์ของคุณหากคุณใช้ SSH ให้ใช้พอร์ต 22


0

ฉันแก้ไขปัญหาโดยใช้ขั้นตอนด้านล่าง:

  1. หยุดบริการ Cassandara

    sudo su -
    systemctl stop datastax-agent
    systemctl stop opscenterd
    systemctl stop app-dse
    
  2. สำรองข้อมูลและเปลี่ยนพอร์ตจาก 9042 เป็น 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. เริ่มบริการ Cassandra

    systemctl start datastax-agent
    systemctl start opscenterd
    systemctl start app-dse
    
  4. สร้างไฟล์ cqlshrc

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

ขอบคุณ Mahesh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.