

使用 Terraform 在阿里云上快速部署 MQTT 集群
source link: https://blog.51cto.com/u_15204296/5475451
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Terraform 是由 HashiCorp 推出的一个基础设施即代码(IaC)工具,它包括了底层的组件如计算实例、存储和网络,以及高层的组件如 DNS、LBS 等。用户可以使用 Terraform 安全、高效地构建、改变和更新基础设施。
在传统的私有云或公有云部署方式中,用户需要先部署好基础设施(虚拟机、网络和存储等),之后才能开始部署 MQTT 集群。而如果使用 Terraform,用户则可以同时完成这两项工作。此外,同一套工具可以在不同的平台上进行部署,通过模版可重复、可预测的方式定义和配置资源,可大大减少人为因素导致的错误。
本文将以分布式物联网 MQTT 消息服务器 EMQX 为例,采用阿里云作为公有云平台,介绍如何使用 Terraform 快速部署一个高可用的 MQTT 集群。
Terraform 简介
作为一个管理服务生命周期的工具,Terraform 可以用状态文件记录和跟踪所有环境变化。默认状态是存储在本地的,通过 HCL 或者 JSON 来定义,HCL 是 HashiCorp 提供的模板语言。

Terraform 工作原理
- Coding:用 HCL 来编写基础设施代码。可以定义块,参数和表达式。
- Plan:运行 Terraform Plan 来检查执行计划是否符合期望。
- Apply:运行 Terraform Apply 来构建用户所需的基础设施
准备与安装
安装 Ali Cloud SDK for Go
安装 Terraform
以 Mac 为例,通过 brew 安装。
具体可参考 官方文档。
使用 Terraform 部署 EMQX 集群
下载阿里云部署脚本
部署脚本说明
脚本配置文件路径:
- 单机部署配置文件:
services/emqx/terraform.tfvars
- 集群部署配置文件:
services/emqx_cluster/terraform.tfvars
部署脚本默认使用以下配置,读者可根据实际情况自行修改:
- Ali Cloud SDK: v1.61.1608
老版本 SDK 可能会导致 ELB 部署失败
- 默认 EMQX 版本:企业版 4.4.3
如果要部署开源版,需要修改terraform.tfvars
文件末尾的emqx_package
值,比如部署开源版 5.0.3:
emqx_package = https://www.emqx.com/en/downloads/broker/5.0.3/emqx-5.0.3-ubuntu20.04-amd64.tar.gz
- 默认阿里云 Region 为:
cn-shenzhen
- 默认集群节点:2 台
ecs.t6-c1m1.large
配置阿里云 AccessKey
进入阿里云 AccessKey 页面

拿到创建好的 AccessKey 和 Secret,设置环境变量
export ALICLOUD_SECRET_KEY=${asecretkey}
export ALICLOUD_REGION=${region}
部署 EMQX 企业版集群
用户可以通过修改
terraform.tfvars
文件,来更改默认的配置
terraform init
terraform plan
terraform apply -auto-approve
等待几分钟后,可以看到部署完成的结果如下:

验证集群部署结果
集群部署成功后,我们可以简单测试集群是否已正常运行。先上图获取到集群的 IP 地址(emqx_cluster_address = "120.79.163.50"),并通过以下信息访问 EMQX 企业版的 Dashboard。
用户名:
admin
密码:
public
http://120.79.163.50:18083

从上图可以看到我们部署了 2 个节点,这时可以通过 WebSocket 工具进行简单的验证:
- 左边菜单栏选择工具→WebSocket

- 点击“连接”


- 点击发布,正常能看到如下结果

至此,我们完成了通过 Terraform 在阿里云上快速部署 MQTT 集群的全部流程。读者可根据实际情况修改部署脚本,创建满足自己业务需求的 EMQX 集群,借助 EMQX 在物联网数据连接、移动与处理方面的优势构建具有竞争力的物联网平台与应用。
参考资料
代码仓库: https://github.com/emqx/terraform-emqx-emqx-alicloud
EMQX Terraform 模块官方文档: https://docs.emqx.com/zh/emqx-terraform/latest
版权声明: 本文为 EMQ 原创,转载请注明出处。
原文链接: https://www.emqx.com/zh/blog/deploy-mqtt-cluster-on-alibaba-cloud-using-terraform
Recommend
-
9
使用 simps/mqtt 调用阿里云的微消息队列 MQTT 版 后端开发 / 2021年4月28日 / 0 条评论
-
8
快速部署cerebro-v0.9.4监控es集群状态 |坐而言不如起而行! 二丫讲梵 > 日志管理 >
-
13
愿你有好运,如果没有,希望你在慈悲中学会坚强。 愿有很多人爱你,如果没有,希望你在寂寞中学会宽容。 原语云介绍 原语云 是 深圳原语科技有限公司 团队专门...
-
7
使用Elasticsearch Operator快速部署Elasticsearch集群-阳明的博客|Kubernetes|Istio|Prometheus|Python|Golang|云原生 https://unsplash.com/photos/snbf9h8rjCw 随着
-
3
在华为云 CCE 上部署 EMQX MQTT 服务器集群 精选 原创 EMQ映云科技 2022-09-29 17...
-
7
在 AWS EKS 上部署 EMQX MQTT 集群 精选 原创 EMQ映云科技 2022-10-21 16:48:52
-
9
Etcd 是一个可靠的分布式键值存储, 常用于分布式系统关键数据的存储;而 etcdadm 是一个用于操作 etcd 集群的命令行工具...
-
7
在阿里云 ACK 上部署 EMQX MQTT 服务器集群 精选 原创 EMQ映云科技 2022-11-21 13...
-
6
【笔记】MacOS 上部署 MQTT 环境 捕捉一只爱折腾的绯鞠 ...
-
8
之前的文章中提到过如何在CentOS上手动部署Kubernetes集群,这种方式需要修改大量系统参数,并且需要自行安装大量软件比较麻烦; 而KuboardSpray提供了图形化界面,可以迅速的安装并管理Kubernetes集群; 系列文章:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK