ตั้งแตก Apache Kafka 2.8 นั้นมี configuration ของ KRaft มาให้
ช่วยทำให้เราสามารถติดตั้ง cluster ของ Apache Kafka โดยไม่มี Zookeeper ได้
แต่ยังไม่แนะนำสำหรับบน production นะ

ในวันว่าง ๆ มาลองติดตั้งเล่นกันหน่อย
เพื่อทำความรู้จักในเบื้องต้น

เริ่มด้วยการ Download Apache Kafka มาก่อน

โดยใช้ version 3.10
ต้องการสร้าง node ใน cluster จำนวน 3 node ดังนี้

จากนั้นทำการ config ที่ไฟล์ /config/kraft/server.properties

เพื่อเปิดใช้งาน KRaft
ในตัวอย่างจะสร้างขึ้นมา 3 ไฟล์ แยกเป็นแต่ละ nodeใน cluster นั่นเอง ดังนี้

  • server-01.properties
  • server-02.properties
  • server-03.properties

สิ่งที่ configเพิ่มสำหรับเปิดใช้งาน KRaft นั้น ประกอบไปด้วย

  • node.id กำหนดเป็น 1, 2, 3 ตามลำดับไปเลย คือ unique ของแต่ละ node ใน cluster นั่นเอง ซ้ำกันไม่ได้
  • process.roles โดยที่แต่ละ node สามารถมี role ได้ทั้ง broker หรือ controller ของ KRaft อยู่ที่ความต้องการ จากตัวอย่างจะกำหนดให้ทุก node เป็นทั้งคู่เลย แต่ถ้าไม่กำหนดจะเป็น zookeeper เช่นเดิม
  • กำหนดค่าให้แต่ละ broker และ controller คุยกันผ่าน inter.broker.listener.name และ controller.listener.names
  • กำหนด port ของ broker และ controller ของทั้ง 3 node โดยที่ port default ของ broker=9092 และ controller=19092 ด้วยการกำหนดค่าของ listeners
  • กำหนด path ในการเก็บ log ผ่าน log.dirs
  • กำหนด connection security ผ่าน listener.security.protocol.map
  • กำหนด controller ทั้งหมดใน cluster ผ่าน controller.quorum.voters

จะกำหนดเยอะไปไหนนะ ?

ตัวอย่างของ server-01.properties สำหรับ node ที่ 1

เมื่อสร้าง config ของแต่ละ node เรียบร้อยแล้ว ทำการสร้าง cluster

จากนั้นก็ทำการ add node เข้า cluster ต่อไป ดังนี้

และ start server ของแต่ละ node ขึ้นมา

จากนั้นก็ทำการสร้าง Topic และดูรายละเอียดได้แล้ว

  • topic ชื่อว่า kraft-test
  • partition = 3
  • replication factor = 3

สุดท้ายก็ลองสร้าง message เข้า topic ทั้งฝั่ง producer และ consumer

เท่าที่ก็เรียบร้อยแล้วสำหรับการลองใช้งาน KRaft ใน Apache Kafka
เน้นย้ำว่ายังเป็น experiment อยู่นะ
ไม่แนะนำให้ขึ้น production
แต่ทำความรู้จักไว้ก่อน เพราะว่ามันคือสิ่งที่มาแน่ ๆ นั่นเอง