基於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多雲管理實現中心到多地邊緣計算平臺的統一管控。

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