Appearance
Docker 部署
- FreeMQTT Plus 只提供Linux下的 Docker 镜像部署方式
- 我们还提供 FreeMQTT Plus 部署 stack YAML file 文件
使用 Docker Swarm Ingress 负载平衡情形
docker-swarm-compose.yml
yaml
#version: '3'
networks:
swarm_net:
driver: overlay
configs:
# freemqtt plus configs
freemqtt_conf:
external: true
freemqtt_license:
external: true
# nginx service configs
nginx_conf:
external: true
freemqtt_cert:
external: true
freemqtt_key:
external: true
#volumes:
# freemqtt_log_v:
services:
# A-node
anode:
image: registry.freemqtt.cn/freemqttplus:v260519
hostname: "{{.Service.Name}}-{{.Task.Slot}}"
ulimits:
nofile:
soft: 65535
hard: 65535
deploy:
replicas: 3
configs:
- source: freemqtt_conf
target: /freemqttd/conf.d/config.toml
- source: freemqtt_license
target: /freemqttd/conf.d/license.toml
- source: freemqtt_cert
target: /freemqttd/ssl/freemqtt.crt
- source: freemqtt_key
target: /freemqttd/ssl/freemqtt.key
command: ["--type=A", "--nodeid=A"]
networks:
- swarm_net
environment:
- MY_PEER_ID={{.Task.Slot}}
- MY_HOSTNAME={{.Service.Name}}-{{.Task.Slot}}
volumes:
- "/etc/localtime:/etc/localtime:ro"
ports:
- target: 1883
published: 1883
protocol: tcp
- target: 8883
published: 8883
protocol: tcp
- target: 80
published: 8080
protocol: tcp
- target: 443
published: 8443
protocol: tcp
# B-node
bnode:
image: registry.freemqtt.cn/freemqttplus:v260519
hostname: "{{.Service.Name}}-{{.Task.Slot}}"
deploy:
replicas: 2
configs:
- source: freemqtt_conf
target: /freemqttd/conf.d/config.toml
- source: freemqtt_license
target: /freemqttd/conf.d/license.toml
environment:
- MY_PEER_ID={{.Task.Slot}}
- MY_HOSTNAME={{.Service.Name}}-{{.Task.Slot}}
command: ["--type=B", "--nodeid=B"]
volumes:
- "/etc/localtime:/etc/localtime:ro"
networks:
- swarm_net
depends_on:
- anode使用 NGINX 负载平衡情形
docker-swarm-compose-with-nginx.yml
yaml
#version: '3'
networks:
swarm_net:
driver: overlay
configs:
# freemqtt plus configs
freemqtt_conf2:
external: true
freemqtt_license:
external: true
# nginx service configs
nginx_conf:
external: true
freemqtt_cert:
external: true
freemqtt_key:
external: true
#volumes:
# freemqtt_log_v:
services:
# A-node
anode:
image: registry.freemqtt.cn/freemqttplus:v260519
hostname: "{{.Service.Name}}-{{.Task.Slot}}"
ulimits:
nofile:
soft: 65535
hard: 65535
deploy:
replicas: 3
configs:
- source: freemqtt_conf2
target: /freemqttd/conf.d/config.toml
- source: freemqtt_license
target: /freemqttd/conf.d/license.toml
- source: freemqtt_cert
target: /freemqttd/ssl/freemqtt.crt
- source: freemqtt_key
target: /freemqttd/ssl/freemqtt.key
command: ["--type=A", "--nodeid=A"]
networks:
- swarm_net
environment:
- MY_PEER_ID={{.Task.Slot}}
- MY_HOSTNAME={{.Service.Name}}-{{.Task.Slot}}
volumes:
- "/etc/localtime:/etc/localtime:ro"
# B-node
bnode:
image: registry.freemqtt.cn/freemqttplus:v260519
hostname: "{{.Service.Name}}-{{.Task.Slot}}"
deploy:
replicas: 2
configs:
- source: freemqtt_conf2
target: /freemqttd/conf.d/config.toml
- source: freemqtt_license
target: /freemqttd/conf.d/license.toml
environment:
- MY_PEER_ID={{.Task.Slot}}
- MY_HOSTNAME={{.Service.Name}}-{{.Task.Slot}}
command: ["--type=B", "--nodeid=B"]
volumes:
- "/etc/localtime:/etc/localtime:ro"
networks:
- swarm_net
depends_on:
- anode
nginx:
image: nginx:latest
hostname: "{{.Service.Name}}-{{.Task.Slot}}"
ulimits:
nofile:
soft: 65535
hard: 65535
deploy:
replicas: 1
configs:
- source: nginx_conf
target: /etc/nginx/nginx.conf
- source: freemqtt_cert
target: /etc/nginx/ssl/freemqtt.crt
- source: freemqtt_key
target: /etc/nginx/ssl/freemqtt.key
volumes:
- "/etc/localtime:/etc/localtime:ro"
ports:
- target: 1883
published: 1883
protocol: tcp
mode: host
- target: 8883
published: 8883
protocol: tcp
mode: host
- target: 8443
published: 8443
protocol: tcp
mode: host
networks:
- swarm_net
depends_on:
- bnode