1. 程式人生 > 其它 >docker+Emqx+nginx叢集搭建

docker+Emqx+nginx叢集搭建

拉取映象

docker pull emqx/emqx;

建立虛擬網路

docker network create -d bridge --subnet=172.18.0.0/16 emqx_bridge

啟動服務

節點1

docker run -d --hostname emqx01 --name emqx01 --network emqx_bridge --ip 172.18.0.2 -p 60001:1883 -p 60004:8083 -p 60007:8883 -p 60010:8084 -p 60017:18083 -p 60013:11883 -v /etc/localtime:/etc/localtime:ro emqx/emqx:latest;

節點2

docker run -d --hostname emqx02 --name emqx02 --network emqx_bridge --ip 172.18.0.3 -p 60002:1883 -p 60005:8083 -p 60008:8883 -p 60011:8084 -p 60018:18083 -p 60014:11883 -v /etc/localtime:/etc/localtime:ro emqx/emqx:latest;

節點3

docker run -d --hostname  emqx03 --name emqx03 --network emqx_bridge --ip 172.18.0.4 -p 60003:1883 -p 60006:8083 -p 60009:8883 -p 60012:8084 -p 60019:18083 -p 60015:11883 -v /etc/localtime:/etc/localtime:ro emqx/emqx:latest

    

    

    

    

配置叢集歸屬

節點2

docker exec -it emqx02 sh

bin/emqx_ctl  cluster join [email protected]

exit

節點3

docker exec -it emqx03 sh

bin/emqx_ctl  cluster join [email protected]

bin/emqx_ctl cluster status

exit

 

 負載均衡

 拉取映象

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/nginx.conf 此處檔案配置不變

/data/nginx/conf/default.conf配置檔案進行修改

upstream stream_backend {

      server 192.168.100.29:60017 max_fails=2 fail_timeout=30s;

      server 192.168.100.29:60018 max_fails=2 fail_timeout=30s;

      server 192.168.100.29:60019 max_fails=2 fail_timeout=30s;

  }

server {

    listen    80;

    server_name   localhost;

    location / {

        proxy_pass  http://stream_backend;

    }

}

啟動檔案

docker run --name nginx -p 80:80  --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

 

頁面展示

 

192.168.100.29:80

Nginx跳轉隨機切換emqx(目前採用的輪詢策略)