安装

ThingsBoard安装和配置文档。

AWS集群配置

本指南将帮助你在AWS的集群模式下配置ThingsBoard。

先决条件

ThingsBoard微服务在Kubernetes集群上运行。

需要安装kubeone,terraform(v0.11+)和kubectl(v1.16+)。

kubeOne - 用于创建和管理kubernetes集群。

terraform - 用于在AWS中创建和管理云基础架构。

你可以选择其他可用的Kubernetes集群部署解决方案

步骤1. 克隆脚本

git clone https://github.com/thingsboard/thingsboard-ce-k8s.git

cd ./aws

步骤2.生成ssh密钥

Kubeone需要ssh密钥才能访问ec2实例默认情况下terraform使用~/.ssh/id_rsa and ~/.ssh/id_rsa.pub。但是你可以将ssh密钥生成到任何文件夹并将此路径添加到terraform变量文件中。 生成ssh密钥请执行以下命令:

ssh-keygen

步骤3. AWS凭证

你还需要访问AWS它可以是IAM用户或IAM角色。你需要有一个AWS_ACCESS_KEY和AWS_SECRET_ACCESS_KEY。 添加环境变量请执行以下命令:

export AWS_PROFILE=default

export AWS_ACCESS_KEY=xxxxxxxxx

export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxx

步骤4.安装AWS云基础架构

初始化terraform工作目录请执行以下命令:

terraform init

创建terraform配置文件请执行以下命令:

nano terraform.tfvars

并添加以下示例配置:

cluster_name = "k8s-cluster-example"
aws_region = "eu-west-1"
control_plane_type = "t3.medium"

现在我们使用这个示例配置但是你可以在variables.tf中看到所有变量。

要查看将创建什么基础架构请执行以下命令:

terraform plan

要创建此基础结构请执行以下命令:

terraform apply

执行此命令后我们将具有创建k8s集群的基础结构对于kubeone我们需要生成具有所有资源ID的terraform输出文件,请执行以下命令:

terraform output -json > tf.state

生成kubeone的配置文件请执行以下命令:

kubeone config print --full > config.yml

你可以自己更改设置我们将使用默认配置。

要将ssh密钥添加到ssh代理,请执行以下命令:

ssh-add /path/to/your/id_rsa

要开始部署k8s集群请执行以下命令:

kubeone install config.yml -t tf.state

执行完此命令后你将在此目录$(pwd)/ 中创建一个具有三个主节点的k8s集群并为你的kubectl提供kubeconfig。

要为kubectl设置KUBECONFIG变量请执行以下命令:

export KUBECONFIG=$(pwd)/k8s-cluster-example-kubeconfig

并检查集群中的节点:

kubectl get nodes

对于管理工作者节点kubeone使用机器部署请执行以下命令:

kubectl get machinedeployments -n kube-system

要扩展你的worker节点请执行以下命令:

kubectl --namespace kube-system scale machinedeployment/$MACHINE-DEPLOYMENT-NAME --replicas=3

步骤5.查看架构页面

从ThingsBoard v2.2开始可以使用新的微服务架构和Docker容器安装ThingsBoard集群。

有关更多详细信息请参见微服务架构页面。

步骤6.Environment文件

回到根目录cd ../中。

.env文件中将PLATFORM字段值设置为aws

步骤7.配置数据库

在执行初始安装之前可以配置与ThingsBoard一起使用的数据库的类型。 设置数据库类型在.env文件中的DATABASE变量的值更改为以下值:

  • postgres - 使用PostgreSQL数据库;
  • hybrid - 使用PostgreSQL保存实体Cassandra时间序列数据;

注意:根据数据库类型将部署相应的kubernetes资源(请参阅basic/postgres.ymlhigh-availability/postgres-ha.yaml进行复制的postgrescommon/cassandra.yml有关详细信息)。

步骤8.选择部署类型

在执行初始安装之前你可以配置ThingsBoard部署的类型。

请将.env文件中的DEPLOYMENT_TYPE变量值更改为以下其中一个内容:

  • postgres - 使用PostgreSQL数据库;
  • hybrid - 使用PostgreSQL保存实体Cassandra时间序列数据;

注意:根据部署类型将部署相应的kubernetes资源(有关详细信息请参见basichigh-availability的内容)。

如果选择cassandra作为DATABASE则还可以配置Cassandra节点的数量(common/cassandra.yml配置文件中的StatefulSet.spec.replicas属性)和.env文件中的CASSANDRA_REPLICATION_FACTOR属性。建议有3个Cassandra节点的CASSANDRA_REPLICATION_FACTOR等于1。

注意: 如果你想配置CASSANDRA_REPLICATION_FACTOR请先阅读Cassandra文档。

另外要以high-availability部署模式运行PostgreSQL需要安装helm

步骤9.运行

执行以下命令以运行安装:

./k8s-install-tb.sh --loadDemo

说明:

  • --loadDemo - 可选参数是否安装演示数据。

执行以下命令来部署第三方资源:

./k8s-deploy-thirdparty.sh

如果是第一次在high-availabilityDEPLOYMENT_TYPE中运行ThingsBoard未配置Redis集群则在系统提示时输入‘yes’

执行以下命令以部署ThingsBoard资源:

./k8s-deploy-resources.sh

一段时间后当所有资源都将成功启动时可以使用负载均衡器的dns名称在浏览器中打开ThingsBoard Web界面。

可以使用以下命令查看负载均衡器的DNS名称:

kubectl get ingress -oyaml

或者在AWS ELB页面上看到此名称。

你应该看到ThingsBoard登录页面。

使用以下默认凭据:

  • System Administrator: sysadmin@thingsboard.org / sysadmin

如果使用演示数据(使用--loadDemo标志)安装了数据库则还可以使用以下凭据:

  • Tenant Administrator: tenant@thingsboard.org / tenant
  • Customer User: customer@thingsboard.org / customer

如有任何问题可以检查服务日志中是否有错误。 例如要查看ThingsBoard节点日志请执行以下命令:

1)获取正在运行的tb节点容器的列表:

kubectl get pods -l app=tb-node

2)获取tb节点容器的日志:

kubectl logs -f [tb-node-pod-name]

说明:

  • tb-node-pod-name - 从正在运行的tb-node pod列表中获得的tb-node pod名称。

使用kubectl get pods查看所有Pod的状态。 使用kubectl get services查看所有服务的状态。 使用kubectl get deployments来查看所有部署的状态。 有关详细信息请参见kubectl Cheat Sheet命令参考。

执行以下命令删除所有ThingsBoard微服务:

./k8s-delete-resources.sh

执行以下命令删除所有第三方微服务:

./k8s-delete-thirdparty.sh

执行以下命令删除所有资源(包括数据库):

./k8s-delete-all.sh

删除k8s集群和AWS资源你可以执行以下命令:

 kubeone reset config.yml -t tf.state
 terraform destroy

升级

如果需要数据库升级请执行以下命令:

 ./k8s-delete-resources.sh
 ./k8s-upgrade-tb.sh --fromVersion=[FROM_VERSION]
 ./k8s-deploy-resources.sh

说明:

  • FROM_VERSION - 从哪个版本开始升级关于fromVersion值请参见升级说明

下一步

  • 入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。

  • 设备连接 - 了解如何根据您的连接方式或解决方案连接设备。

  • 数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。

  • 数据处理 - 了解如何使用ThingsBoard规则引擎。

  • 数据分析 - 了解如何使用规则引擎执行基本的分析任务。

  • 硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。

  • 高级功能 - 了解高级ThingsBoard功能。

  • 开发指南 - 了解ThingsBoard中的贡献和开发。