基于ZStack构建物联网平台

作者: 朱天顺

一、前言

随着时代的发展与科学技术的不断进步,云计算、物联网技术等也得到迅猛的发展和进步,物联网虽起源于传媒领域,然已在各行各业得到深入的应用;在云计算与物联网共同协作下将采集到的数据进行精准应用,惠及社会,促进国家繁荣发展。在未来随着5G的正式商用物联网技术将会越来越普遍,真正做到万物互联。

本文将介绍基于国内首个自主研发非OpenStack体系的私有云产品ZStack来构建物联网平台。

二、ZStack简介

ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。它主要面向未来的智能数据中心,通过提灵活完善的APIs来管理包括计算、存储和网络在内的数据中心资源。用户可以利用ZStack快速构建自己的智能云数据中心,也可以在稳定的ZStack之上搭建灵活的云应用场景。
在这里插入图片描述
ZStack产品优势:

ZStack是基于专有云平台4S(Simple简单,Strong健壮,Scalable弹性,Smart智能)标准设计的下一代云平台IaaS软件。

1.简单(Simple)

• 简单安装部署:提供安装文件网络下载,30分钟完成从裸机到云平台的安装部署。

• 简单搭建云平台:支持云主机的批量(生成,删除等)操作,提供列表展示和滑窗详情。

• 简单实用操作:详细的用户手册,足量的帮助信息,良好的社区,标准的API提供。

• 友好UI交互:设计精良的专业操作界面,精简操作实现强大的功能。

2.健壮(Strong)

• 稳定且高效的系统架构设计:拥有全异步的后台架构,进程内微服务架构,无锁架构,无状态服务架构,一致性哈希环,保证系统架构的高效稳定。目前已实现:单管理节点管理上万台物理主机、数十万台云主机;而多个管理节点构建的集群使用一个数据库、一套消息总线可管理十万台物理主机、数百万台云主机、并发处理数万个API。

• 支撑高并发的API请求:单ZStack管理节点可以轻松处理每秒上万个并发API调用请求。

• 支持HA的严格要求:在网络或节点失效情况下,业务云主机可自动切换到其它健康节点运行;利用管理节点虚拟化实现了单管理节点的高可用,故障时支持管理节点动态迁移。

3.弹性(Scalable)

• 支撑规模无限制:单管理节点可管理从一台到上万台物理主机,数十万台云主机。

• 全API交付:ZStack提供了全套IaaS API,用户可使用这些APIs完成全新跨地域的可用区域搭建、

网络配置变更、以及物理服务器的升级。

• 资源可按需调配:云主机和云存储等重要资源可根据用户需求进行扩缩容。ZStack不仅支持对云主

机的CPU、内存等资源进行在线更改,还可对云主机的网络带宽、磁盘带宽等资源进行动态调整。

4.智能(Smart)

• 自动化运维管理:在ZStack环境里,一切由APIs来管理。ZStack利用Ansible库实现全自动部署和

升级,自动探测和重连,在网络抖动或物理主机重启后能自动回连各节点。其中定时任务支持定时

开关云主机以及定时对云主机快照等轮询操作。

• 在线无缝升级:5分钟一键无缝升级,用户只需升级管控节点。计算节点、存储节点、网络节点在

管控软件启动后自动升级。

• 智能化的UI交互界面:实时的资源计算,避免用户误操作。

• 实时的全局监控:实时掌握整个云平台当前系统资源的消耗情况,通过实时监控,智能化调配,从

而节省IT的软硬件资源。

三、构建物联网平台

3.1平台融合架构
在这里插入图片描述

3.1.1架构描述

上图中则是基于ZStack全线产品组合形成的全套架构体现,实现边缘到中心统一管理、统一布局的优点;同时每一层都有独特的功能。具体架构描述如下:

Ø 边缘计算

边缘计算则是将ZStackMini部署在靠近物联网设备或数据源头的一侧;利用ZStackMini提供的基础资源执行对前端物联网设备采集到的数据进行处理;处理后的数据可以暂存到Mini提供的存储中结合应用实现就近调取数据提供给应用层,从而实现数据处理到数据应用在边缘端即可完成。同时根据物联网平台数据抽取方式将处理后的数据汇聚到物联网平台层做更进一步的数据分析与应用。

Ø IaaS云平台

IaaS云平台则采用ZStack企业版构建简单、健壮、弹性、智能的基础资源提供平台,为上层物联网平台提供坚实的底座。在ZStackIaaS云平台之上构建物联网平台可减少物理资源的浪费,同时又能保障非常好的灵活性;以ZStack企业版为底座不光能够构建物联网平台,同时也能构建一系列应用平台。

Ø ZStack多云管理

利用ZStack多云管理平台可实现对IaaS层云平台的统一管理,通过使用ZStack多云管理平台可对ZStack企业版进行管理,同时也能对基于ZStackMini构建的边缘计算点管理。在管理网可达的情况下实现多处部署统一管理方式大大减轻管理运维人员工作负担。

Ø 物联网平台

物联网平台则是基于ZStack IaaS云平台提供的一系列云主机构建的平台,提供对物联网设备的管理、接收来自边缘计算处理后的数据进行数据分析、数据存储等功能。

3.2物联网平台部署
本文中物联网平台部署则是采用ThingsBoard; ThingsBoard是一个开源的物联网平台,可以实现物联网项目的快速开发,管理和扩展。

3.2.1部署环境
硬件配置
在这里插入图片描述云主机
在这里插入图片描述
3.2.2部署ThingsBoard平台
Ø 创建云主机
在这里插入图片描述
在这里插入图片描述
Ø 部署环境准备

