استقرار MQTT Broker مناسب خوشه با Docker
Summarize this content to 400 words in Persian Lang
در این پست، استقرار docker را برای یک کارگزار MQTT نشان می دهم که از افزودن چندین نمونه پشتیبانی می کند.
در پست قبلی، یک Dockerfile ساده برای استقرار بروکر Eclipse Mosquitto MQTT را نشان دادم. در حالی که میتوان Mosquitto را به گونهای پیکربندی کرد که در یک خوشه کار کند، راهحلهای دیگری نیز وجود دارد که اجرای آنها سادهتر است.
ما از EMQX، یک کارگزار MQTT منبع باز با قابلیت خوشه بندی داخلی استفاده خواهیم کرد و به خوبی در محیط Kubernetes کار می کند.
فایل docker-compose در زیر نشان داده شده است:
version: ‘3’
services:
emqx1:
image: emqx:5.8.0
container_name: emqx1
hostname: emqx1
environment:
– “EMQX_NODE_NAME=emqx@172.20.0.2”
– “EMQX_CLUSTER__DISCOVERY_STRATEGY=static”
– “EMQX_CLUSTER__STATIC__SEEDS=[emqx@172.20.0.2]”
healthcheck:
test: [“CMD”, “/opt/emqx/bin/emqx”, “ctl”, “status”]
interval: 5s
timeout: 25s
retries: 5
networks:
emqx-bridge:
aliases:
– emqx1
ports:
– 1883:1883
– 8083:8083
– 8084:8084
– 8883:8883
– 18083:18083
networks:
emqx-bridge:
driver: bridge
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این تصویر رسمی emqx را می کشد، تنظیمات اولیه را برای نمونه پیکربندی می کند و پورت های لازم را در معرض دید قرار می دهد. همچنین میتوانید ببینید که تنظیمات و شبکهای را تنظیم میکند که در صورت اضافه شدن نمونههای بیشتری در یک خوشه استفاده میشود.
برای شروع کارگزار، به سادگی اجرا کنید:
docker-compose up -d
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
می توانید وضعیت را با استفاده از:
docker exec -it emqx1 sh -c “emqx ctl cluster status”
Cluster status: #{running_nodes => [’emqx@172.20.0.2′],stopped_nodes => []}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این کمی با تنظیمات نشان داده شده در اسناد emqx متفاوت است. ما مجبور شدیم یک نام میزبان اضافه کنیم و از ip کانتینر داخلی برای نام گره استفاده کنیم.
فایل کامل docker-compose را می توان در این مخزن یافت.
مطمئن نیستیم که چرا باید نام گره را برای دریافت وضعیت خوشه تغییر دهیم. اگر دلیل آن را می دانید، لطفاً یک نظر در زیر اضافه کنید. چه چیز دیگری را تغییر می دهید؟
با تشکر
در این پست، استقرار docker را برای یک کارگزار MQTT نشان می دهم که از افزودن چندین نمونه پشتیبانی می کند.
در پست قبلی، یک Dockerfile ساده برای استقرار بروکر Eclipse Mosquitto MQTT را نشان دادم. در حالی که میتوان Mosquitto را به گونهای پیکربندی کرد که در یک خوشه کار کند، راهحلهای دیگری نیز وجود دارد که اجرای آنها سادهتر است.
ما از EMQX، یک کارگزار MQTT منبع باز با قابلیت خوشه بندی داخلی استفاده خواهیم کرد و به خوبی در محیط Kubernetes کار می کند.
فایل docker-compose در زیر نشان داده شده است:
version: '3'
services:
emqx1:
image: emqx:5.8.0
container_name: emqx1
hostname: emqx1
environment:
- "EMQX_NODE_NAME=emqx@172.20.0.2"
- "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
- "EMQX_CLUSTER__STATIC__SEEDS=[emqx@172.20.0.2]"
healthcheck:
test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
interval: 5s
timeout: 25s
retries: 5
networks:
emqx-bridge:
aliases:
- emqx1
ports:
- 1883:1883
- 8083:8083
- 8084:8084
- 8883:8883
- 18083:18083
networks:
emqx-bridge:
driver: bridge
این تصویر رسمی emqx را می کشد، تنظیمات اولیه را برای نمونه پیکربندی می کند و پورت های لازم را در معرض دید قرار می دهد. همچنین میتوانید ببینید که تنظیمات و شبکهای را تنظیم میکند که در صورت اضافه شدن نمونههای بیشتری در یک خوشه استفاده میشود.
برای شروع کارگزار، به سادگی اجرا کنید:
docker-compose up -d
می توانید وضعیت را با استفاده از:
docker exec -it emqx1 sh -c "emqx ctl cluster status"
Cluster status: #{running_nodes => ['emqx@172.20.0.2'],stopped_nodes => []}
این کمی با تنظیمات نشان داده شده در اسناد emqx متفاوت است. ما مجبور شدیم یک نام میزبان اضافه کنیم و از ip کانتینر داخلی برای نام گره استفاده کنیم.
فایل کامل docker-compose را می توان در این مخزن یافت.
مطمئن نیستیم که چرا باید نام گره را برای دریافت وضعیت خوشه تغییر دهیم. اگر دلیل آن را می دانید، لطفاً یک نظر در زیر اضافه کنید. چه چیز دیگری را تغییر می دهید؟
با تشکر