Docker 搭建EMQX集群
端口映射
4369->
5369->
6369->
1883->60001,60002,60003
8083->60004,60005,60006
8084->60006,60008,60009
8883->60010,60011,60012
11883->60013,60014,60015
18083->60016,60017,60018
Cluster
下载镜像
sudo docker pull emqx/emqx:v4.0.5
创建虚拟网络
sudo docker network create -d bridge --subnet=172.18.0.0/16 emqx_bridge
启动3个容器
sudo docker run -d --hostname emqx01 --name emqx01 --network emqx_bridge --ip 172.18.0.2 -p 60002:1883 -p 60005:8083 -p 60011:8883 -p 60008:8084 -p 60017:18083 -p 60014:11883 -v /etc/localtime:/etc/localtime:ro emqx/emqx:v4.0.5
sudo docker run -d --hostname emqx02 --name emqx02 --network emqx_bridge --ip 172.18.0.3 -p 60002:1883 -p 60005:8083 -p 60011:8883 -p 60008:8084 -p 60017:18083 -p 60014:11883 -v /etc/localtime:/etc/localtime:ro emqx/emqx:v4.0.5
sudo docker run -d --hostname emqx03 --name emqx03 --network emqx_bridge --ip 172.18.0.4 -p 60003:1883 -p 60006:8083 -p 60012:8883 -p 60009:8084 -p 60018:18083 -p 60015:11883 -v /etc/localtime:/etc/localtime:ro emqx/emqx:v4.0.5
创建集群
sudo docker exec -it emqx02 sh
bin/emqx_ctl cluster join [email protected]
exit
sudo docker exec -it emqx03 sh
bin/emqx_ctl cluster join [email protected]
bin/emqx_ctl cluster status
exit
Nginx代理在适当位置加入下面配置
stream{
# emqx tcp
upstream emqxTcp {
#hash $remote_addr consistent;
server xxx.com.cn:60001 max_fails=3 fail_timeout=30s;
server xxx.com.cn:60002 max_fails=3 fail_timeout=30s;
server xxx.com.cn:60003 max_fails=3 fail_timeout=30s;
}
# emqx tcp server
server {
listen 1883;
#proxy_timeout 180s;
proxy_pass emqxTcp;
}
}
http {
upstream emqxManage {
server xxx.com.cn:60016;
server xxx.com.cn:60017;
server xxx.com.cn:60018;
}
server {
listen 18083;
server_name xxx.com.cn;
location / {
proxy_pass http://emqxManage;
index index.html index.htm;
}
}
}
访问测试 http://xxx.com.cn:18083