1.准备epel源

#yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2.安装Java8

ThingsBoard服务在Java 8上运行;按照下列步骤安装OpenJDK8;

#yum installjava-1.8.0-openjdk -y

按照下列操作将操作系统配置为默认使用OpenJDK8;

#update-alternatives --config java

检查当前Java版本

#java -version
在这里插入图片描述

3.下载ThingsBoard安装包

在下载的过程中可以加上-c参数实现断点续传。

#wget -c https://github.com/thingsboard/thingsboard/releases/download/v2.4/thingsboard-2.4.rpm

Ø 部署ThingsBoard管理平台

1.安装ThingsBoard

#rpm -Uvh thingsboard-2.4.rpm
在这里插入图片描述
2.安装ThingsBoard数据库

ThingsBoard支持使用SQL或混合数据库方式,可根据负载情况进行选择,当前测试环境采用PostgreSQL即可满足需求;

准备PostgreSQL repo源

#yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装PostgreSQL

#yum install postgresql96-server postgresql96-contrib -y

初始化PostgreSQL DB

#/usr/pgsql-9.6/bin/postgresql96-setup initdb
在这里插入图片描述
启动PostgreSQL并设置为开机自启动

#systemctl start postgresql-9.6

#systemctl enable postgresql-9.6

安装PostgreSQL后,还需要为postgres这个用户设置密码

#su – postgres

-bash-4.2$ psql

postgres=# \password

Enter new password: #输入设置密码

Enter it again: #再次输入设置密码

postgres=# \q

-bash-4.2$

然后按“Ctrl + D”返回主控制台;配置密码后,编辑pg_hba.conf以使用postgres用户进行MD5身份验证。

#vim /var/lib/pgsql/9.6/data/pg_hba.conf
在这里插入图片描述
替换ident为md5,修改完成后:wq退出并保存,然后重启PostgreSQL服务。

#systemctl restart postgresql-9.6.service

创建thingsboard DB

#psql -U postgres -d postgres -h 127.0.0.1 -W #需要输入为postgres设置的密码才能进数据库

postgres=# CREATE DATABASE thingsboard;

postgres=# \q

​​

3.ThingsBoard配置

编辑ThingsBoard配置文件:

#vim /etc/thingsboard/conf/thingsboard.conf

在该配置文件下加入以下内容,加入后:wq保存退出;

#DB连接配置

export DATABASE_ENTITIES_TYPE=sql

export DATABASE_TS_TYPE=sql

exportSPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect

export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver

exportSPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard

export SPRING_DATASOURCE_USERNAME=postgres

export SPRING_DATASOURCE_PASSWORD=password
在这里插入图片描述
运行DemoData安装脚本

#/usr/share/thingsboard/bin/install/install.sh –loadDemo
在这里插入图片描述
4.启动ThingsBoard服务

默认情况下ThingsBoardUI可在8080端口上访问,确保8080端口可通过防火墙访问;CentOS7.4默认使用firewall管理端口方面的访问权限,可使用下面命令进行放行8080端口。

#firewall-cmd --zone=public --add-port=8080/tcp –permanent

#firewall-cmd –reload

设置好防火墙规则后执行下面命令启动ThingsBoard服务,同时设置为开机自启动。

#systemctl start thingsboard.service

#systemctl enable thingsboard.service

ThingsBoard日志存储在以下目录中:

/var/log/thingsboard

服务启动后可使用以下命令检查后端是否有任何错误:

cat /var/log/thingsboard/thingsboard.log | grep ERROR

http://IP:8080

访问ThingsBoard UI管理界面:
在这里插入图片描述
ThingsBoard默认系统管理员账号密码为: [email protected]/ 密码:sysadmin

3.2.3部署物联网网关

1.安装Java8

ThingsBoard-Gateway服务在Java 8上运行;按照下列步骤安装OpenJDK8;

#yum install java-1.8.0-openjdk -y

按照下列操作将操作系统配置为默认使用OpenJDK8;

#update-alternatives --config java

检查当前Java版本

#java -version

2.下载安装包

#wget -c https://github.com/thingsboard/thingsboard-gateway/releases/download/2.2.1rc/tb-gateway-2.2.1rc.rpm

3.安装网关服务

#rpm -Uvh tb-gateway-2.2.1rc.rpm
在这里插入图片描述
4. 服务启动

#systemctl start tb-gateway.service

#systemctl enable tb-gateway.service #实现开机启动

四、物联网平台应用

在上面章节中已将物联网平台搭建好,即可在平台上构建各种物联网应用;在当前连接一个温湿度传感器,将采集到的温湿度数据图形化实时展示出来,作为一个简单的应用场景演示。;

数据采集设备:树莓派、DHT22

添加设备:
在这里插入图片描述
添加仪表盘:
在这里插入图片描述
最终实现的效果:
在这里插入图片描述
其实ThingsBoard还有很多好玩的功能,由于篇幅有限不能一一例举出来,剩下的功能还请各位小伙伴们一起来玩。

总结

通过在ZStack云产品上构建物联网平台,并进行简单应用场景的展示;虽使用开源的物联网平台,但也充分证明了在ZStack平台上构建物联网平台是可行的。结合ZStackMini构建边缘计算节点,能充分发挥物联网应用中的数据分析处理,将数据中心计算压力较大的数据分析处理型业务下沉到边缘计算节点上,将采集到的数据在边缘即可完成处理,大大缩减中心平台的计算压力。同时采用ZStackCMP多云管理实现中心到多地边缘计算平台的统一管控。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章