ปรับใช้ Apache Kafka ด้วย Docker Compose

Prab Chi Apache Kafka Dwy Docker Compose



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

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

เรามาเริ่มกันที่พื้นฐานและอภิปรายว่าคาฟคาคืออะไร







Apache Kafka คืออะไร?

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



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



Docker Compose คืออะไร

การเขียน Docker หมายถึงปลั๊กอินหรือเครื่องมือนักเทียบท่าสำหรับกำหนดและเรียกใช้แอปพลิเคชันหลายคอนเทนเนอร์ นักเทียบท่ากำหนดให้เรากำหนดค่าคอนเทนเนอร์ในไฟล์ YAML ไฟล์คอนฟิกูเรชันประกอบด้วยข้อกำหนดเฉพาะของคอนเทนเนอร์ เช่น บริการ เครือข่าย และวอลุ่มที่แอปพลิเคชันต้องการ





การใช้คำสั่ง docker-compose เราสามารถสร้างและเริ่มคอนเทนเนอร์หลายรายการด้วยคำสั่งเดียว

การติดตั้ง Docker และ Docker Compose

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



  • https://linuxhint.com/install_configure_docker_ubuntu/
  • https://linuxhint.com/install-docker-debian/
  • https://linuxhint.com/install_docker_debian_10/
  • https://linuxhint.com/install-docker-ubuntu-22-04/
  • https://linuxhint.com/install-docker-on-pop_os/
  • https://linuxhint.com/how-to-install-docker-desktop-windows/
  • https://linuxhint.com/install-use-docker-centos-8/
  • https://linuxhint.com/install_docker_on_raspbian_os/

ในขณะที่เขียนบทช่วยสอนนี้ การติดตั้งการเขียน docker จำเป็นต้องติดตั้งเดสก์ท็อป Docker บนเครื่องเป้าหมายของคุณ ดังนั้น การติดตั้ง docker ที่เขียนเป็นหน่วยแบบสแตนด์อโลนจึงเลิกใช้แล้ว

เมื่อเราติดตั้ง Docker แล้ว เราสามารถกำหนดค่าไฟล์ YAML ได้ ไฟล์นี้มีรายละเอียดทั้งหมดที่เราต้องใช้ในการสร้างคลัสเตอร์ Kafka โดยใช้คอนเทนเนอร์นักเทียบท่า

การตั้งค่า Docker-Compose.YAML

สร้าง docker-compose.yaml และแก้ไขด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ:

$ แตะ docker-compose.yaml
$ vim นักเทียบท่า-compose.yaml

ถัดไป เพิ่มไฟล์คอนฟิกูเรชันนักเทียบท่าดังที่แสดงต่อไปนี้:

รุ่น : '3'
บริการ :
ผู้ดูแลสวนสัตว์ :
ภาพ : บิตนามิ / ผู้ดูแลสวนสัตว์ : 3.8
พอร์ต :
- '2181:2181'
ปริมาณ :
- 'zookeeper_data:/บิตนามิ'
สิ่งแวดล้อม :
- ALLOW_ANONYMOUS_LOGIN = ใช่
คาฟคา :
ภาพ : นักเทียบท่า นี้ / บิตนามิ / คาฟคา : 3.3
พอร์ต :
- '9092:9092'
ปริมาณ :
- 'kafka_data:/บิตนามิ'
สิ่งแวดล้อม :
- KAFKA_CFG_ZOOKEEPER_CONNECT = ผู้ดูแลสวนสัตว์ : 2181
- ALLOW_PLAINTEXT_LISTENER = ใช่
ขึ้นอยู่กับ :
- ผู้ดูแลสวนสัตว์
ปริมาณ :
ผู้ดูแลสวนสัตว์_data :
คนขับรถ : ท้องถิ่น
คาฟคา_ดาต้า :
คนขับรถ : ท้องถิ่น

ไฟล์นักเทียบท่าตัวอย่างตั้งค่า Zookeeper และคลัสเตอร์ Kafka ซึ่งคลัสเตอร์ Kafka เชื่อมต่อกับบริการ Zookeeper เพื่อการประสานงาน ไฟล์นี้ยังกำหนดค่าพอร์ตและตัวแปรสภาพแวดล้อมสำหรับแต่ละบริการเพื่อให้สามารถสื่อสารและเข้าถึงบริการได้

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

ให้เราแบ่งไฟล์ก่อนหน้าออกเป็นส่วนง่ายๆ:

เราเริ่มต้นด้วยบริการ Zookeeper โดยใช้อิมเมจ bitnami/zookeeper:3.8 รูปภาพนี้แมปพอร์ต 2181 บนเครื่องโฮสต์กับพอร์ต 2181 บนคอนเทนเนอร์ เรายังตั้งค่าตัวแปรสภาพแวดล้อม ALLOW_ANONYMOUS_LOGIN เป็น 'ใช่' สุดท้าย เราตั้งค่าปริมาณที่บริการเก็บข้อมูลเป็นปริมาณ Zookeeper_data

บล็อกที่สองกำหนดรายละเอียดเพื่อตั้งค่าบริการคาฟคา ในกรณีนี้ เราใช้อิมเมจ docker.io/bitnami/kafka:3.3 ซึ่งแมปพอร์ตโฮสต์ 9092 กับพอร์ตคอนเทนเนอร์ 9092 ในทำนองเดียวกัน เรายังกำหนดตัวแปรสภาพแวดล้อม KAFKA_CFG_ZOOKEEPER_CONNECT และตั้งค่าเป็นแอดเดรสของ Zookeeper ตามที่แมปกับ พอร์ต 2181 ตัวแปรสภาพแวดล้อมตัวที่สองที่เรากำหนดในส่วนนี้คือตัวแปรสภาพแวดล้อม ALLOW_PLAINTEXT_LISTENER การตั้งค่าของตัวแปรสภาพแวดล้อมนี้เป็น 'ใช่' อนุญาตให้รับส่งข้อมูลที่ไม่ปลอดภัยไปยังคลัสเตอร์ Kafka

สุดท้าย เราจัดเตรียมปริมาณที่บริการ Kafka เก็บข้อมูลไว้

เพื่อให้แน่ใจว่านักเทียบท่ากำหนดค่าไดรฟ์ข้อมูลสำหรับ Zookeeper และ Kafka เราจำเป็นต้องกำหนดดังที่แสดงในส่วนไดรฟ์ข้อมูล สิ่งนี้ตั้งค่าไดรฟ์ข้อมูล Zookeeper_data และ kafka_data ไดรฟ์ข้อมูลทั้งสองใช้ไดรเวอร์ในเครื่องซึ่งหมายความว่าข้อมูลถูกเก็บไว้ในเครื่องโฮสต์

คุณมีมัน! ไฟล์คอนฟิกูเรชันอย่างง่ายที่ให้คุณหมุนคอนเทนเนอร์คาฟคาโดยใช้นักเทียบท่าในขั้นตอนง่ายๆ

เรียกใช้คอนเทนเนอร์

เพื่อให้แน่ใจว่านักเทียบท่าทำงานอยู่ เราสามารถเรียกใช้คอนเทนเนอร์จากไฟล์ YAML ด้วยคำสั่งต่อไปนี้:

$ ซูโด นักเทียบท่าเขียนขึ้น

คำสั่งควรค้นหาไฟล์การกำหนดค่า YAML และเรียกใช้คอนเทนเนอร์ด้วยค่าที่ระบุ:

บทสรุป

ตอนนี้คุณได้เรียนรู้วิธีกำหนดค่าและเรียกใช้ Apache Kafka จากไฟล์กำหนดค่า YAML ของนักเทียบท่า