ThingsBoard 安装与运维

本文详细介绍了如何使用Docker Compose在4个节点上部署ThingsBoard物联网系统,重点讨论了部署架构、关键配置以及日常运维操作。推荐采用Docker Compose方式,而非K8S,以简化部署流程。内容涵盖微服务分布、配置详解、初始化、运维指令等。
摘要由CSDN通过智能技术生成

引言:

ThingsBoard是乌克兰一个团队开发的物联网系统,其功能和性能在业内口碑极佳,国内较多公司基于ThingsBoad搭建自己的物联网系统。为了能使大家更好的了解和使用该系统而写作本文,希望能对大家有所帮助!

ThingsBoard的部署模式包括单节点部署和微服务方式部署,微服务方式部署大概又分为3种方式:

  • 主机或容器方式部署;
  • Docker Compose方式部署;
  • K8S方式部署;

物联网平台其运行环境一般属于稳态环境,流量比较规律,运行于其上的业务系统也比较成熟,因此K8S系统的缩扩容、熔断、限流等和运维相关的大部分功能使用频率极低。如果采用K8S系统作为物联网PAAS层的基础,对运维的要求较高,且应用系统要做相关的迁移改造,ROI太低。除非引入基于K8S的PAAS平台是企业架构演进的一步工作,否则单个物联网系统或基于物联网的业务应用(比如智慧楼宇应用),并不建议采用K8S方式部署。而主机或容器方式部署,相比较于Docker Compose方式部署自动化程度较低,因此建议采用Docker Compose方式部署。

本文通过在4个节点上部署ThingsBoard物联网系统,作为讲解采用Docker Compose方式部署ThingsBoard的例子,该例子中ThingsBoard物联网系统的版本为PE 3.2.2。本文先介绍4节点例子的部署架构,通过讲解ThingBoard基于微服务的技术架构,使读者了解ThingsBoard所包含的微服务。基于上述的理解,再讲解4节点部署架构下,各微服务在各节点的分布情况。第二章详细讲解ThingsBoard系统的配置。第三章从初始化、常用指令、启动顺序等方面,详细讲解ThingsBoard如何运维。

4结点布署设计

ThingsBoard微服务架构图(图片来自ThingsBoard官网)

上图为ThingsBoard物联网系统微服务架构图,其中深蓝色部分为ThingsBoard物联网系统的核心微服务,分别为Transport、UI、Rule Engine、Core以及在图上没有展示的Js Excecutor微服务。除了核心的几个微服务外,还包括为核心微服务提供基础服务的几个技术组件类微服务,它们分别是:

  1. 用于数据存储的PostgreSQL数据库(SQL database类)微服务、Cassandra数据库(NoSQL DataBase 类)微服务,以及在图上没有展示的Redis(缓存数据库类)微服务;
  2. 用于实现消息发布订阅的消息队列Kafka微服务;
  3. 用于共享配置以及其它功能的Zookeeper微服务(上图未展示);
  4. 用于提供负载均衡功能的微服务(上图未展示);

4节点部署架构图

本文通过一个4节点的部署案例,来举例解释ThingsBoard的部署。各节点运行的微服务分配情况,如上图所列。其中,ThingsBoard官网提供的例子中,使用HAProxy实现负载均衡功能,由于本人相比较而言更了解Nginx,因此用Nginx替代HAProxy。

系统配置详解

Docker Compose配置关键点说明

在这里先介绍ThingsBoard系统的Docker Compose配置文件中的一些关键配置点,通过了解这些关键配置点,便于更好的了解如何利用Docker Compose和Docker容器的功能,为应用系统提供运行环境相关的基础支持。

一、本机目录挂载

在docker-compose.yml文件中,通过配置目录映射达到实现下述功能:

1.将文件保存在服务器本地,容器重启后数据不丢失,比如将服务器目录映射到PostgeSQL数据库容器,用于保存数据库文件到服务器目录;

volumes:
  - ./tb-node/postgres/data:/var/lib/postgresql/data

2.将配置文件通过目录映射,加载到容器中,实现修改运行在容器内系统的配置,比如:

volumes:
  - ./tb-node/conf:/config

3.将修改后代码通过Jar包映射到容器内,实现修改后的应用代码发布功能,比如:

 volumes:
   - ./tb-node/tb-core:/usr/share/thingsboard/bin

二、时区设置

容器在运行时默认时区不一定是我们期望的时区,如果时区不正确,将可能造成数据记录、打印的日志等和时间相关的信息不正确。在docker-compose.yml文件中,通过配置可以实现让容器在指定时区运行,比如:

    environment:
      TZ: Asia/Shanghai

三、端口和主机网络

容器运行期间需要将端口映射到本地服务器或直接和本地服务器用同一个网络,可通过在docker-compose.yml文件中做下列三种配置方式实现:

1.将容器某端口映射到主机服务器指定端口,比如:

ports:
      -  "8088:8080"

2.将容器端口映射到主机服务器任意端口,比如:

ports:
      - "8080"

3.容器和主机共用网络,比如:

network_mode: "host"

四、容器内添加hosts域名解析

在没有DNS情况下,需要通过添加hosts主机域名解析替代DNS功能,实现通过域名加端口号访问服务,而不是通过IP地址加端口访问服务。在docker-compose.yml文件中,通过下列配置实现向容器内添加hosts域名解析:

    extra_hosts:
      - "iot.node6:192.168.64.6"
      - "iot.node7:192.168.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值