乐趣区

关于物联网:使用-Terraform-在-AWS-上快速部署-MQTT-集群

Terraform 是由 HashiCorp 推出的一个基础设施即代码(IaC)工具,它包含了底层的组件如计算实例、存储和网络,以及高层的组件如 DNS、LBS 等。用户能够应用 Terraform 平安、高效地构建、扭转和更新基础设施。

在传统的公有云或私有云部署形式中,用户须要先部署好基础设施(虚拟机、网络和存储等),之后能力开始部署 MQTT 集群。而如果应用 Terraform,用户则能够同时实现这两项工作。此外,同一套工具能够在不同的平台上进行部署,通过模版可反复、可预测的形式定义和配置资源,可大大减少人为因素导致的谬误。

本文将以分布式物联网 MQTT 音讯服务器 EMQX 为例,采纳 AWS 作为私有云平台,介绍如何应用 Terraform 疾速部署一个高可用的 MQTT 集群。

Terraform 简介

作为一个治理服务生命周期的工具,Terraform 能够用状态文件记录和跟踪所有环境变动。默认状态是存储在本地的,通过 HCL 或者 JSON 来定义,HCL 是 HashiCorp 提供的模板语言。

  • Coding:用 HCL 来编写基础设施代码。能够定义块,参数和表达式。
  • Plan:运行 Terraform Plan 来查看执行打算是否合乎冀望。
  • Apply:运行 Terraform Apply 来构建用户所需的基础设施

装置与筹备

装置 Terraform

以 Mac 为例,通过 brew 装置。

brew tap hashicorp/tap 2brew install hashicorp/tap/terraform

验证装置

terraform -help

具体参考官网文档

装置 AWS Cli

以 Mac 为例

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

验证装置

which aws
aws --version

参考官网文档

增加用户

  1. 进入 AWS 的 IAM 菜单,点击“增加用户”

  2. 在增加用户中,记得勾选“拜访密钥”

  3. 抉择“创立组”

  4. 在创立组中增加“AdministratorAccess”策略

  5. 点击“创立用户”,实现用户增加

  6. 获取 Access Key 和 Secret

配置 AWS 的 Access Key

拿到下面创立好的 access key 和 secret,设置环境变量

AWS_ACCESS_KEY_ID: ${anaccesskey}
AWS_SECRET_ACCESS_KEY: ${asecretkey}

应用 Terraform 在 AWS 上部署 EMQX 集群

下载 AWS 部署脚本

git clone "https://github.com/emqx/terraform-emqx-emqx-aws.git"

部署脚本阐明:

  • 临时不反对 EMQX 5.X
  • AWS CLI:aws-cli/2.2.41 Python/3.8.8 Darwin/21.4.0 exe/x86_64 prompt/off

脚本配置文件门路:

  • 单机部署配置文件:services/emqx/terraform.tfvars
  • 集群部署配置文件:services/emqx_cluster/terraform.tfvars

部署脚本默认应用以下配置,读者可依据理论状况自行批改 terraform.tfvars 文件:

  • 默认 EMQX 版本:企业版 4.4.3

如果要部署开源版,须要批改 emqx_package 值,比方部署开源版 4.4.3:https://www.emqx.com/en/downloads/broker/v4.4.3/emqx-4.4.3-otp23.3.4.9-3-ubuntu20.04-amd64.zip

  • 默认 AWS Region 为 us-east-1
  • 默认集群节点:3 台 t3.small

部署 EMQX 集群

用户能够通过批改 terraform.tfvars 文件,来更改默认的配置

cd services/emqx_cluster
terraform init
terraform plan
terraform apply -auto-approve

期待几分钟,部署实现的后果如下所示

验证 EMQX 集群部署后果

集群部署胜利后,咱们能够简略测试集群是否已失常运行。先从上图获取到集群的 IP 地址,并通过以下信息拜访 EMQX 企业版的 Dashboard。

http://tf-elb-nlb-5bff6976b15586dd.elb.us-east-1.amazonaws.com:18083

用户名:admin

明码:public

从上图能够看到咱们部署了 3 个节点,这时能够通过 Websocket 工具进行简略验证:

  1. 右边菜单栏抉择工具→WebSocket

  2. 点击“连贯”

  3. 订阅主题

  4. 点击公布,失常能看到如下后果

结语

至此,咱们实现了通过 Terraform 在 AWS 上疾速部署 MQTT 集群的全副流程。读者可依据理论状况批改部署脚本,创立满足本人业务需要的 EMQX 集群,借助 EMQX 在物联网数据连贯、挪动与解决方面的劣势构建具备竞争力的物联网平台与利用。

参考:

代码仓库:https://github.com/emqx/terra…

EMQX Terraform 模块官网文档:https://docs.emqx.com/zh/emqx-terraform/latest

版权申明:本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/deploy-mqtt-cluster-on-aws-using-terraform

退出移动版