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_clusterproxy_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.mzph.cn/news/746088.shtml

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

相关文章

HTML 学习笔记(十)块和内联

每个HTML元素都有一个默认的显示值,显示值又可以再分为block(块)和inline(内联) 一、块元素 通过F12进入浏览器开发者模式查看该元素会发现其所占宽度为整个网页的宽度 1.div标签 通过div标签将一些元素装进"盒子",从而对盒子中的全部元素…

HDFS的架构优势与基本操作

目录 写在前面一、 HDFS概述1.1 HDFS简介1.2 HDFS优缺点1.2.1 优点1.2.2 缺点 1.3 HDFS组成架构1.4 HDFS文件块大小 二、HDFS的Shell操作(开发重点)2.1 基本语法2.2 命令大全2.3 常用命令实操2.3.1 上传2.3.2 下载2.3.3 HDFS直接操作 三、HDFS的API操作3…

提前十分钟!有方法论的人和没有方法论的人,谁更从容?弱者不应被错误引导——早读(逆天打工人爬取热门微信文章解读)

熬夜不熬夜,取决于你的生活态度 引言Python 代码第一篇 人民日报 提前十分钟,人生大不同第二篇 人民日报 来啦 新闻早班车要闻社会政策 结尾 君子如潜龙,藏器待时发 紧握时间的脉搏,提前规划十分钟 既显对他人的敬意,亦…

【SysBench】Linux 安装 sysbench-1.20

安装目的是为了对 MySQL 8.0.x 、PostgreSQL 进行基准测试。 0、sysbench 简介 sysbench 是一个可编写脚本的多线程基准测试工具,基于 LuaJIT 。 它最常用于数据库基准测试,但也可以 用于创建任意不涉及数据库服务器的复杂工作负载。 sysbench 附带以…

【诚信3·15】广州流辰信息|诚信至上,始终如一!

每一个承诺,广州流辰信息皆倾心对待;每一份期待,广州流辰信息亦用心守护。近十年用专业缔造好品质,用服务追求好口碑。在为客户服务的路上,流辰信息始终无惧考验,保持初心。在3.15国际消费者权益日&#xf…

SpringBoot3学习记录(有ssm基础)

目录 一、SpringBoot3 介绍 SpringBoot3 简介 SpringBoot3 快速入门 入门总结 1.为什么依赖不需要写版本 2.Startrer(启动器)是什么 3.SpringBootApplication 二、SpringBoot3 配置文件 统一配置管理 使用yaml配置文件(推荐&#x…

Gateway网关在url参数带有特殊字符的情况下转发失败(响应400)

本文主要分享了,SpringCloud Gateway网关在url参数带有空格或者特殊字符的情况下,转发失败导致响应错误码400的解决方案。 响应400错误码的2种场景: 1.参数带空格,Gateway会误认为该空格是切割符,如?phone 135****6…

QT使用dumpcpp为COM生成h及cpp的方式,COM是C#的dll注册的

目录 1.C#的dll注册为COM,采用bat的方式 2.通过qt的dumpcpp来生成h及cpp文件 3.h文件和cpp文件处理。 台达数控系统的C#的dll dumpcpp用的tlb文件 dumpcpp生成的原生h文件 dumpcpp生成的原生cpp dump生成后的的原生cpp文件修改后的cpp文资源 dump生成后的的…

AI短视频矩阵系统介绍|罐头鱼AI视频批量生成

智能化管理,轻松批量剪辑短视频! 近年来,随着短视频营销行业的发展,我们推出了一款AI短视频矩阵系统,旨在帮助用户管理、剪辑和发布短视频内容,从而提升品牌影响力。让我们来看看这款系统都提供了哪些功能&…

Windows Server 各版本搭建终端服务器实现远程访问(03~19)

一、Windows Server 2003 左下角开始➡管理工具➡管理您的服务器,点击添加或删除角色 点击下一步 勾选自定义,点击下一步 点击终端服务器,点击下一步 点击确定 重新登录后点击确定 点击开始➡管理工具➡计算机管理,展开本地用户…

openssl3.2 - 官方demo学习 - encode - ec_encode.c

文章目录 openssl3.2 - 官方demo学习 - encode - ec_encode.c概述笔记产生ecc私钥产生ecc公钥测试工程备注备注END openssl3.2 - 官方demo学习 - encode - ec_encode.c 概述 官方demos/encode 目录中给了2个例子工程 功能是载入(RSA/ECC)公钥, 然后自己就可以拿内存中的公钥对…

mupdf渲染过程(一):颜色

mupdf除了解析PDF功能之外,还有一个强大的功能就是渲染文字和图像,本文介绍mupdf渲染过程中涉及到的颜色问题:包括颜色空间,颜色转换,lcms的使用。 1.初始化 mupdf初始化第一步是实例化fz_context *ctx,fz…

OpenCV开发笔记(七十七):相机标定(二):通过棋盘标定计算相机内参矩阵矫正畸变摄像头图像

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136616551 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博…

Visual Studio 2022 配置“Debug|x64”的 Designtime 生成失败。IntelliSense 可能不可用。

今天写代码,无缘无故就给我整个这个错误出来,我一头雾水。 经过我几个小时的奋战,终于解决问题 原因就是这个Q_INTERFACES()宏,我本想使用Q_DECLARE_INTERFACE Q_INTERFACES这两个Qt宏实现不继承QObject也能使用qobjec…

VSCode提交代码

VSCode提交代码方式: 先在电脑本地文件夹中打开git的bash窗口使用git clone https://github.com/xxxx/克隆仓库地址到本地,并生成一个项目的文件夹打开VSCode,点击文件按钮,打开加载项目的文件夹对于VSCode设置Git路径&#xff…

Three 材质纹理 (总结三)

THREE.MeshLambertMaterial(网格 Lambert 材质) 该材质使用基于非物理的Lambertian模型来计算反射率。可以用来创建暗淡的并不光亮的表面,该材质非常易用,而且会与场景中的光源产生反应。 MeshLambertMaterial属性 # .color : …

蓝桥杯刷题|02入门真题

[蓝桥杯 2022 省 B] 刷题统计 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题? 输入格式 输入一行包含三个整数…

Linux之线程互斥

目录 一、问题引入 二、线程互斥 1、相关概念 2、加锁保护 1、静态分配 2、动态分配 3、锁的原理 4、死锁 三、可重入与线程安全 1、概念 2、常见的线程不安全的情况 3、常见的线程安全的情况 4、常见不可重入的情况 5、常见可重入的情况 6、可重入与线程安全联系…

Linux 部署 Samba 服务

一、Ubuntu 部署 Samba 1、安装 Samba # 更新本地软件包列表 sudo apt update# 安装Samba sudo apt install samba# 查看版本 smbd --version2、创建共享文件夹,并配置 Samba 创建需要共享的文件夹,并赋予权限: sudo mkdir /home/test sud…

Kubernetes operator系列:webhook 知识学习【更新中】

云原生学习路线导航页(持续更新中) 本文是 Kubernetes operator学习 系列文章,本节会对 kubernetes webhook 知识进行学习 本文的所有代码,都存储于github代码库:https://github.com/graham924/share-code-operator-st…