EMQX v4 安装及组建集群、设置负载均衡

2023-11-03

准备工作:操作系统ubuntu 16.04,虚拟机VMware Workstation 12 Pro

一、安装EMQX

1、打开EMQ首页:https://www.emqx.io/cn/

2、选择产品 -> EMQ X Broker

3、在ubuntu上安装v4.0.0版本,选择相应的下拉列表,在下载按钮下会出现zip包的下载地址,复制该地址;

4、在虚拟机上选择编辑 -> 粘贴,将EMQ包地址复制到ubuntu中。

5、开始下载EMQX v4.0.0 zip包

6、使用unzip命令解压程序包

        unzip emqx-ubuntu16.04-v4.0.0.zip

7、启动 EMQ X Broker(进入emqx文件夹)

./bin/emqx start
emqx 4.0.0 is started successfully!

8、查看EMQ X Broker状态

./bin/emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx v4.0.0 is running

        

通过浏览器,使用地址http://ubuntu系统IP:18083/,进入Dshboard界面查看EMQX运行状态(默认用户:admin,密码:public)

此时已经可以进行MQTT消息发布订阅了!(此处可以有掌声)

9、停止EMQ X Broker

./bin/emqx stop
ok

10、开启MQTT身份认证Username 认证

1)通过Dashboard直接启用插件

或执行./bin/emqx_ctl plugins load emq_auth_username

2)关闭允许匿名用户登录(etc/emqx/emqx.conf

allow_anonymous = true,改为false,保存退出

3)设置用户名密码

注:4.3版本中emqx_auth_clientid 与 emqx_auth_usernmae 合并为 emqx_auth_mnesia,一定记得在Dashboad中启用 emqx_auth_mnesia 这个插件!!!!!

    使用HTTP API管理认证数据:

    请求方式:Post方式

地址:http://IP地址:8081/api/v4/auth_username/

这里要注意下EMQXAPI使用Basic Auth的认证方式,要在http头中放入用户名、密码,开始的时候没注意到这个,在坑里转了半天!

然后。。。。添加用户、密码,这里用的JSON格式

    添加成功返回"code": 0

GET方式 api/v4/auth_username 查看所有用户)

GET方式 api/v4/auth_username/test 查看用户test)

PUT方式 api/v4/auth_username/test 修改用户)
 
DELETE方式 api/v4/auth_username/test 删除用户)
 

4)权限配置

默认配置中ACL是开放授权的,即授权结果为忽略(ignore允许客户端通过授权。

通过 etc/emqx.conf 中的 ACL 配置可以更改该属性为deny,即用户未授权时不允许进行消息发布订阅:

# etc/emqx.conf
修改为:acl_nomatch = deny,阻止未授权用户进行消息发布订阅;

内置 ACL 通过文件设置规则,使用上足够简单轻量,适用于规则数量可预测、无变动需求或变动较小的项目。

方法一:

       修改ACL 规则文件etc/acl.confEMQX加载先后顺序貌似从下向上)注

注:把最下面一条注释了 ==>  %%{allow, all},不然设置的权限无效

 acl.conf 修改完成后,并不会自动加载至 EMQ X 系统。需要手动执行:

./bin/emqx_ctl acl reload

二、创建集群

首先,把虚拟机复制一份,在VM中打开。

EMQ X 集群中的节点通过节点名互相访问,所以需要在emqx/etc/emqx.conf文件中设置正确的节点名。节点名的格式是name@hosthost可以是 IP 地址或者 FQDN

修改节点名称如:

节点一:emqx80@192.168.2.80

节点二:emqx81@192.168.2.81

EMQ X 使用cookie来确认同一个集群中的节点。同一个集群中的节点必须使用相同的cookie。在编辑配置文件 emqx/etc/emqx.conf修改cookie

node.cookie = emqxsecretcookie

手动集群方式是 EMQ X 的默认集群方式。如果需要修改集群方式,在配置文件emqx/etc/emqx.conf中修改:

cluster.discovery = manual

在任意独立节点上执行 cluster join 后,该节点会被加入到集群中,在80系统的节点上添加:

     ./bin/emqx_ctl cluster join emqx81@192.168.2.81

