- 深入理解邊緣計算:云、邊、端工作原理與源碼分析
- 崔廣章
- 1445字
- 2021-06-24 11:28:40
2.4 部署端部分——EdgeX Foundry
EdgeX Foundry是一個由Linux Foundation托管的、供應(yīng)商中立的開源項目,用于為IoT邊緣計算系統(tǒng)構(gòu)建通用的開放框架。該項目的核心是一個互操作框架。該框架可以托管在與硬件和操作系統(tǒng)無關(guān)的平臺上,以實現(xiàn)組件的即插即用,從而加速IoT解決方案的部署。本節(jié)將對EdgeX Foundry的部署方式進行系統(tǒng)梳理,并對部署方式中的相關(guān)注意事項進行詳細說明,具體如表2-6所示。
表2-6 KubeEdge的部署方式和注意事項

需要說明的是,在本書云、邊、端協(xié)同的邊緣計算系統(tǒng)中,作為端解決方案的EdgeX Foundry是通過KubeEdge進行容器化部署的。但是,目前官方?jīng)]有提供通過KubeEdge對其進行容器化部署的相關(guān)說明,所以筆者根據(jù)本書的部署環(huán)境針對KubeEdge開發(fā)了一套yaml文件。
1)該yaml文件托管在GitHub上(https://GitHub.com/WormOn/edgecomputing/tree/master/end),可作為讀者學習參考的資料。
2)與通過KubeEdge進行容器化部署原理相同,讀者也可以參考yaml文件完成對EdgeX Foundry的部署。
2.4.1 以系統(tǒng)進程的方式部署EdgeX Foundry
以系統(tǒng)進程的方式部署EdgeX Foundry,即將EdgeX Foundry的各組件以系統(tǒng)進程的方式進行部署。本節(jié)對該方式進行展開說明。
1)獲取EdgeX Foundry源碼。
命令如下:
#git clone https://GitHub.com/EdgeX Foundry/edgex-go.git
2)基于源碼構(gòu)建EdgeX Foundry各組件的二進制文件。
進入edgex-go源碼根目錄,命令如下:
#cd edgex-go
源碼編譯edgex-go,命令如下:
#make build
構(gòu)建EdgeX Foundry各組件的二進制文件,具體如圖2-10所示。

圖2-10 構(gòu)建EdgeX Foundry各組件的二進制文件
由圖2-10可知,會在./cmd下各組件子目錄里生成相應(yīng)的可執(zhí)行文件,比如config-seed的可執(zhí)行文件會在./cmd/config-seed目錄下,具體如圖2-11所示。

圖2-11 源碼編譯edgex-go生成的可執(zhí)行文件
3)運行EdgeX Foundry的各組件。
通過make命令一鍵運行edgex,命令如下:
#make run
由圖2-12可知,make run是通過執(zhí)行#cd bin && ./edgex-launch.sh
命令將EdgeX Foundry的各組件以系統(tǒng)進程的方式運行起來的。下面看一下edgex-launch.sh的具體內(nèi)容。

