安装

ThingsBoard安装和配置文档。

GCP集群配置

本指南将帮助你在Google云平台中以集群模式配置ThingsBoard。

先决条件

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

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

gcloud - 用于管理GCP基础架构。

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

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

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

步骤1.输入terraform工作目录

cd ./gcp

步骤2.GCP凭证和访问

访问GCP并登录请执行以下命令:

gcloud auth application-default login

获取项目ID:

gcloud projects list

设置项目k8s集群请执行以下命令:

gcloud config set project $your_project_id

步骤3.安装GCP云基础架构

创建服务帐户存储桶和k8s集群的规则请创建变量文件:

cat << EOF > terraform.tfvars
project     = "$your_project_id"
svca_name   = "$name_for_new_service_account"
bucket_name = "$bucket_name_for_kops"
vpc_name    = "$vpc_name"
EOF

初始化terraform状态请执行以下命令:

terraform init

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

terraform plan

创建基础架构k8s集群请执行以下命令:

terraform apply

此命令的输出中将拥有你的存储的名称和服务帐户电子邮件。

获取的服务帐户ID、电子邮件带有gcloud的名称请执行以下命令:

gcloud iam service-accounts list

创建服务帐户新的json密钥请执行以下命令:

gcloud iam service-accounts keys create --iam-account $serviceAccountEMAIL kops-cluster-gcp-key.json

导出创建的服务帐户json密钥的JSON文件内容请执行以下命令:

export GOOGLE_CREDENTIALS=$(cat ./kops-cluster-gcp-key.json)

创建k8s集群请执行以下命令:

PROJECT=$your_project_id
export KOPS_FEATURE_FLAGS=AlphaAllowGCE # to unlock the GCE features
kops create cluster kops-example-dev.k8s.local --zones=us-central1-a,us-central1-b,us-central1-c --gce-service-account $serviceAccountEMAIL --vpc $vpc_name --state gs://$bucket_name_for_kops/ --project=${PROJECT} --kubernetes-version=1.18.0 --node-count 3 --node-size n2-standard-4

高可用性集群请将此选项添加到最后一个命令中:

--master-count 3 --master-zones=us-central1-a,us-central1-b,us-central1-c --node-count 6 --node-size n2-standard-4

从bucket中获取k8s集群名称请执行以下命令:

kops get cluster --state gs://$bucket_name_for_kops/

将集群部署到gcp基础架构,请执行以下命令:

kops update cluster kops-example-dev.k8s.local --state gs://$bucket_name_for_kops/ --yes

检查集群的状态请执行以下命令:

kops validate cluster --wait 10m --state gs://$bucket_name_for_kops/

检查节点:

kubectl get ndoes

导出kubectl配置请执行以下命令:

kops export kubecfg kops-example-dev.k8s.local

步骤4.查看架构页面

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

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

步骤5.Environment文件

回到根目录cd ../中。

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

步骤6.配置数据库

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

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

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

步骤7.选择部署类型

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

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

  • basic - 使用Zookeeper,Kafka和Redis的单个实例启动;
  • high-availability - 在集群模式下使用Zookeeper,Kafka和Redis启动;

注意:根据部署类型将部署相应的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

步骤8.运行

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

./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集群和GCP资源请执行以下命令:

kops delete cluster kops-example-dev.k8s.local --state gs://$bucket_name_for_kops/ --yes
export GOOGLE_CREDENTIALS=""
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中的贡献和开发。