隨着時代的發展與科學技術的不斷進步,雲計算、物聯網技術等也獲得迅猛的發展和進步,物聯網雖起源於傳媒領域,然已在各行各業獲得深刻的應用; 在雲計算與物聯網共同協做下將採集到的數據進行精準應用,惠及社會,促進國家繁榮發展。在將來隨着5G的正式商用物聯網技術將會愈來愈廣泛,真正作到萬物互聯。前端
本文將介紹基於國內首個自主研發非OpenStack體系的私有云產品ZStack來構建物聯網平臺。java
ZStack是下一代開源的雲計算IaaS(基礎架構即服務)軟件。它主要面向將來的智能數據中心,經過提靈活完善的APIs來管理包括計算、存儲和網絡在內的數據中心資源。用戶能夠利用ZStack快速構建本身的智能雲數據中心,也能夠在穩定的ZStack之上搭建靈活的雲應用場景。git
ZStack產品優點:github
ZStack是基於專有云平臺4S(Simple簡單,Strong健壯,Scalable彈性,Smart智能)標準設計的下一代雲平臺IaaS軟件。sql
1. 簡單(Simple)數據庫
• 簡單安裝部署:提供安裝文件網絡下載,30分鐘完成從裸機到雲平臺的安裝部署。vim
• 簡單搭建雲平臺:支持雲主機的批量(生成,刪除等)操做,提供列表展現和滑窗詳情。後端
• 簡單實用操做:詳細的用戶手冊,足量的幫助信息,良好的社區,標準的API提供。bash
• 友好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.1架構描述
上圖中則是基於ZStack全線產品組合造成的全套架構體現,實現邊緣到中心統一管理、統一佈局的優勢;同時每一層都有獨特的功能。具體架構描述以下:
邊緣計算則是將ZStackMini部署在靠近物聯網設備或數據源頭的一側;利用ZStackMini提供的基礎資源執行對前端物聯網設備採集到的數據進行處理;處理後的數據能夠暫存到Mini提供的存儲中結合應用實現就近調取數據提供給應用層,從而實現數據處理到數據應用在邊緣端便可完成。同時根據物聯網平臺數據抽取方式將處理後的數據匯聚到物聯網平臺層作更進一步的數據分析與應用。
IaaS雲平臺則採用ZStack企業版構建簡單、健壯、彈性、智能的基礎資源提供平臺,爲上層物聯網平臺提供堅實的底座。在ZStackIaaS雲平臺之上構建物聯網平臺可減小物理資源的浪費,同時又能保障很是好的靈活性;以ZStack企業版爲底座不光可以構建物聯網平臺,同時也能構建一系列應用平臺。
利用ZStack多雲管理平臺可實現對IaaS層雲平臺的統一管理,經過使用ZStack多雲管理平臺可對ZStack企業版進行管理,同時也能對基於ZStackMini構建的邊緣計算點管理。在管理網可達的狀況下實現多處部署統一管理方式大大減輕管理運維人員工做負擔。
物聯網平臺則是基於ZStack IaaS雲平臺提供的一系列雲主機構建的平臺,提供對物聯網設備的管理、接收來自邊緣計算處理後的數據進行數據分析、數據存儲等功能。
本文中物聯網平臺部署則是採用ThingsBoard; 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 install java-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
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
export SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
export SPRING_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默認系統管理員帳號密碼爲: sysadmin@thingsboard.org/ 密碼:sysadmin
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多雲管理實現中心到多地邊緣計算平臺的統一管控。