产品定价 立即试用
PE边缘
安装 > 本地部署 > Edge集群部署
入门 文档
架构 API 常见问题
目录

Edge 集群部署

自 TB Edge 版本 4.0.1 起可用

概述

Edge clustering(Edge集群) 指将多个 Edge节点 连接并编组成集群,在 网络边缘 协同工作。 集群适用于大规模工业物联网、智慧城市、工厂或单区域数千设备的场景。

Edge特定注意事项:

  • 所有 Edge节点 连接到 同一数据库
  • Devices 可根据负载均衡连接到任意节点。
  • Edge节点 共享工作负载并具备本地故障转移能力。
  • Edge Cluster 会将聚合数据同步到 ThingsBoard Cloud

edge-cluster

更多详情请参阅微服务架构页面。

前置条件

ThingsBoard 微服务在 Docker环境 中运行。 开始前,请确保系统已安装 Docker CEDocker Compose

安装 Docker:

文档警告图标

不要忘记将 Linux 用户加入 docker 用户组。参见 以非 root 用户管理 Docker

步骤1. 拉取ThingsBoard Edge镜像

登录 Docker Hub并使用命令拉取镜像:

1
docker pull thingsboard/tb-edge-pe:4.3.0.1EDGEPE

步骤2. 克隆ThingsBoard PE Docker compose脚本

1
2
git clone -b release-4.0.0 https://github.com/thingsboard/thingsboard-edge-pe-docker-compose.git tb-edge-pe-docker-compose --depth 1
cd tb-edge-pe-docker-compose

步骤3. 配置ThingsBoard Edge数据库和队列服务

在执行初始安装前,配置 ThingsBoard Edge 使用的数据库类型。要设置数据库类型,请修改 环境文件 (.env) 中的 DATABASE 变量值。

ThingsBoard Edge 目前支持两种用于存储消息的消息系统/代理:

  • In Memory 队列实现不适用于任何类型的集群部署。
  • Kafka 推荐用于生产部署,且为默认选项。该队列类型已广泛用于ThingsBoard生产环境。

要编辑 ThingsBoard Edge .env 文件,请运行以下命令:

1
nano .env

检查以下行:

1
2
3
4
5
6
DATABASE=postgres
TB_QUEUE_TYPE=kafka

CLOUD_ROUTING_KEY=PUT_YOUR_EDGE_KEY_HERE # e.g. 19ea7ee8-5e6d-e642-4f32-05440a529015
CLOUD_ROUTING_SECRET=PUT_YOUR_EDGE_SECRET_HERE # e.g. bztvkvfqsye7omv9uxlp
CLOUD_RPC_HOST=PUT_YOUR_THINGSBOARD_SERVER_DOMAIN_OR_IP_HERE # e.g. thingsboard.cloud

查看完整 .env 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# redis or redis-cluster or redis-sentinel
CACHE=redis

DOCKER_REPO=thingsboard
TB_EDGE_NODE_DOCKER_NAME=tb-edge-pe-node
TB_EDGE_VERSION=latest# Database used by ThingsBoard, can be either postgres (PostgreSQL) or hybrid (PostgreSQL for entities database and Cassandra for timeseries database).
# According to the database type corresponding docker service will be deployed (see docker-compose.postgres.yml, docker-compose.hybrid.yml for details).

DATABASE=postgres
TB_QUEUE_TYPE=kafka

CLOUD_ROUTING_KEY=PUT_YOUR_EDGE_KEY_HERE # e.g. 19ea7ee8-5e6d-e642-4f32-05440a529015
CLOUD_ROUTING_SECRET=PUT_YOUR_EDGE_SECRET_HERE # e.g. bztvkvfqsye7omv9uxlp
CLOUD_RPC_HOST=thingsboard.cloud
CLOUD_RPC_PORT=7070
CLOUD_RPC_SSL_ENABLED=trueLOAD_BALANCER_NAME=haproxy-certbot

# If enabled Prometheus and Grafana containers are deployed along with other containers
MONITORING_ENABLED=false