圖2-12 edgex-go一鍵啟動命令和輸出結(jié)果
打開edgex-launch.sh:#vim edgex-go/bin/edgex-launch.sh
,具體如下所示。
#!/bin/bash # # Copyright (c) 2018 # Mainflux # # SPDX-License-Identifier: Apache-2.0 # ### # Launches all EdgeX Go binaries (must be previously built). # # Expects that Consul and MongoDB are already installed and running. # ### DIR=$PWD CMD=../cmd # Kill all edgex-* stuff function cleanup { pkill edgex } # disable secret-store integration export EDGEX_SECURITY_SECRET_STORE=false ### # Support logging ### cd $CMD/support-logging # Add `edgex-` prefix on start, so we can find the process family exec -a edgex-support-logging ./support-logging & cd $DIR ### # Core Command ### cd $CMD/core-command # Add `edgex-` prefix on start, so we can find the process family exec -a edgex-core-command ./core-command & cd $DIR ### # Core Data ### cd $CMD/core-data exec -a edgex-core-data ./core-data & cd $DIR ### # Core Meta Data ### cd $CMD/core-metadata exec -a edgex-core-metadata ./core-metadata & cd $DIR ### # Support Notifications ### cd $CMD/support-notifications # Add `edgex-` prefix on start, so we can find the process family exec -a edgex-support-notifications ./support-notifications & cd $DIR ### # System Management Agent ### cd $CMD/sys-mgmt-agent # Add `edgex-` prefix on start, so we can find the process family exec -a edgex-sys-mgmt-agent ./sys-mgmt-agent & cd $DIR # Support Scheduler ### cd $CMD/support-scheduler # Add `edgex-` prefix on start, so we can find the process family exec -a edgex-support-scheduler ./support-scheduler & cd $DIR trap cleanup EXIT while : ; do sleep 1 ; done
edgex-launch.sh主要做了3件事。
1)通過shell的內(nèi)置命令exec將EdgeX Foundry的各組件以系統(tǒng)進程的方式運行起來。
2)通過一個while死循環(huán)將edgex-launch.sh以前臺駐留進程的方式駐留在前臺。
3)通過trap命令監(jiān)聽EXIT信號,并在監(jiān)聽到EXIT信號之后,調(diào)用clean函數(shù)殺掉EdgeX Foundry各組件以系統(tǒng)進程的方式運行起來的進程。
2.4.2 以容器化的方式部署EdgeX Foundry
以容器化方式部署EdgeX Foundry,即使用Docker-compose、Kubernetes和KubeEdge對EdgeX Foundry進行容器化部署。本節(jié)對使用Docker-compose部署EdgeX Foundry的步驟進行詳細說明。
1)獲取EdgeX Foundry源碼,命令如下:
#git clone https://GitHub.com/EdgeX Foundry/edgex-go.git
2)基于源碼構(gòu)建EdgeX Foundry各組件的二進制文件。
①進入edgex-go源碼根目錄,命令如下:
#cd edgex-go
②源碼編譯edgex-go命令如下:
#make build
源碼編譯edgex-go具體如圖2-13所示。

圖2-13 源碼編譯edgex-go
由圖2-13可知,在./cmd下各組件子目錄里生成了相應(yīng)的可執(zhí)行文件,比如config-seed的可執(zhí)行文件會在./cmd/config-seed目錄下,具體如圖2-14所示。

圖2-14 edgex-go源碼編譯結(jié)果
3)構(gòu)建EdgeX Foundry各組件的鏡像。
使用Docker容器對edgex-go進行源碼編譯的命令如下:
# make docker
具體如圖2-15所示。

圖2-15 使用Docker容器對edgex-go進行源碼編譯
4)獲取運行EdgeX Foundry各組件的docker-compose.yml文件,命令如下:
#curl -s -o docker-compose.yml https://raw.GitHubusercontent.com/EdgeX Foundry/developer-scripts/master/releases/edinburgh/compose-files//docker-compose-edinburgh-no-secty-1.0.1.yml
將docker-compose.yml文件的相關(guān)鏡像替換為最新鏡像,命令如下:
# vim docker-compose.yml
替換鏡像具體如圖2-16所示。

圖2-16 替換鏡像
5)運行EdgeX Foundry。
使用docker-compose啟動EdgeX Foundry,命令如下:
# docker-compose up -d
具體如圖2-17所示。

圖2-17 使用docker-compose啟動EdgeX Foundry
至此,通過docker-compose以容器化的方式運行EdgeX Foundry的相關(guān)步驟介紹也就結(jié)束了。
- 雷達目標特性及MATLAB仿真
- RFID重大工程與國家物聯(lián)網(wǎng)(第4版)
- 液晶顯示器維修實踐技術(shù)
- 移動互聯(lián)網(wǎng):原理、技術(shù)與應(yīng)用
- 華為路由器學習指南
- 電子設(shè)備人機工程設(shè)計及應(yīng)用
- 手機軟件平臺架構(gòu)解析
- 電子技術(shù)(第3版)
- Cloud-Native Applications in Java
- 特高壓實踐:GIL綜合管廊的建設(shè)與維護
- 高速目標長時間相參積累信號處理
- 數(shù)字圖像處理(MATLAB版)(第2版)
- 移動通信技術(shù)與設(shè)備(第2版)
- 看圖識電子小制作
- 基于硬件邏輯加密的保密通信系統(tǒng)