共计 2072 个字符,预计需要花费 6 分钟才能阅读完成。
Terraform 是由 HashiCorp 推出的一个基础设施即代码(IaC)工具,它包含了底层的组件如计算实例、存储和网络,以及高层的组件如 DNS、LBS 等。用户能够应用 Terraform 平安、高效地构建、扭转和更新基础设施。
在传统的公有云或私有云部署形式中,用户须要先部署好基础设施(虚拟机、网络和存储等),之后能力开始部署 MQTT 集群。而如果应用 Terraform,用户则能够同时实现这两项工作。此外,同一套工具能够在不同的平台上进行部署,通过模版可反复、可预测的形式定义和配置资源,可大大减少人为因素导致的谬误。
本文将以分布式物联网 MQTT 音讯服务器 EMQX 为例,采纳阿里云作为私有云平台,介绍如何应用 Terraform 疾速部署一个高可用的 MQTT 集群。
Terraform 简介
作为一个治理服务生命周期的工具,Terraform 能够用状态文件记录和跟踪所有环境变动。默认状态是存储在本地的,通过 HCL 或者 JSON 来定义,HCL 是 HashiCorp 提供的模板语言。
- Coding:用 HCL 来编写基础设施代码。能够定义块,参数和表达式。
- Plan:运行 Terraform Plan 来查看执行打算是否合乎冀望。
- Apply:运行 Terraform Apply 来构建用户所需的基础设施
筹备与装置
装置 Ali Cloud SDK for Go
go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk
装置 Terraform
以 Mac 为例,通过 brew 装置。
brew tap hashicorp/tap 2brew install hashicorp/tap/terraform
验证装置
terraform -help
具体可参考官网文档。
应用 Terraform 部署 EMQX 集群
下载阿里云部署脚本
git clone https://github.com/emqx/terraform-emqx-emqx-alicloud.git
部署脚本阐明
脚本配置文件门路:
- 单机部署配置文件:
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_ACCESS_KEY=${anaccesskey}
export ALICLOUD_SECRET_KEY=${asecretkey}
export ALICLOUD_REGION=${region}
部署 EMQX 企业版集群
用户能够通过批改
terraform.tfvars
文件,来更改默认的配置
cd services/emqx_cluster
terraform init
terraform plan
terraform apply -auto-approve
期待几分钟后,能够看到部署实现的后果如下:
验证集群部署后果
集群部署胜利后,咱们能够简略测试集群是否已失常运行。先上图获取到集群的 IP 地址(emqx_cluster_address = “120.79.163.50”),并通过以下信息拜访 EMQX 企业版的 Dashboard。
http://120.79.163.50:18083
用户名:
admin
明码:
public
从上图能够看到咱们部署了 2 个节点,这时能够通过 WebSocket 工具进行简略的验证:
-
右边菜单栏抉择工具→WebSocket
-
点击“连贯”
-
订阅主题
-
点击公布,失常能看到如下后果
结语
至此,咱们实现了通过 Terraform 在阿里云上疾速部署 MQTT 集群的全副流程。读者可依据理论状况批改部署脚本,创立满足本人业务需要的 EMQX 集群,借助 EMQX 在物联网数据连贯、挪动与解决方面的劣势构建具备竞争力的物联网平台与利用。
参考资料
代码仓库: https://github.com/emqx/terra…
EMQX Terraform 模块官网文档:https://docs.emqx.com/zh/emqx…
版权申明:本文为 EMQ 原创,转载请注明出处。
原文链接:https://www.emqx.com/zh/blog/deploy-mqtt-cluster-on-alibaba-cloud-using-terraform