基于华为云搭建EMQ X集群并使用nginx进行负载均衡

真爱无敌 发表于 2021/04/28 14:35:30 2021/04/28
【摘要】 摘要在数分钟内创建全托管高可用 MQTT 集群,快速接入物联网设备并立即开始产品原型设计与应用开发,将物联网数据存储到 Kafka 与数据库中。实验属性l  难易程度:初级l  实验时长:120分钟实验目标与基本要求使用户快速了解 EMQ X Cloud 物联网云服务的优势与特性,完成账号注册与试用部署创建,接入物联网设备进行消息收发,存储设备数据到 Kafka 与数据库中实验摘要1.   ...

摘要

在数分钟内创建全托管高可用 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 分钟后部署完全启动后即可正常使用。

        01.png

 

完全启动后,可以看到当前部署的状态以及对应的规格、MQTT 接入信息。

         02.png

 

3. 初始化客户端信息

3.1 客户端认证信息

EMQ X Cloud 采用 MQTT 用户名、密码认证方式,客户端需携带正确信息才能成功连接。

在 EMQ X Cloud 部署详情页面,点击 认证鉴权 选项卡,在 认证 部分输入用户名与密码,点击 添加 按钮完成客户端信息初始化。

l  用户名为:emqx_u

l  密码:123321

         03.png

3.2 客户端 ACL 信息

对于安全级别较高的物联网应用,可以设置客户端的发布订阅 ACL,“所有客户端,禁止向 cmd/# 主题发布消息” 的 ACL 规则设置如下:

l  用户名:全部用户($all)

l  主题:cmd/#

l  是否允许:不允许

l  主题动作:pub

         04.png

 

4. 接入设备进行消息收发

EMQ 提供一个在线 MQTT 测试工具,访问 http://tools.emqx.io/,使用部署提供的连接信息和 3 步骤中初始化的客户端信息进行连接。

         05.png

连接成功后订阅相应的主题,进行发布、订阅测试:

         06.png

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 网段

          07.png

 

2.  使用华为云账号登录华为云,进入控制台 -> 虚拟私有云 VPC

          08.png

3.  点击 对等连接 -> 创建对等连接,选择其它账户。填入刚才在 EMQ X Cloud 控制台 记录的信息,点击确定创建对等连接请求

l   对端项目 ID == EMQ X Cloud 账户 ID

l   对端VPC ID == 部署 VPC I

09.png

 

4.  在对等连接信息界面,记录下以下 3 个值

l   1 为 对等连接 ID

l   2 为 VPC 网段

l   3 为 VPC ID

10.png

 

11.png

 

5.  找到 我的凭证,记录下用户 ID

12.png

 

6. 回到 EMQ X Cloud 控制台。填写步骤 4 记录的对等连接 IDVPC 网段VPC ID 和步骤 5 记录的用户 ID。点击确定,完成对等连接

13.png

 

7. 在华为云控制台,打开 虚拟私有云 VPC -> 路由表,将步骤 1 中的部署 VPC 网段加入到对应 VPC 的路由表中

注意:下一跳类型为 对等连接

14.png

 

8. 在华为云控制台里配置安全组,允许 EMQ X Cloud 网段访问您的 VPC

15.png 

至此 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&region=cn-south-1#/queue/manager/newKafkaList 查看创建进程,等待创建完成后查看并记录连接地址

          16.png

            17.png

6.2 设置规则引擎的筛选条件

在部署页面,选择规则引擎,点击创建。

        18.png

我们的目标是:当主题 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,点击下一步,在配置动作页面,点击创建资源。

   19.png

   20.png

在创建资源页面里,资源类型选择 Kafka,在 Kafka 服务器框里填写 6.1 步骤中保存的连接地址。点击测试,右上角返回 “测试资源创建成功” 表示测试成功。

   21.png

注意:如果测试失败,请检查是否完成对等连接,详情请看 VPC 对等连接,并检查 URL 是否正确。

点击确定,返回到配置动作页面,Kafka 主题填写刚刚创建的 testTopic 主题,在消息内容模板里填写 "hello from emqx cloud",资源 ID 默认,点击确定。

   22.png

创建好的动作会显示在响应动作一栏里,确认信息无误后,点击右下角的确认,完成规则引擎的配置。

   23.png

6.4 测试

如果您是第一次使用 EMQ X Cloud 可以前往部署连接指南,查看 MQTT 客户端连接和测试指南

我们尝试向 home/sensor 主题发送下面的数据

1
2
3
{
"msg":"hello"
}

在规则引擎页中,点击监控可以看到动作指标数的成功数变为 1。

    24.png

 至此,规则命中时在 Kafka 实例中消费者可以接收到 EMQ X Cloud 转发过来的消息。

6.5  结束实验

结束实验之后,请及时删除云资源,避免继续扣费。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。