官术网_书友最值得收藏!

2.4 部署端部分——EdgeX Foundry

EdgeX Foundry是一個由Linux Foundation托管的、供應商中立的開源項目,用于為IoT邊緣計算系統構建通用的開放框架。該項目的核心是一個互操作框架。該框架可以托管在與硬件和操作系統無關的平臺上,以實現組件的即插即用,從而加速IoT解決方案的部署。本節將對EdgeX Foundry的部署方式進行系統梳理,并對部署方式中的相關注意事項進行詳細說明,具體如表2-6所示。

表2-6 KubeEdge的部署方式和注意事項

063-01

需要說明的是,在本書云、邊、端協同的邊緣計算系統中,作為端解決方案的EdgeX Foundry是通過KubeEdge進行容器化部署的。但是,目前官方沒有提供通過KubeEdge對其進行容器化部署的相關說明,所以筆者根據本書的部署環境針對KubeEdge開發了一套yaml文件。

1)該yaml文件托管在GitHub上(https://GitHub.com/WormOn/edgecomputing/tree/master/end),可作為讀者學習參考的資料。

2)與通過KubeEdge進行容器化部署原理相同,讀者也可以參考yaml文件完成對EdgeX Foundry的部署。

2.4.1 以系統進程的方式部署EdgeX Foundry

以系統進程的方式部署EdgeX Foundry,即將EdgeX Foundry的各組件以系統進程的方式進行部署。本節對該方式進行展開說明。

1)獲取EdgeX Foundry源碼。

命令如下:

#git clone https://GitHub.com/EdgeX Foundry/edgex-go.git

2)基于源碼構建EdgeX Foundry各組件的二進制文件。

進入edgex-go源碼根目錄,命令如下:

#cd edgex-go

源碼編譯edgex-go,命令如下:

#make build

構建EdgeX Foundry各組件的二進制文件,具體如圖2-10所示。

064-01

圖2-10 構建EdgeX Foundry各組件的二進制文件

由圖2-10可知,會在./cmd下各組件子目錄里生成相應的可執行文件,比如config-seed的可執行文件會在./cmd/config-seed目錄下,具體如圖2-11所示。

064-02

圖2-11 源碼編譯edgex-go生成的可執行文件

3)運行EdgeX Foundry的各組件。

通過make命令一鍵運行edgex,命令如下:

#make run 

由圖2-12可知,make run是通過執行#cd bin && ./edgex-launch.sh命令將EdgeX Foundry的各組件以系統進程的方式運行起來的。下面看一下edgex-launch.sh的具體內容。

065-01

圖2-12 edgex-go一鍵啟動命令和輸出結果

打開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的內置命令exec將EdgeX Foundry的各組件以系統進程的方式運行起來。

2)通過一個while死循環將edgex-launch.sh以前臺駐留進程的方式駐留在前臺。

3)通過trap命令監聽EXIT信號,并在監聽到EXIT信號之后,調用clean函數殺掉EdgeX Foundry各組件以系統進程的方式運行起來的進程。

2.4.2 以容器化的方式部署EdgeX Foundry

以容器化方式部署EdgeX Foundry,即使用Docker-compose、Kubernetes和KubeEdge對EdgeX Foundry進行容器化部署。本節對使用Docker-compose部署EdgeX Foundry的步驟進行詳細說明。

1)獲取EdgeX Foundry源碼,命令如下:

#git clone https://GitHub.com/EdgeX Foundry/edgex-go.git

2)基于源碼構建EdgeX Foundry各組件的二進制文件。

①進入edgex-go源碼根目錄,命令如下:

#cd edgex-go

②源碼編譯edgex-go命令如下:

#make build

源碼編譯edgex-go具體如圖2-13所示。

068-01

圖2-13 源碼編譯edgex-go

由圖2-13可知,在./cmd下各組件子目錄里生成了相應的可執行文件,比如config-seed的可執行文件會在./cmd/config-seed目錄下,具體如圖2-14所示。

068-02

圖2-14 edgex-go源碼編譯結果

3)構建EdgeX Foundry各組件的鏡像。

使用Docker容器對edgex-go進行源碼編譯的命令如下:

# make docker

具體如圖2-15所示。

069-01

圖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文件的相關鏡像替換為最新鏡像,命令如下:

# vim docker-compose.yml

替換鏡像具體如圖2-16所示。

069-02

圖2-16 替換鏡像

5)運行EdgeX Foundry。

使用docker-compose啟動EdgeX Foundry,命令如下:

# docker-compose up -d

具體如圖2-17所示。

070-01

圖2-17 使用docker-compose啟動EdgeX Foundry

至此,通過docker-compose以容器化的方式運行EdgeX Foundry的相關步驟介紹也就結束了。

主站蜘蛛池模板: 丹凤县| 封开县| 平邑县| 苏尼特右旗| 城固县| 册亨县| 华阴市| 舞阳县| 唐山市| 萨迦县| 安庆市| 类乌齐县| 崇左市| 台东县| 开化县| 庆安县| 麟游县| 鱼台县| 永济市| 衡山县| 宁陕县| 大庆市| 盐亭县| 晋城| 大竹县| 高平市| 邳州市| 侯马市| 南部县| 梧州市| 类乌齐县| 清苑县| 朔州市| 东城区| 朝阳区| 明星| 慈溪市| 西平县| 象州县| 福建省| 铜山县|