基于华为云搭建EMQ X集群并使用nginx进行负载均衡
摘要
在数分钟内创建全托管高可用 MQTT 集群,快速接入物联网设备并立即开始产品原型设计与应用开发,将物联网数据存储到 Kafka 与数据库中。
实验属性
l 难易程度:初级
l 实验时长:120分钟
实验目标与基本要求
使用户快速了解 EMQ X Cloud 物联网云服务的优势与特性,完成账号注册与试用部署创建,接入物联网设备进行消息收发,存储设备数据到 Kafka 与数据库中
实验摘要
1. 登录 EMQ X Cloud
2. 创建 华为云鲲鹏 试用部署
3. 初始化客户端信息
4. 接入设备进行消息收发
5. 打通华为云-EMQ X Cloud VPC 网络
6. 将物联网数据存储到华为云 Kafka
7. 将物联网数据存储数据到云数据库 GaussDB(for Mongo)
实验步骤
0. 领取代金券,购买测试云资源。
领券链接:https://bbs.huaweicloud.com/forum/thread-73912-1-1.html
(注:活动可能已经截止,大家可以自行购买云资源进行体验,在此也强烈建议华为云将该实验加入到云实验室)
1. 登录 EMQ X Cloud
EMQ X Cloud MQTT 公有云服务来自于 EMQ 服务客户总结的一些最佳实践, 致力于提供快速部署、轻松管理、弹性扩展、跨多云部署的物联网 MQTT 5.0 服务。
点击右上角 登录 按钮,登录 EMQ X Cloud (https://cloud.emqx.io/cn/),点击 控制台 进入 EMQ X Cloud 控制台页面。
2. 创建华为云鲲鹏试用部署
在控制台 部署 页面点击 创建 部署,完成部署创建,等待 2~3 分钟后部署完全启动后即可正常使用。
完全启动后,可以看到当前部署的状态以及对应的规格、MQTT 接入信息。
3. 初始化客户端信息
3.1 客户端认证信息
EMQ X Cloud 采用 MQTT 用户名、密码认证方式,客户端需携带正确信息才能成功连接。
在 EMQ X Cloud 部署详情页面,点击 认证鉴权 选项卡,在 认证 部分输入用户名与密码,点击 添加 按钮完成客户端信息初始化。
l 用户名为:emqx_u
l 密码:123321
3.2 客户端 ACL 信息
对于安全级别较高的物联网应用,可以设置客户端的发布订阅 ACL,“所有客户端,禁止向 cmd/# 主题发布消息” 的 ACL 规则设置如下:
l 用户名:全部用户($all)
l 主题:cmd/#
l 是否允许:不允许
l 主题动作:pub
4. 接入设备进行消息收发
EMQ 提供一个在线 MQTT 测试工具,访问 http://tools.emqx.io/,使用部署提供的连接信息和 3 步骤中初始化的客户端信息进行连接。
连接成功后订阅相应的主题,进行发布、订阅测试:
5. 打通华为云-EMQ X Cloud VPC 网络
什么是 VPC
VPC (Virtual Private Cloud),也叫专有网络、私有网络。在同一个 VPC 中的所有资源相互连通,不同 VPC 的资源之间默认相互隔离。
正常情况下,你拥有的云资源和 EMQ X Cloud 资源是在两个不同的 VPC 中,彼此无法连通。为了使用规则引擎,你需要使用对等连接,连通两个 VPC。
注意事项
1. EMQ X Cloud 只支持同一区域创建对等连接
2. EMQ X Cloud 不支持 10.10.0.0/24 ~ 10.32.255.0/24 范围内的网段,请合理规划您的 VPC 网段
3. 对等连接与资源相互绑定,创建资源前请先创建对等连接
1. 在部署 详情 选项卡,点击 +VPC 对等连接 按钮,记录 EMQ X Cloud 上的 VPC 信息:
注意:暂时不要关闭该页面
l 部署 VPC ID
l EMQ X Cloud 账户 ID
l 部署 VPC 网段
2. 使用华为云账号登录华为云,进入控制台 -> 虚拟私有云 VPC
3. 点击 对等连接 -> 创建对等连接,选择其它账户。填入刚才在 EMQ X Cloud 控制台 记录的信息,点击确定创建对等连接请求
l 对端项目 ID == EMQ X Cloud 账户 ID
l 对端VPC ID == 部署 VPC I
4. 在对等连接信息界面,记录下以下 3 个值
l 1 为 对等连接 ID
l 2 为 VPC 网段
l 3 为 VPC ID
5. 找到 我的凭证,记录下用户 ID
6. 回到 EMQ X Cloud 控制台。填写步骤 4 记录的对等连接 ID,VPC 网段,VPC ID 和步骤 5 记录的用户 ID。点击确定,完成对等连接
7. 在华为云控制台,打开 虚拟私有云 VPC -> 路由表,将步骤 1 中的部署 VPC 网段加入到对应 VPC 的路由表中
注意:下一跳类型为 对等连接
8. 在华为云控制台里配置安全组,允许 EMQ X Cloud 网段访问您的 VPC
至此 EMQ X Cloud 与华为云 VPC 网络已经打通,
6. 将物联网数据存储到华为云 Kafka
Kafka 是由 Apache 软件基金会开发的一个开源流处理平台。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台,是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。
通过 EMQ X Cloud 规则引擎,你可以将数据桥接到 Kafka 服务,也可以设定消息模板,在 Kafka 服务中生产特定的消息。
6.1 初始化分布式消息服务 Kafka
使用实验室提供的华为云账号登录华为云,打开 https://www.huaweicloud.com/product/dmskafka.html 华为云分布式消息服务 Kafka 产品页面,选择 立即购买,注意以下几点信息,其他可自行设置:
l 区域:选择 EMQ X Cloud 部署相同的区域,如 华南-广州
l 虚拟私有云:选择上一步中创建的 VPC,选择对应的子网
l 安全组:确保 Kafka 能够被访问,建议开放 TCP 9092 端口全部访问权限
点击 立即购买 完成创建,进入 https://console.huaweicloud.com/dms/?engine=kafka®ion=cn-south-1#/queue/manager/newKafkaList 查看创建进程,等待创建完成后查看并记录连接地址
6.2 设置规则引擎的筛选条件
在部署页面,选择规则引擎,点击创建。
我们的目标是:当主题 greet 收到 msg 为 hello 字符时,就会触发引擎。这里需要对 SQL 进行一定的处理:
l 针对 greet 主题,即 'greet/#'
l 对 payload 中的 msg 进行匹配,当它为 'hello' 字符串再执行规则引擎
l 根据上面的原则,我们最后得到的 SQL 应该如下:
1
2
3
4
5
6
|
SELECT
payload.msg as msg
FROM
"greet/#"
WHERE
msg = 'hello'
|
可以点击 SQL 输入框下的 SQL 测试 ,填写数据:
1
2
3
4
5
|
topic: greet
payload:
{
"msg" : "hello"
}
|
点击测试,查看得到的数据结果,如果设置无误,测试输出框应该得到完整的 JSON 数据,如下:
1
2
3
|
{
"msg" : "hello"
}
|
注意:如果无法通过测试,请检查 SQL 是否合规,测试中的 topic 是否与 SQL 填写的一致。
6.3 创建资源和动作
点击添加动作,在选择动作页,选择 桥接数据到 Kafka,点击下一步,在配置动作页面,点击创建资源。
在创建资源页面里,资源类型选择 Kafka,在 Kafka 服务器框里填写 6.1 步骤中保存的连接地址。点击测试,右上角返回 “测试资源创建成功” 表示测试成功。
注意:如果测试失败,请检查是否完成对等连接,详情请看 VPC 对等连接,并检查 URL 是否正确。
点击确定,返回到配置动作页面,Kafka 主题填写刚刚创建的 testTopic 主题,在消息内容模板里填写 "hello from emqx cloud",资源 ID 默认,点击确定。
创建好的动作会显示在响应动作一栏里,确认信息无误后,点击右下角的确认,完成规则引擎的配置。
6.4 测试
如果您是第一次使用 EMQ X Cloud 可以前往部署连接指南,查看 MQTT 客户端连接和测试指南
我们尝试向 home/sensor 主题发送下面的数据
1
2
3
|
{
"msg" : "hello"
}
|
在规则引擎页中,点击监控可以看到动作指标数的成功数变为 1。
至此,规则命中时在 Kafka 实例中消费者可以接收到 EMQ X Cloud 转发过来的消息。
6.5 结束实验
结束实验之后,请及时删除云资源,避免继续扣费。
- 点赞
- 收藏
- 关注作者
评论(0)