首页 > 系统相关 >Docker+Emqx+Nginx集群及负载均衡的搭建 MQTT服务器

Docker+Emqx+Nginx集群及负载均衡的搭建 MQTT服务器

时间:2023-07-06 14:23:28浏览次数:45  
标签:容器 nginx -- ip Nginx MQTT Emqx emqx docker

Docker+Emqx+Nginx集群及负载均衡的搭建 MQTT服务器

1.拉取镜像

docker pull emqx/emqx

2.创建虚拟网络

# -d 参数默认为bridge,可省略
docker network create -d bridge --subnet=172.18.0.0/16 emqx_bridge

3.创建Docker容器

#节点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 emqx/emqx

#节点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 emqx/emqx
 
#节点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 emqx/emqx

4.修改配置

1.将每一个节点的emqx.conf文件都修改

cd /opt/emqx/etc
vi emqx.conf

大概在第10行  cluster.name = emqxcl   # 集群名称

大概第33行 	  cluster.discovery = manual

大概第187行   node.name = [email protected]  # 节点名称emqx@ip  #记得ip要写节点所在的ip

另外2个节点只有node.name不一样,其他配置一样
emqx02:node.name = [email protected]
emqx03:node.name = [email protected]


这里我使用了docker虚拟网络 并给每一个容器分配了ip所以写172.18.0.2,如果是在不同服务器上的节点,请写所在服务器的ip地址

5.加入集群(一定要先完成上面的配置)

分别进入emqx02和emqx03 两个容器中执行

cd /opt/emqx/etc

emqx_ctl cluster join [email protected]

最后在任一容器中查看集群

./bin/emqx_ctl cluster status

结果如下,说明配置成功
也可以进去web页面查看 (ip改为自己的ip)
http://ip:60017
http://ip:60018
http://ip:60019都可以查看

我们可以访问3个容器的web管理页面,默认18083是web端口,因为容器做了映射所以要访问60017,60018,60019

6.Nginx负载均衡

1.拉取镜像

docker pull nginx

2.启动容器

docker run --name nginx -p 80:80 -d nginx

3.本地映射配置文件

mkdir -p /data/nginx
 
mkdir -p /data/nginx/www
 
mkdir -p /data/nginx/conf
 
mkdir -p /data/nginx/logs

4.复制配置文件到主机

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/

5.移除nginx容器

docker stop 容器id    
docker rm  容器id

6.配置文件编辑

/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 ip:60001 weight=1;  # 其中的ip为宿主机的ip地址  60001为容器中1883端口在宿主机上的映射端口
        server ip:60002 weight=1;
        server ip:60003 weight=1;
    }
    server {
        listen 1883;
        proxy_pass emqxTcp;
    }
}


'''
	这里需要注意nginx需要安装  stream模块,不然会报错
'''

标签:容器,nginx,--,ip,Nginx,MQTT,Emqx,emqx,docker
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/17532010.html

相关文章

  • 前端打包的dist文件 怎么用nginx 在 Windows 部署
    ​  要在Windows上使用Nginx部署前端打包的dist文件,您可以按照以下步骤进行操作:下载Nginx:首先,您需要从Nginx官方网站(https://nginx.org/)下载适用于Windows的Nginx安装程序,并将其安装到您的计算机上。配置Nginx:安装完成后,在Nginx的安装目录中找到nginx.......
  • 前端打包的dist文件 怎么用nginx 在 Windows 部署
    ​  要在Windows上使用Nginx部署前端打包的dist文件,您可以按照以下步骤进行操作:下载Nginx:首先,您需要从Nginx官方网站(https://nginx.org/)下载适用于Windows的Nginx安装程序,并将其安装到您的计算机上。配置Nginx:安装完成后,在Nginx的安装目录中找到nginx.......
  • thinkphp6 nginx配置
    server{listen88;server_namelocalhost;root/www/tp/public;indexindex.phpindex.htmlindex.htm;charsetutf-8;location/{if(!-e$request_filename){rewrite^/index.php(.*)$/index.php?=s......
  • nginx的https配置
    #usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events{worker_connections1024;}http{includemime.types;default_typeappl......
  • Nginx+Uwsgi+Django+Mysql部署项目
    第一章、准备工作第1节、创建项目目录准备好项目代码,将代码上传至myprojectmkdirmyproject第2节、安装python3cd/usr/local/mkdirPythonwgethttps://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgztar-zxvfPython-3.8.0.tgzmkdir/usr/local/Python/py3_p......
  • MQTTnet 创建基于 WebSocket 的 Mqtt 服务器
    MQTTnet.Exceptions.MqttProtocolViolationException:Expectedatleast21540bytesbutthereareonly71bytes使用了错误的协议,mqtt有tcp和ws两种连接协议ws://使用1883端口就能正常连接 ......
  • Nginx学习笔记-部署静态页面实践
    目录准备一个静态登录页面demoHTML静态页面-index.htmlCSS样式文件-index.cssNginx配置文件-nginx.conf启动Nginx样例展示准备一个静态登录页面demo需要将下面的两个文件index.html和index.css放到nginx安装目录下html目录中HTML静态页面-index.html<!DOCTYPEhtml><htmll......
  • Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、防盗链、SSL、性能优化
    Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、防盗链、SSL、性能优化...架构营 2023-07-0307:10 发表于上海收录于合集#nginx2个#架构172个#web2个引言一、性能怪兽-Nginx概念深入浅出二、Nginx环境搭建三、Nginx反向代理-负载均衡......
  • nginx理解
    1.每个server块都相当于一个虚拟主机(解析站点),包含多个location(处理请求、配置)server{listen80;//监听端口server_namek2.comkh.com;//站点域名indexindex.phpindex.htmlindex.htmdefault.phpdefault.htmdefault.html;//默认访问文件root/www......
  • nginx 错误页 指向 自定义页面
    1、安装简易版nginx可参考:https://www.cnblogs.com/fanyann/p/17500960.html以下所有操作均给予上面安装链接的系统版本和软件版本。2、首先,创建你自己的HTML错误页面,例如error.html。3、找到你的nginx.conf,它可能在/usr/local/nginx/conf,/etc/nginx,/usr/local/etc/nginx......