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

news2025/3/14 0:05:19

前面我们有介绍过单机版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转发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1518650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言绘制散点密度图ggdentity

使用R语言绘制二维密度图 下图是一张常见的二维核密度散点图,能够清晰直观的反映出数据之间的分布趋势,颜色越红的位置数据越集中分布。今天分享的笔记是在R语言中绘制该图的两种常见方法,提供过程代码。 论文中常见的这种展示两组数据之间分…

八、词嵌入语言模型(Word Embedding)

词嵌入(Word Embedding, WE),任务是把不可计算、非结构化的词转换为可以计算、结构化的向量,从而便于进行数学处理。 一个更官方一点的定义是:词嵌入是是指把一个维数为所有词的数量的高维空间(one-hot形式…

[SaaS] AI试衣间

就刚刚!我在淘宝用AI试了1000件衣服~淘宝AI试衣间,1秒换装,立即解锁不一样的你!https://mp.weixin.qq.com/s/mZiNmepoWddYaLbEaap1Ow

云服务器租用4核16G配置价格表,阿里云和腾讯云费用价格对比

4核16G服务器租用优惠价格26元1个月,腾讯云轻量4核16G12M服务器32元1个月、96元3个月、156元6个月、312元一年,阿腾云atengyun.com分享4核16服务器租用费用价格表,阿里云和腾讯云详细配置报价和性能参数表: 腾讯云4核16G服务器价…

Python读取Excel工作表数据写入CSV、XML、文本

Excel工作簿是常用的表格格式,许多数据呈现、数据分析和数据汇报都是以Excel工作表的形式进行。然而,在实际的数据管理、分析或自动化流程构建过程中,我们常常需要将这些Excel中的数据迁移至更其他数据系统,或者以文本形式存储以便…

qt5-入门-QTableWidget简单使用

参考: C GUI Programming with Qt 4, Second Edition 本地环境: win10专业版,64位,Qt5.12 目录 效果代码头文件源文件可能遇到的问题只显示表头不显示内容 效果 填充一个列表,在列表中点击“颜色”一列,可…

面试经典150题——随机链表的复制

​前两天断更了两天有点事情🤗 1. 题目描述 2. 题目分析与解析 2.1 思路一 开始还是没什么思路,没思路那就先把题目解决不管方法的好坏。如果不考虑复杂度,该怎么解决? 可以有这样的一种思路: 首先复制链表的所有节…

springboot271制造装备物联及生产管理ERP系统

制造装备物联及生产管理ERP系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装制造装备物联及…

C语言例:表达式(a=2,3),a+1的值

题目&#xff1a;设int a; 则表达式(a2,3),a1的值 #include<stdio.h> int main(void) {int a0;int b;int c;b (a2,4);c (a2,3),a1;printf("a1%d\n",a1); //a1 3;printf("a2,4的值为&#xff1a;%d\n",b); //a2,4的值为&…

【1】Python零基础起步

什么是编程(Programming) 编程是编定程序的中文简称&#xff0c;就是让计算机代码解决某个问题&#xff08;目的&#xff09;&#xff0c;对某个计算体系规定一定的运算方式&#xff0c;使计算体系按照该计算方式运行&#xff0c;并最终得到相应结果的过程&#xff08;手段&am…

Window11安装达梦数据库

由于现在流行国产化&#xff0c;很多公司的数据库产品都使用了国产数据库&#xff0c;所以&#xff0c;今天给大家讲解一下&#xff0c;达梦数据库的安装和试用&#xff0c;这样学完以后&#xff0c;就可以直接在公司里面用了。 首先&#xff0c;需要先注册账号&#xff0c;然…

#数据结构 线性表的顺序存储

目录 每日文案 一、线性表的定义 二、线性表的操作 顺序表的存储结构 顺序表的初始化操作 判断顺序表是否为空表 将顺序表置为空表 计算顺序表中的元素个数 取出顺序表中的对应位置元素 取出对应数值的位序 在对应位置插入元素 将对应位置的元素删除 将顺序表中的数据…

视觉系统对透明胶水的检测都有哪些方案?

透明胶水的检测在工业生产中是一个挑战&#xff0c;因为传统的基于RGB相机的视觉系统通常难以检测透明物体。然而&#xff0c;随着技术的发展&#xff0c;现在有多种方法可以有效地检测透明胶水。 1. 高光谱相机&#xff1a;高光谱相机可以提供不同于传统RGB相机的解决方案。例…

为什localhost被forbidden而127.0.0.1不被绊?

原因&#xff1a; 判段网关的时候判127.0.0.1&#xff0c;所以最好改localhost 其他参考&#xff1a; 【计算机网络】localhost不能访问&#xff0c;127.0.0.1可以访问&#xff1f;_ping localhost和ping 127.0.0.1-CSDN博客

【LeetCode每日一题】2312. 卖木头块(DFS记忆化搜索+动态规划)

文章目录 [2312. 卖木头块](https://leetcode.cn/problems/selling-pieces-of-wood/)思路1:用DFS进行记忆化搜索代码&#xff1a;思路2:动态规划代码&#xff1a; 2312. 卖木头块 思路1:用DFS进行记忆化搜索 1.要用DFS深度优先遍历每一种情况。在递归的同时&#xff0c;不断更…

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?

目录 一、面试官心理分析 二、面试题剖析 1. 缓存雪崩 2. 缓存穿透 3. 缓存击穿 一、面试官心理分析 其实这是问到缓存必问的&#xff0c;因为缓存雪崩和穿透&#xff0c;是缓存最大的两个问题&#xff0c;要么不出现&#xff0c;一旦出现就是致命性的问题&#x…

WOA-GRU多输入时序预测 | 鲸鱼优化算法-门控循环单元神经网络 | Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&…

国产软件很流氓?这些良心之作,比你想象的更加强大

说到国产软件&#xff0c;大家可能首先会想到“流氓软件”、“捆绑安装”和“满屏广告”这些烦人的标签。直接上狠货&#xff0c;几款高质量软件&#xff0c;错过了&#xff0c;真可惜。 1、格式工厂 说起格式工厂&#xff0c;这款国产软件可谓是历史悠久&#xff0c;曾经陪伴…

AI程序员Devin会在6个方面影响人类程序员

讲动人的故事&#xff0c;写懂人的代码 初创公司Cognition最近所发布的世界上首个AI程序员Devin&#xff0c;让人类程序员百感交集。因为Devin能自动干下面的事情&#xff1a; 自己学习不熟悉的技术&#xff1b; 端到端地自己搭建和部署应用程序&#xff1b; 自己找出并修复…

YOLOv9实例分割教程|(二)验证教程

专栏地址&#xff1a;目前售价售价59.9&#xff0c;改进点30个 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 一、验证 打开分割验证文件&#xff0c;填入数据集配置文件、训练好的权重文件&…