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(目前採用的輪詢策略)