或在81系统的节点上添加:

     ./bin/emqx_ctl cluster join emqx80@192.168.2.80

在节点被成功的加入到集群后,系统会返回以下提示:

Join the cluster successfully.
Cluster status: [{running_nodes,['emqx80@192.168.2.80','emqx81@192.168.2.81']}]

从集群中移除节点 EMQ X 提供两种方式从集群中移除一个节点:

  • leave: 需要移除的节点主动退出集群。在该节点上执行以下命令即可退出集群:
  • $ ./bin/emqx_ctl cluster leave
  • remove: 从集群的其他节点移除一个节点。在集群的其他节点上执行以下命令即可移除该节点。本例在 s1 节点上执行以下命令把 s2 节点移除出集群:
  • $ ./bin/emqx_ctl cluster remove emq@s2.emqx.io

查询集群状态 在集群中的任意节点上使用emqx_ctl工具的 cluster status 命令可以查询目前集群的状态:

$ ./bin/emqx_ctl cluster status

Cluster status: [{running_nodes,['emqx80@192.168.2.80','emqx81@192.168.2.81']}]

三、使用负载均衡LB

使用HAProxyNginx 作为 LB 部署 EMQ X 集群。这里用的HAProxy做为负载均衡:

1、安装HAProxy

       sudo apt-get install haproxy

2、编辑配置文件

       sudo vim /etc/haproxy/haproxy.cfg

3、运行haproxy:

/usr/sbin/haproxy –f /etc/haproxy/haproxy.cfg

4、设置开机运行

sudo vim /etc/rc.local,在文档最后添加上面的运行语句就OK了。

花了三天时间,终于搞定,写下来免得忘记了~后续再做深入研究,哈哈!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EMQX v4 安装及组建集群、设置负载均衡 的相关文章

