ตั้งแตก 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
[gist id="802a0bb6faf9c2bb5fe867ad46a65431" file="server-01.properties"]เมื่อสร้าง config ของแต่ละ node เรียบร้อยแล้ว ทำการสร้าง cluster
จากนั้นก็ทำการ add node เข้า cluster ต่อไป ดังนี้
[gist id="802a0bb6faf9c2bb5fe867ad46a65431" file="2.txt"]และ start server ของแต่ละ node ขึ้นมา
[gist id="802a0bb6faf9c2bb5fe867ad46a65431" file="3.txt"]จากนั้นก็ทำการสร้าง Topic และดูรายละเอียดได้แล้ว
- topic ชื่อว่า kraft-test
- partition = 3
- replication factor = 3
สุดท้ายก็ลองสร้าง message เข้า topic ทั้งฝั่ง producer และ consumer
เท่าที่ก็เรียบร้อยแล้วสำหรับการลองใช้งาน KRaft ใน Apache Kafka
เน้นย้ำว่ายังเป็น experiment อยู่นะ
ไม่แนะนำให้ขึ้น production
แต่ทำความรู้จักไว้ก่อน เพราะว่ามันคือสิ่งที่มาแน่ ๆ นั่นเอง