โลโก้ Apache Kafka
อันดับ 63 ใน Top 100 DevOps และ CI/CDApache License 2.0 (โอเพนซอร์ส)

Apache Kafka คืออะไร และวิธีติดตั้งบน Cloud Server

Apache Kafka คือระบบส่งและเก็บสตรีมข้อมูลที่รองรับข้อความปริมาณมหาศาลต่อวินาที ใช้เป็นกระดูกสันหลังในการส่งข้อมูลระหว่างระบบขององค์กรที่มีหลายบริการ

หมวดหมู่
DevOps และ CI/CD
ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
2 vCPU · RAM 4 GB
ไลเซนส์
Apache License 2.0 (โอเพนซอร์ส)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • ISO/IEC 27001
  • ISO 22301
  • ISO 20000-1
  • CSA-STAR

Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย

Apache Kafka คืออะไร

Kafka ทำงานเหมือนสมุดบันทึกเหตุการณ์ที่เขียนต่อท้ายไปเรื่อย ๆ ผู้ผลิตข้อมูลส่งเหตุการณ์เข้ามาเก็บใน Topic และผู้บริโภคหลายรายอ่านไปประมวลผลอิสระจากกัน โดยแต่ละรายจำตำแหน่งที่อ่านถึงของตัวเอง

ข้อได้เปรียบสำคัญคือข้อมูลไม่หายไปหลังถูกอ่าน ต่างจากคิวแบบดั้งเดิม ทำให้ระบบใหม่ที่เพิ่งต่อเข้ามาย้อนอ่านเหตุการณ์เก่าได้ และเมื่อระบบปลายทางล่มก็ตามอ่านต่อได้เมื่อกลับมา

ตั้งแต่รุ่นใหม่ Kafka ใช้โหมด KRaft ที่ไม่ต้องพึ่ง ZooKeeper อีกต่อไป ทำให้ติดตั้งและดูแลง่ายขึ้นมาก เหลือเพียงบริการเดียวที่ต้องจัดการ

แผนผังการวางระบบ Apache Kafka บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 9092, 9093 ตัว Apache Kafka และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 2 vCPU แรม 4 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Apache Kafka ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ Apache Kafka

รองรับปริมาณข้อมูลสูงมาก

ออกแบบมาเพื่อรับข้อความหลักแสนถึงหลักล้านรายการต่อวินาทีบนคลัสเตอร์ที่วางถูกต้อง

เก็บข้อมูลย้อนหลังได้

ตั้งระยะเวลาเก็บข้อมูลใน Topic ทำให้ระบบใหม่ย้อนอ่านเหตุการณ์เก่าได้

ผู้บริโภคหลายรายอิสระจากกัน

หลายระบบอ่านข้อมูลชุดเดียวกันไปใช้คนละวัตถุประสงค์ได้พร้อมกัน

ทนต่อการล่ม

ทำสำเนา Partition ข้ามโหนด เมื่อโหนดหนึ่งล่มระบบยังทำงานต่อได้

เชื่อมกับระบบอื่นได้ง่าย

มี Connector สำเร็จรูปสำหรับฐานข้อมูลและระบบวิเคราะห์จำนวนมาก

ใช้ Apache Kafka ทำอะไรได้บ้าง

  • ส่งข้อมูลเหตุการณ์จากเว็บและแอปไปยังระบบวิเคราะห์แบบเกือบเรียลไทม์
  • เชื่อมระบบภายในองค์กรหลายตัวเข้าด้วยกันโดยไม่ต้องต่อตรงหากันทั้งหมด
  • รวบรวมข้อมูลจากอุปกรณ์ IoT จำนวนมาก
  • บันทึกเหตุการณ์ธุรกรรมเพื่อประมวลผลต่อและตรวจสอบย้อนหลัง

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Apache Kafka 3 ระดับ เริ่มจาก 2 vCPU แรม 4 GB ดิสก์ NVMe 60 GB ไปจนถึง 8 vCPU ขึ้นไปต่อโหนด แรม 32 GB ขึ้นไปต่อโหนด ดิสก์ NVMe 1 TB ขึ้นไปต่อโหนด โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
ทดสอบโหนดเดียวสำหรับเรียนรู้และงานพัฒนา2 vCPU4 GBNVMe 60 GB
แนะนำคลัสเตอร์สามโหนดสำหรับงานจริง4 vCPU ต่อโหนด16 GB ต่อโหนดNVMe 500 GB ต่อโหนด
ปริมาณสูงข้อมูลหลายร้อยกิกะไบต์ต่อวันและเก็บย้อนหลังนาน8 vCPU ขึ้นไปต่อโหนด32 GB ขึ้นไปต่อโหนดNVMe 1 TB ขึ้นไปต่อโหนด

ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ

วิธีติดตั้ง Apache Kafka บน Cloud Server ของ THAI DATA CLOUD

ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server

สิ่งที่ต้องเตรียม

  • Java 17 ขึ้นไป
  • ดิสก์ที่มีพื้นที่มากพอ เพราะ Kafka เก็บข้อมูลตามระยะเวลาที่กำหนด
  • อย่างน้อยสามโหนดสำหรับงาน Production เพื่อให้ทำสำเนาข้อมูลได้