随机推荐

  • OpenGL教程(五)

    前言 正如之前章节所提到的 着色器就是运行在GPU上的小程序 简单来说 着色器就是仅仅是一个将输入数据经过一定转换然后输出的过程 着色器之间是非常独立的 彼此之间除了输入输出之外没有其他交流 这篇文章将会详细介绍着色器以及编写着色器的语言G
  • 上下div之间有间距的问题

    我写了4个div 上下分布 均存在间距 代码以及效果如下 div1 height 100px background color blue position relative div2 height 100px background colo
  • HTTP请求方式中8种请求方法(简单介绍)

    HTTP请求方式中8种请求方法 简单介绍 简单介绍 HTTP是超文本传输协议 其定义了客户端与服务器端之间文本传输的规范 HTTP默认使用80端口 这个端口指的是服务端的端口 而客户端使用的端口是动态分配的 当我们没有指定端口访问时 浏览器
  • [Unity2D/3D]实用的血条制作(第一期)

    Unity2D 3D 实用的血条制作 第一期 在多数的游戏制作中 都会涉及到血条的制作 不论是在2D游戏中还是3D游戏中都非常常见 如何制作一款简易的血条呢 这里我给结合自己自学过程中用到的血条制作方法给大家分享一下我是如何制作血条的 效果
  • atoi函数(c语言)

    目录 atoi函数的说明 函数改编以及思路 代码 代码注释 atoi函数的说明 该函数的作用是将一字符串变为一整型类型的数字输出出来 若字符串内无数字则输出0 此处输出按十进制输出 字符串开头的空格会自动扫描为空 函数改编以及思路 对该函数
  • iframe无边框(隐藏边框)

    用css的border none来去掉iframe的边框在IE下起不了作用 将iframe的frameborder属性的值设为no就可以
  • Java--==与equals()的区别

    一 使用的对象 基本数据类型 equals 引用数据类型 二 比较内容 是否为同一地址 equals 未重写 是否为同一地址 已重写 引用数据类型内容 三 重写 public boolean equals Objeat obj if thi
  • Python接单一个月,副业居然比主业收入要多?

    python爬虫肯定是可以当副业的 我身边一个伙伴就靠会python爬虫这一项技能一个月差不多能有一万多收入 他截图给我看的他的收入图是这样的 人家一个月就靠接单这个副业都比很多人主业收入要多 每个月除主业外还有一万多收入 财务就相对自由的
  • 学习笔记二:IBIS模型编辑报错纠正

    新建IBIS文件后 写好了相应的IBIS模型文件 写好文件后 最好要检查下是否符合ibis语法 注意 第一点 IBIS头文件的 File name 此处名称需要和文件名称相同 同时名称字符数需在12个字符之内 否则会报错 File name
  • 一个javaer面试Python

    Python初面 一 初面缘由 今天是2022年的6月18日 广州 中雨转阴 非天气预报 我怀揣着紧张而有激动的心情趁着周末悄悄去面试了一次 说是去面试 其实也和玩差不多 公司的工作氛围很不错 空调很凉 零食很多 但是我没有心情享用 附上一
  • HFSS 3D LAOUT PCB 裁剪,差分线,过孔仿真和优化

    我本身不是做天线设计的 所以HFSS这个软件给我主要还是做PCB级别的高速信号完整性仿真 一般2 5D的仿真软件无法对过孔和跨平面进行仿真 所以要借助三维电磁软件进行 今天就针对PCB进行裁剪 为什么要裁剪 以为如果把整个PCB一起仿真的话
  • 移动APP专项测试

    什么是移动端测试 移动端测试是指对移动应用进行的测试 即实体的特性满足需求的特性 简言之就是针对移动平台的软件进行的测试 比如针对手机 ipad等平台上的各种app功能和性能展开的测试 相较于传统的web端的测试 移动端的测试受手机屏幕大小
  • 127.0.0.1和localhost的区别

    要比较两个东西有什么不同 首先要弄清两者的概念 所以 我们从概念开始 localhost 也叫local 正确的解释是 本地服务器 127 0 0 1 在windows等系统的正确解释是 本机地址 本机服务器 我们再看看他们的工作原理 lo
  • 关于块元素和行元素之间的转换

    如何让块元素变成行元素 将块级元素设置为行内元素 inline 可以通过以下几种方式 1 display inline 这个是最直接的方式 通过设置display样式为inline 可以将块级元素变为行内元素 例如 css div disp
  • element的日期组件-两个的和单个的组件

    dateOne vue
  • 云计算技术基础第1章 云的概念以及类型

    章节安排 第一章 云的概念及类型 第二章 虚拟化技术 第三章 云计算的架构和国内外研究现状 第四章 云计算与大数据 第五章 海量数据存储技术 第六章 云平台应用 本章内容 计算模式的回顾 云计算概念与特征 云计算的分类 云计算的发展动因 云
  • Spring Cloud Alibaba 大型微服务项目实战

    作者介绍 程序员十三 多年一线开发经验 历任高级开发工程师 后端主程 技术部门主管等职位 同时也是开源项目的爱好者和贡献者 掘金优秀作者 CSDN 博客专家 实体图书作者 专栏作者 视频讲师 小册介绍 Spring Cloud Alibab
  • 利用Python通过频谱分析和KNN完成iphone拨号的语音识别

    最近这段时间 学校里的事情实在太多了 从七月下旬一直到八月底实验室里基本天天十二点或者通宵 实在是没有精力和时间来写博客 这周老师出国开会 也算有了一个短暂的休息机会 刚好写点有意思的东西 上周在天津的会议上碰到一个北交的姐们儿 她想利用小
  • IDEA集成Git操作

    IDEA集成Git操作 IDEA绑定Git仓库 在需要的工程目录下创建Git仓库并完成仓库基本设置 此时IDEA界面出现的变化 若出现此变化 说明IDEA绑定Git仓库成功 IDEA集成的Git操作 右上角选项为Git基本操作 懒人操作 文
  • EMQX v4 安装及组建集群、设置负载均衡

    准备工作 操作系统ubuntu 16 04 虚拟机VMware Workstation 12 Pro 一 安装EMQX 1 打开EMQ首页 https www emqx io cn 2 选择产品 gt EMQ X Broker 3 在ubu