CentOS7.9 Nginx + EMQX集群组建 MQTTS平台

前面我们有介绍过单机版EMQX的安装 CentOS7 安装 EMQX(MQTT),今天我们来讲一下实际项目里用的到MQTTS平台。
一、EMQX单机配置
简单部署两个节点,修改对应配置文件 (/usr/local/emqx/etc/emqx.conf) 中的node内容:
name = “emqx@10.12.42.235”
name = “emqx@10.12.42.236”
cookie 值不要改动,在同一个集群里的阶段,cookie 必须一致。
data_dir 是只本机存储数据的路径,默认不要调整,执行 emqx 安装位置的 data目录,如:/usr/local/emqx/data
如果确实要调整,那只要修改主Node阶段对应的 data_dir 目录就可以了。
其它加入此集群的客户机,本地的数据目录会被清空,用于同步复制主 Node 的数据。
其余配置不变。
执行启动命令:

查看单机运行情况:


都已经正常运行。

二、加入EMQX集群
重要的事情说三遍:务必检查端口开放情况!务必检查端口开放情况!务必检查端口开放情况!
端口开放列表如下:MQTT端口:8083;Web控制台端口:18083;集群节点发现端口:4370;集群 RPC 端口:5370
所有节点的系统都需要开发以上端口!!!
当然,如果你关闭了防火墙的话,额,好吧,你不是项目环境页没关系。
当前我们设定的主 Node 为 emqx@10.12.42.235 这台机器。
在 emqx02@10.12.42.236 这台机器上,执行:
emqx_ctl cluster join emqx@10.12.42.235
返回结果:

至此,两台机器的EMQX集群就完成了,登录 Web控制台查看:

任何一个阶段登录到Web控制台,都能看到集群中的所有节点的状态。
同时,所有加入主节点的emqx,本机data中的数据都会被清空,用于同步复制一份主节点中的数据。
之后加入的节点也都是如此,本机原有数据被清除,用于同步已有集群中的数据,所有集群中的数据,都是保持同步的。

注意事项:
1、集群模式的端口策略:ListeningPort = BasePort + Offset 模式。
查看官方最新说明文档如下:

也就是说,如果你的 emqx.conf 配置文件中,node.name 是以数字结尾或者@前面是以数字结尾,如:emqx1、emqx-1、emqx01@10.12.42.235 等,那么对应的集群端口,包括发现端口和RPC端口,都需要增加对应的数字。
emqx01 发现端口和RPC端口分别是:4371 和 5371。
emqx-2 对应的就是:4372 / 5372。
以此类推。
这个在不知情的情况下,还蛮坑的。
我的node.name原来就是 emqx01@xx,让我多折腾了半天,才找到这个问题。
而且 RPC 端口都只有在官方文档里有直接说明,百度上找的,都是之前的版本和文档了,都没有提到,满满都是坑啊!
2、已经加入集群服务,任何节点重启之后还是会自动在集群里面的,不需要再加入。

三、SSL证书生成
如果是内网,请参考:内网IP自签SSL证书
如果是公网,请咨询证书提供商,或者服务器提供商。
提供相关资料就可以了,主要是域名资料,还有就是证书最好是域名通配符证书,可以用到所有的二级域名上,比较方便。

四、Nginx的stream模式配置
前面有篇文章:CentOS7 安装 Nginx,设置自启动及站点配置介绍过Nginx及HTTPS协议的配置。
这边有所不同,主要在于 Stream模式的配置。
在 Nginx 编译的时候,除了HTTPS的参数(–with-http_ssl_module)外,还需要加 stream 模式的参数:–with-stream 和 --with-stream_ssl_module。
合计安装配置参数如下:
./configure --with-stream --with-http_ssl_module --with-stream_ssl_module
安装完成后,配置 nginx 负载均衡如下:

stream {
  # 轮询负载均衡配置
  upstream emqx_cluster {
      server 10.12.42.235:1883 weight=1;
      server 10.12.42.236:1883 weight=1;
  }

  server {
        # 监听 8883 端口
        listen 8883 ssl;
        # 反向代理到 emqx_cluster
        proxy_pass emqx_cluster;
        proxy_buffer_size 4k;
        # 证书配置
        ssl_certificate /usr/local/nginx/cert/server.pem;
        ssl_certificate_key /usr/local/nginx/cert/server.key;

        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_session_cache  shared:SSL:10m;
        ssl_session_timeout  10m;
  }
}


注意:stream配置不能放到http内,也不能放到/etc/nginx/conf.d/,因为stream是通过tcp层转发,而不是http转发。

相关推荐

  1. centos 安装rabbitmq

    2024-03-15 11:14:01       47 阅读
  2. ActiveMQ + MQTT 搭建(docker版本)

    2024-03-15 11:14:01       42 阅读
  3. centos搭建kubernetes步骤

    2024-03-15 11:14:01       46 阅读
  4. OceanBase CentOS7部署

    2024-03-15 11:14:01       61 阅读
  5. Centos搭建Nacos

    2024-03-15 11:14:01       48 阅读
  6. centos7安装redis-cluster

    2024-03-15 11:14:01       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 11:14:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 11:14:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 11:14:01       87 阅读
  4. Python语言-面向对象

    2024-03-15 11:14:01       96 阅读

热门阅读

  1. openGauss 脚本源码浅析(1)—— simpleInstall

    2024-03-15 11:14:01       32 阅读
  2. SpringCloud Stream笔记整理

    2024-03-15 11:14:01       42 阅读
  3. 智障版本GPT3实现

    2024-03-15 11:14:01       45 阅读
  4. 什么是单向数据流

    2024-03-15 11:14:01       38 阅读
  5. 《软件工程》复试问答题总结

    2024-03-15 11:14:01       42 阅读
  6. Github 2024-03-14 开源项目日报 Top10

    2024-03-15 11:14:01       45 阅读
  7. C++核心高级编程

    2024-03-15 11:14:01       41 阅读
  8. C++学习

    C++学习

    2024-03-15 11:14:01      43 阅读