拉取镜像
docker pull emqx/emqx:latest
创建虚拟网络
# -d 参数默认为bridge,可省略
docker network create -d bridge --subnet=172.18.0.0/16 emqx_bridge
创建Docker容器
#节点1
docker run -d --name emqx01 --hostname emqx01 \
--network emqx_bridge --ip 172.18.0.2 \
-v /home/data/emqx01/data:/opt/emqx/data \
-v /home/data/emqx01/etc:/opt/emqx/etc \
-v /home/data/emqx01/log:/opt/emqx/log \
-p 60000:1883 \
-p 9081:8081 \
-p 9083:8083 \
-p 9084:8084 \
-p 8883:8883 \
-p 19083:18083 \
emqx/emqx:5.4.0
#节点2
docker run -d --name emqx02 --hostname emqx02 \
--network emqx_bridge --ip 172.18.0.3 \
-v /home/data/emqx02/data:/opt/emqx/data \
-v /home/data/emqx02/etc:/opt/emqx/etc \
-v /home/data/emqx02/log:/opt/emqx/log \
-p 60001:1883 \
-p 60004:8081 \
-p 60007:8083 \
-p 60010:8084 \
-p 60013:8883 \
-p 60016:18083 \
emqx/emqx:5.4.0
#节点3
docker run -d --name emqx03 --hostname emqx03 \
--network emqx_bridge --ip 172.18.0.4 \
-v /home/data/emqx03/data:/opt/emqx/data \
-v /home/data/emqx03/etc:/opt/emqx/etc \
-v /home/data/emqx03/log:/opt/emqx/log \
-p 60002:1883 \
-p 60005:8081 \
-p 60008:8083 \
-p 60011:8084 \
-p 60014:8883 \
-p 60017:18083 \
emqx/emqx:5.4.0
配置集群归属
# 第一步:进入容器
# 第二步:进入 opt/emqx/bin/目录,执行emqx_ctl cluster命令
# 第三步:退出
# 将节点2加入到节点1的集群中
docker exec -it emqx02 sh
bin/emqx_ctl cluster join emqx01@172.18.0.2
exit
# 将节点3加入到节点1的集群中
docker exec -it emqx03 sh
bin/emqx_ctl cluster join emqx01@172.18.0.2
exit
查看集群状态
bin/emqx_ctl cluster status
如果加入成功,则会提示:
负载均衡
拉取镜像
Docker pull nginx
启动项目
docker run --name nginx -p 80:80 -d nginx
本地映射配置文件
mkdir -p /data/nginx
mkdir -p /data/nginx/www
mkdir -p /data/nginx/conf
mkdir -p /data/nginx/logs
复制配置文件到主机
docker cp 容器id:/etc/nginx/nginx.conf /data/nginx/
docker cp 容器id:/etc/nginx/conf.d /data/nginx/conf/
docker cp 容器id:/usr/share/nginx/html/ /data/nginx/www/
docker cp 容器id:/var/log/nginx/ /data/nginx/logs/
移除之前的服务
docker stop 容器id
docker rm 容器id
配置文件编辑
/data/nginx/conf/default.conf此处文件配置不变
/data/nginx/nginx.conf 配置文件进行修改
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
stream{
upstream emqxTcp {
server 192.168.100.29:60001 weight=1;
server 192.168.100.29:60002 weight=1;
server 192.168.100.29:60003 weight=1;
}
server {
listen 1883;
proxy_pass emqxTcp;
}
}
启动文件
docker run --name nginx -p 80:80 -p 1883:1883 --network emqx_bridge --ip 172.18.0.6 -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/www/:/usr/share/nginx/html/ -v /data/nginx/logs/:/var/log/nginx/ -v /data/nginx/conf/:/etc/nginx/conf.d --privileged=true -d nginx
小知识点:
1、登录 EMQX 管理控制台,点击左侧 的Plugins菜单,启用emqx_auth_username插件,可进行MQTT用户名、密码的设置。