一、三台机器安装
1、三台都拉取镜像
docker pull emqx/emqx:5.0.26
2、三台分别运行镜像
第一台
docker run -itd --network host --name emqx --restart always \
-p 1883:1883 \
-p 18083:18083 \
-p 8083:8083 \
-p 8883:8883 \
-p 8080:8080 \
-e EMQX_NAME="master1" \
-e EMQX_HOST=localhost1 \
-e EMQX_LISTENER__TCP_EXTERNAL=1883 \
-e EMQX_WAIT_TIME=30 \
-e EMQX_CLUSTER__DISCOVERY="static" \
-e EMQX_JOIN_CLUSTER="master1@localhost1" \
-e EMQX_CLUSTER__STATIC__SEEDS="master1@localhost1,master2@localhost2,master3@localhost3" \
emqx/emqx:5.0.26
第二台
docker run -itd --network host --name emqx --restart always \
-p 1883:1883 \
-p 18083:18083 \
-p 8083:8083 \
-p 8883:8883 \
-p 8080:8080 \
-e EMQX_NAME="master2" \
-e EMQX_HOST=localhost2 \
-e EMQX_LISTENER__TCP_EXTERNAL=1883 \
-e EMQX_WAIT_TIME=30 \
-e EMQX_CLUSTER__DISCOVERY="static" \
-e EMQX_JOIN_CLUSTER="master2@localhost2" \
-e EMQX_CLUSTER__STATIC__SEEDS="master1@localhost1,master2@localhost2,master3@localhost3" \
emqx/emqx:5.0.26
第三台
docker run -itd --network host --name emqx --restart always \
-p 1883:1883 \
-p 18083:18083 \
-p 8083:8083 \
-p 8883:8883 \
-p 8080:8080 \
-e EMQX_NAME="master3" \
-e EMQX_HOST=localhost3 \
-e EMQX_LISTENER__TCP_EXTERNAL=1883 \
-e EMQX_WAIT_TIME=30 \
-e EMQX_CLUSTER__DISCOVERY="static" \
-e EMQX_JOIN_CLUSTER="master3@localhost3" \
-e EMQX_CLUSTER__STATIC__SEEDS="master1@localhost1,master2@localhost2,master3@localhost3" \
emqx/emqx:5.0.26
3、如何就行集群加入,选择一台主节点,对其余两个从节点执行如下:(注意:坚决不能在主节点上执行此命令)
这里面我选择localhost1作为主节点
docker exec -it emqx sh
bin/emqx_ctl cluster join master1@localhost1
4、登录皆可以了
二、做nginx TCP转发
1、首先在安装nginx 的时候,添加straem模块
./configure --with-stream
2、修改/usr/local/nginx/nginx.conf文件,与http同级新增如下
stream {
upstream emqx_tcp {
server localhost1:1883 weight=1;
server localhost2:1883 weight=1;
server localhost3:1883 weight=1;
}
server {
listen 1886;
proxy_pass emqx_tcp;
proxy_buffer_size 8k;
tcp_nodelay on;
}
}