ทดสอบบน Ubuntu Server 24.04 LTS

  1. 1

    ติดตั้ง Java

    sudo apt update
    sudo apt -y install openjdk-21-jre-headless
  2. 2

    ดาวน์โหลดและแตกไฟล์ Kafka

    ตรวจเลขเวอร์ชันล่าสุดจากเว็บทางการก่อนดาวน์โหลด

    cd /opt
    sudo curl -LO https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
    sudo tar -xzf kafka_2.13-3.9.0.tgz
    sudo mv kafka_2.13-3.9.0 kafka
  3. 3

    สร้าง Cluster ID และจัดรูปแบบที่เก็บข้อมูล

    cd /opt/kafka
    KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
    bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
  4. 4

    เริ่มบริการ

    sudo /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
  5. 5

    สร้าง Topic และทดสอบส่งข้อความ

    bin/kafka-topics.sh --create --topic orders --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1
    bin/kafka-console-producer.sh --topic orders --bootstrap-server localhost:9092
    bin/kafka-console-consumer.sh --topic orders --from-beginning --bootstrap-server localhost:9092
  6. 6

    ตั้งเป็นบริการของระบบ

    สร้างไฟล์ systemd unit เพื่อให้ Kafka เริ่มทำงานอัตโนมัติหลังรีบูตและรีสตาร์ตเมื่อล่ม

บนงานจริงควรตั้งอย่างน้อยสามโหนดและกำหนด replication factor เป็น 3 เพื่อไม่ให้ข้อมูลหายเมื่อโหนดหนึ่งเสีย

พอร์ตที่ต้องเปิดบน Firewall

พอร์ตโปรโตคอลใช้ทำอะไร
9092TCPการเชื่อมต่อของ Producer และ Consumer (เปิดเฉพาะวงภายใน)
9093TCPการสื่อสารระหว่างโหนดในโหมด KRaft

สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ

  • ไม่เปิดพอร์ต Kafka สู่อินเทอร์เน็ต ให้ใช้เฉพาะภายใน Private Network
  • เปิด TLS และการยืนยันตัวตนด้วย SASL สำหรับสภาพแวดล้อมที่มีหลายทีมใช้ร่วมกัน
  • กำหนดสิทธิ์การเข้าถึงต่อ Topic ด้วย ACL
  • ตั้งนโยบายเก็บข้อมูลให้เหมาะกับพื้นที่ดิสก์ ไม่เช่นนั้นดิสก์เต็มแล้วคลัสเตอร์หยุดรับข้อมูล
  • เฝ้าระวังพื้นที่ดิสก์และ Lag ของ Consumer ด้วยระบบมอนิเตอร์

ทำไมควรรัน Apache Kafka บน Cloud Server ของ THAI DATA CLOUD

Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง

สร้างคลัสเตอร์สามโหนดบน Cloud Server ในวง Private Network ในไทย ได้ทั้งความเร็วและไม่มีค่าทราฟฟิกภายใน

ขยายดิสก์ได้เมื่อปริมาณข้อมูลโตขึ้น โดยไม่ต้องย้ายคลัสเตอร์

ข้อมูลเหตุการณ์ของลูกค้าอยู่ในประเทศ ตอบโจทย์องค์กรที่มีข้อกำหนดด้าน PDPA

คำถามที่พบบ่อยเกี่ยวกับ Apache Kafka

Kafka ต่างจาก RabbitMQ อย่างไร

RabbitMQ เป็นคิวข้อความแบบดั้งเดิมที่เหมาะกับการกระจายงานให้ผู้ทำงานหลายตัว ส่วน Kafka เป็นบันทึกเหตุการณ์ที่เก็บข้อมูลไว้ให้อ่านซ้ำได้และรองรับปริมาณสูงกว่ามาก ถ้าต้องการคิวงานทั่วไป RabbitMQ ง่ายกว่า ถ้าต้องการสตรีมข้อมูลจำนวนมากและเก็บย้อนหลัง Kafka ตอบโจทย์กว่า

ต้องใช้ ZooKeeper ไหม

ไม่ต้องแล้วสำหรับรุ่นใหม่ที่ใช้โหมด KRaft ซึ่งรวมการจัดการคลัสเตอร์ไว้ในตัว ทำให้จำนวนบริการที่ต้องดูแลลดลงครึ่งหนึ่ง

องค์กรขนาดกลางจำเป็นต้องใช้ Kafka ไหม

ไม่จำเป็นเสมอไป ถ้าปริมาณข้อความไม่สูงและต้องการแค่คิวงาน RabbitMQ หรือ Redis จะเรียบง่ายกว่ามาก Kafka เริ่มคุ้มเมื่อมีหลายระบบต้องการข้อมูลชุดเดียวกัน หรือปริมาณเหตุการณ์สูงจนคิวธรรมดารับไม่ไหว

ให้เราติดตั้ง Apache Kafka ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด