in How-to

มาเล่น High Availability MQTT Cluster ด้วย Docker Compose กัน

ครั้งที่แล้วแนะนำ High Availability MQTT Cluster แบบ Back to Basic ไว้เนื่องจากจะได้เข้าใจว่าหลักการเป็นอย่างไร ได้ลองติดตั้ง Ponte ตั้งค่า HA Proxy ฯลฯ ครั้งนี้เราจะใช้ Docker Compose ในการสร้าง Container ในส่วน MQTT Broker, HAProxy และ MongoDB สั่งงานครั้งเดียวจบ ตัวอย่างนี้เหมาะสำหรับศึกษาเท่านั้น หากต้องการเอาไปใช้งานควรแยก data volume ของ mongodb ออกมาด้วยครับ

จากภาพเดิมเราจะใช้ Docker Compose สร้าง Container ทั้งหมดขึ้นมาซึ่งประกอบไปด้วย

  • HA Proxy
  • MQTT Broker 1
  • MQTT Broker 2
  • MongoDB

หลักการคือเราใช้ Docker Compose ในการทำ Orchestration Container ทั้งหมดรวมไปถึงการ link ของ Container ด้วย ในส่วน HAProxy ตั้งค่าเอาไว้ 2 Container ตายตัว หากมีการ scale MQTT Broker ออกไปจะต้อง reconfig HAProxy ใหม่ วิธีการครั้งนี้ยังไม่แนะนำครับ เอาแบบเข้าใจง่ายๆ ไว้ก่อน มาลงมือกันเลย

สั่ง clone repo ponte-docker มาดังนี้

git clone https://github.com/anoochit/ponte-docker.git

cd ponte-docker

จากนั้นสั่งงานได้เลย

docker-compose up -d

docker-compose ps

คุณจะพบว่า HAProxy, MQTT Broker และ MongoDB จะเริ่มทำงาน ให้เปิด browser เพื่อดู stat ของ HAProxy จะได้ดังนี้

ลอง Publish ดู

for i in {1..100}; do mosquitto_pub -r -h 128.199.168.243 -t hello -m "hello world-"$i ; done

เปิดอีก terminal ลอง Subscribe ดู

mosquitto_sub -h 128.199.168.243 -t hello

สำหรับการใช้งานผ่าน REST API ก็สั่งผ่าน port 3000 ได้เลย