EMQX环境搭建

序言

说了懒得搭建EMQ集群环境,正好有点空隙时间,还是要弄一下。

另外补充一点:emqx的cluster跟redis的cluster机制是一样的,都是每个服务器都可以有不同的主题,当客户端订阅或者发布的时候,服务器内部会有自己的路由转发功能。

参考资料:

 

环境搭建

单机环境搭建

EMQ X 消息服务器每个版本会发布 CentOS、Ubuntu、Debian、FreeBSD、macOS、Windows 、openSUSE 平台程序包与 Docker 镜像。----这里我们使用zip解压缩的方式安装EMQ X---cuiyaonan2000@163.com

下载地址: https://www.emqx.io/downloads  

#安装wget工具
[cuiyaonan2000@mzdssop bin]# yum install wget

#安装unzip工具
[cuiyaonan2000@mzdssop bin]# yum install unzip

#下载执行的版本的emqx
[cuiyaonan2000@mzdssop bin]# wget https://www.emqx.io/downloads/broker/v4.2.2/emqx-centos7-4.2.2-x86_64.zip

#解压缩
[cuiyaonan2000@mzdssop bin]# unzip emqx-centos7-4.2.2-x86_64.zip

#启动
[cuiyaonan2000@mzdssop bin]# ./emqx start

#关闭
[cuiyaonan2000@mzdssop bin]# ./emqx stop

#查看服务启动状态
[cuiyaonan2000@mzdssop bin]# ./emqx_ctl status

访问  http://127.0.0.1:18083,默认用户名: admin,密码:public,如图所示,登录后先修改下版本语言为中文。方便我们使用

 

 

集群环境搭建

集群节点都会占用如下的接口


1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 Dashboard 管理控制台端口

 

修改 emqx/ect/emqx.conf 文件,不同的node只是node.name后面的ip不一样其它的都一样

#这个是集群的名字
cluster.name = cui

#这个是当前节点的名字,且@前面必须跟clcuster.name 一样
node.name = cui@10.1.80.190

 

#分别启动每个服务器上的emqx
[cuiyaonan2000@mzdssop bin]# ./emqx start

#加入集群
#在10.1.80.124的节点上执行如下命令,表示加入10.1.80.190的集群中,当然也可以在190上操作
[cuiyaonan2000@mzdssop bin]# ./emqx_ctl cluster join cui@10.1.80.190


#查看集群状态
[cuiyaonan2000@mzdssop bin]# ./emqx_ctl cluster status

 

其它操作

#leave: 本节点退出集群
[cuiyaonan2000@mzdssop bin]# ./bin/emqx_ctl cluster leave


#force-leave: 从集群删除其他节点
[cuiyaonan2000@mzdssop bin]# ./bin/emqx_ctl cluster force-leave emqx@192.168.3.211


#force-leave: 从集群删除其他节点
[cuiyaonan2000@mzdssop bin]# ./bin/emqx_ctl cluster force-leave emqx@192.168.3.211


#查询所有clientid
[cuiyaonan2000@mzdssop bin]# ./emqx_ctl clients list


#删除某个clientid
[cuiyaonan2000@mzdssop bin]# ./emqx_ctl clients kick <Clientid>

关闭匿名访问(并提供程序连接账号密码)

修改配置文件/emqx/etc/emqx.conf,将如下的allow_anonymous匿名访问给关掉,即设置成false

 

打开emqx_auth_username插件

添加账户

 

使用 ETCD 的自动集群

etcd 是 CoreOS 发起的开源项目。它以构建高可用的分布式键值(Key-Value)数据库为目标。etcd 的应用场景多间于服务发现,解决分布式系统中同一个集群的进程之间如何相互发现并建立连接。这功能也正是 EMQ X 自动集群所需要的。
当网络中存在etcd服务器(集群)的时候,EMQ X 集群可以使用ectp的方式自动建立集群。如何安装和配置etcd服务集群超出了本文档的范围,有兴趣深入了解的读者可以参考官方文档。 在这里,我们假设在EMQ X集群所在的网络中已经安装和配置了etcd服务器。

 

配置 EMQ X 节点

您需要在各个 EMQ X 节点上编辑 'etc/emqx.conf'文件中的cluster段落和node段落。----这个步骤上面已经介绍了

配置 etcd 集群方式

如下有4个地方需要配置 服务发现选择etcd,服务器地址可以使多个用逗号分隔。集群前缀这个就是集群的名称。

  1. 您需要指定etcd服务器的地址(如果存在多个etcd服务器的时候,您可以使用服务器列表,在列表中以逗号","分隔各个服务器。)、
  2. 用于指定 EMQ X 节点的路径的前缀、路径的生存时间。----还是刚才的配置文件,修改如下的2个地方
cluster.discovery = etcd
##--------------------------------------------------------------------
## Cluster using etcd

## Etcd server list, seperated by ','.
##
## Value: String
cluster.etcd.server = http://192.168.1.162:2379

## The prefix helps build nodes path in etcd. Each node in the cluster
## will create a path in etcd: v2/keys/<prefix>/<cluster.name>/<node.name>
##
## Value: String
cluster.etcd.prefix = emqxcl

## The TTL for node's path in etcd.
##
## Value: Duration
##
## Default: 1m, 1 minute
cluster.etcd.node_ttl = 1m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以下是在Windows环境下使用Spring Boot和EMQ X搭建MQTT消息代理的步骤: 1. 下载EMQ X 从EMQ X官网下载最新版本的EMQ X,解压缩到本地目录。 2. 创建Spring Boot项目 在IDE中创建一个新的Spring Boot项目。 3. 添加EMQ X依赖 在pom.xml文件中添加EMQ X的依赖: ```xml <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.5</version> </dependency> ``` 4. 配置EMQ X 在application.properties文件中添加以下配置: ``` mqtt.host=tcp://localhost:1883 mqtt.username=admin mqtt.password=public ``` 5. 编写代码 在Spring Boot项目中编写代码,连接到EMQ X代理并发布和订阅MQTT消息。 ```java import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class MqttClientWrapper { @Value("${mqtt.host}") private String host; @Value("${mqtt.username}") private String username; @Value("${mqtt.password}") private String password; private MqttClient client; public void connect() throws MqttException { String clientId = MqttClient.generateClientId(); MemoryPersistence persistence = new MemoryPersistence(); client = new MqttClient(host, clientId, persistence); MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setUserName(username); connOpts.setPassword(password.toCharArray()); client.connect(connOpts); } public void publish(String topic, String content) throws MqttException { MqttMessage message = new MqttMessage(content.getBytes()); message.setQos(2); client.publish(topic, message); } public void subscribe(String topic) throws MqttException { client.subscribe(topic, 2); } public void disconnect() throws MqttException { client.disconnect(); } } ``` 6. 运行应用程序 运行Spring Boot应用程序并测试连接到EMQ X代理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiyaonan2000

给包烟抽吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值