# Limit memory usage for each Java application
JAVA_OPTS="-Xmx2048M -Xms2048M -Xss384k -XX:+AlwaysPreTouch"
  • CACHE: 设置缓存类型:
    • redis: 设置 redis 以使用Redis单机缓存(1节点 - 1主节点)。
    • redis-cluster: 设置 redis-cluster 以使用Redis集群缓存(6节点 - 3主节点,3从节点)。
    • redis-sentinel: 设置 redis-sentinel 以使用Redis Sentinel缓存(3节点 - 1主节点,1从节点,1哨兵)。
  • DATABASE:database 值替换为:
    • postgres: 设置 postgres 以使用 PostgreSQL 数据库。
    • hybrid: 设置 hybrid 以使用 PostgreSQL 作为实体数据库,Cassandra 作为时序数据库。
  • TB_QUEUE_TYPE: 使用 kafka 作为队列类型。集群部署不支持 in-memory 值。
  • CLOUD_ROUTING_KEY: 填入您的Edge key。
  • CLOUD_ROUTING_SECRET: 填入您的Edge secret。
  • CLOUD_RPC_HOST: 若将 Edge 连接到 ThingsBoard Cloud (北美)/ThingsBoard Cloud (欧洲地区),使用 thingsboard.cloud / eu.thingsboard.cloud;若连接到 ThingsBoard PE Platform 的机器,则使用 IP地址
  • MONITORING_ENABLED: 要使用 Grafana 和/或 Prometheus 服务启动集群监控,请将变量设为 true

    请在此文章中了解如何 启用下行消息监控

文档信息图标

部署后,您可在 http://localhost:9090 访问 Prometheus,在 http://localhost:3000 访问 Grafana
本地安装的默认凭据为:

  • Login: admin
  • Password: foobar

步骤4. 创建并检查所需主机卷

执行以下命令为服务创建日志文件夹,并将这些文件夹的 chown 权限授予 docker 容器用户。 要更改用户,需使用 chown 命令,该命令需要 sudo 权限(脚本将提示输入 sudo 密码):

文档警告图标

对于使用 同步文件共享功能 的 MacOS Docker Desktop 用户(默认对 /Users 子目录启用):

请注意,您需要跳过更改主机卷所有权,因为虚拟化引擎会自动解析。

对 create 和 check 脚本均使用 --skipChown 标志:

./docker-create-log-folders.sh --skipChown

./docker-check-log-folders.sh --skipChown

1
./docker-create-log-folders.sh

检查所有必需的卷文件夹是否可用且具有正确的所有权:

1
./docker-check-log-folders.sh

步骤5. 安装并运行ThingsBoard Edge

要运行安装,请执行以下命令:

1
./docker-install-tb.sh

要启动服务,请执行以下命令:

1
./docker-start-services.sh
文档信息图标

服务启动需要几分钟。所有服务成功启动后,在浏览器中打开 ThingsBoard Edge 服务,地址为 http://{your-host-ip}例如 http://localhost)。 请使用 ThingsBoard 账户的 凭据 登录。

如有问题,请检查edge服务日志中的错误。要查看 ThingsBoard Edge 节点日志,请执行以下命令:

1
docker-compose logs -f tb-edge1 tb-edge2 tb-edge3

要查看所有容器的状态,请使用:

1
docker-compose ps

要检查所有运行中服务的日志,请使用:

1
docker-compose logs -f

详见 docker-compose logs 命令参考。

停止并移除Docker容器

要停止服务,请使用:

1
./docker-stop-services.sh

要停止并完全移除已部署的Docker容器,请运行:

1
./docker-remove-services.sh

升级

要更新特定或所有服务(拉取更新的docker镜像并重建容器):

1
./docker-update-service.sh [SERVICE...]

其中:

  • [SERVICE…]: 要更新的服务列表(在docker-compose配置中定义)。若未指定,将更新所有服务。

要升级数据库,请运行以下命令:

1
2
3
./docker-stop-services.sh
./docker-upgrade-tb.sh
./docker-start-services.sh

生成HTTPS证书

我们使用 HAproxy 代理容器流量,Web UI默认使用 80443 端口。要使用有效证书启用HTTPS,请运行以下命令:

1
2
docker exec haproxy-certbot certbot-certonly --domain your_domain --email your_email
docker exec haproxy-certbot haproxy-refresh

只有通过域名访问Web UI时才会使用有效证书。 若使用IP地址访问UI,将使用自签名证书。

下一步

  • Getting started guide(入门指南)- 快速概览 ThingsBoard Edge 主要功能。预计 15–30 分钟完成:

  • Installation guides(安装指南)- 了解如何在各种操作系统上安装 ThingsBoard Edge 并连接到 ThingsBoard Server。

  • Edge 规则引擎:

  • 安全:
    • gRPC over SSL/TLS - 了解如何为 Edge 与云端之间的通信配置 gRPC over SSL/TLS。
  • 功能:

    • Edge Status(Edge 状态)- 了解 ThingsBoard Edge 上的 Edge Status 页面。

    • Cloud Events(云端事件)- 了解 ThingsBoard Edge 上的 Cloud Events 页面。

  • 使用场景:

  • Roadmap(路线图)- ThingsBoard Edge 路线图。