进程模式节点
1、功能简介
节点是边缘设备在云端的映射,云端一个节点代表一个边缘系统,边缘系统可以是单机场景下的单台设备,也可以是由多台设备构成的集群。通过在云端创建节点,在边缘设备完成节点安装后,就可以对边缘设备进行管理。此外,还可以在云端查看已有节点,编辑节点信息,删除节点。
节点分为容器模式和进程模式,本章主要介绍进程模式的节点。进程模式针对非容器化运行模式需求设计,主要面向能力差或不支持容器化的工业网关。当节点以进程模式运行时,应用直接在宿主机运行,而不是运行在容器中,程序运行环境和宿主机环境不隔离。
2、进程模式的程序运行环境说明
2.1 工作目录
通过程序运行路径隔离,让不同的程序跑在各自的目录下,从而实现跟容器模式类似的应用隔离的效果。进程模式边缘应用的工作目录格式规范如下:
/var/lib/baetyl/run/{namespace}/{app-name}/{app-version}/{service-name}/{instance-id}
以baetyl-core为例,对应的一个具体工作目录示例如下:
/var/lib/baetyl/run/baetyl-edge-system/baetyl-core-uhzm5j2b6/1647231233ubrkqx/baetyl-core/1
2.2 安装目录
2.2.1 Linux操作系统
- baetyl程序:/usr/local/bin/baetyl
- baetyl配置目录:/var/lib/baetyl/
2.2.2 windows操作系统
- baetyl程序:C:\baetyl\bin\baetyl.exe
- baetyl配置目录:C:\baetyl\
2.3 配置映射
配置项映射会将配置文件放到程序运行的工作目录下。比如,假定配置项映射为nginx-conf:/etc/nginx
,则会把nginx-conf
配置项的数据转成文件放置到如下目录当中:
/var/lib/baetyl/run/{namespace}/{app-name}/{app-version}/{service-name}/{instance-id}/etc/nginx/
针对大文件的处理略有不同,因为大文件在端云同步时就已经下载到宿主机磁盘上,位于/var/lib/baetyl/object/
目录下,为了减少文件拷贝和空间占用,对于支持软链接的系统(Windows、Ubuntu、Debain、CentOS等)会采用软链接的方式,不支持的情况下才使用硬拷贝方式。
3、云端
3.1 边缘节点创建
在边缘节点页面切换进程模式后,点击创建节点,进入节点创建页面,完成必要输入后点击下一步。
- 名称:节点名称,不可为空,不可重复
- 描述:描述可以为空
- 标签:对节点进行标识,用于关联应用,可以不绑定标签,也可以绑定多个标签
- 认证方式:节点端云同步使用证书(强制)
- 选择官方模块:根据自身需要勾选所需的系统模块,勾选后将创建对应资源并在部署时进行安装。
点击 创建 完成节点创建后,可以在节点列表看到已创建节点。
3.2 边缘节点删除
在节点列表页面点击删除,弹出确定窗口。
点击确定后完成节点删除。
3.3 边缘节点编辑
点击节点进入节点详情页可对节点描述信息进行编辑。
在节点信息页可对标签进行编辑,可以添加新的标签,修改已有标签键值,或删除已有标签。
在应用部署页可以在应用状态栏查看已关联的应用,在服务状态栏可以查看已部署的服务运行状态,点击编辑按钮可以引入所需的系统模块。
在子设备管理页可以引入设备驱动,系统现在默认提供modbus驱动,这部分内容在子设备管理说明页有详细介绍。当前只有Kube模式支持子设备管理
在节点影子页可以对边缘节点影子进行查看和管理,也可以控制云边同步通道的开启和关闭,这部分内容在节点影子说明页有详细介绍。
4、边缘端
4.1 节点安装
节点安装目前支持 Kube 模式在线安装和进程模式安装在线安装。在节点详情页面点击安装,打开节点安装对话框,切换到进程模式,如下图所示:
安装进程模式需要先安装baetyl程序,复制baetyl程序安装命令在设备上执行。
baetyl程序安装完成后,执行baetyl version
可以查看baetyl当前版本后表示baetyl已经成功安装。
然后将进程模式下节点安装命令复制至设备执行
等待一段时间后,在节点详情页可以看到节点已在线,且三个进程应用都已部署
4.2 节点安装目录解析
在执行边缘节点安装命令以后,在边缘节点设备上会创建一个/var/lib/baetyl
目录,所有BIE边缘节点相关的内容都放在该目录下,总共包含6大目录,介绍如下:
- /var/lib/baetyl/init/store/core.db:baetyl-init模块本地kv存储文件
- /var/lib/baetyl/store/core.db:baetyl-core模块本地kv存储文件
- /var/lib/baetyl/object: 大文件下载存储目录
- /var/lib/baetyl/host:其他文件
- /var/lib/baetyl/run:程序运行目录,程序工作目录就位于改目录下。
- /var/lib/baetyl/log:日志文件目录
一个边缘节点初始安装以后的目录结构及文件示例如下:
root@edge-node:/var/lib/baetyl# tree
.
├── host
├── init
│ └── store
│ └── core.db
├── log
│ └── baetyl-edge-system
│ ├── baetyl-broker-fvpjgyphg
│ │ └── 1647231233e6me8h
│ │ └── baetyl-broker-1.log
│ ├── baetyl-core-uhzm5j2b6
│ │ └── 1647231233ubrkqx
│ │ └── baetyl-core-1.log
│ └── baetyl-init-miqqgm8y3
│ └── 1647231233izeku3
│ └── baetyl-init-1.log
├── object
│ ├── baetyl-program-config-baetyl-broker-q5qfjmhrq
│ │ └── 1647231231gn9g6z
│ │ ├── baetyl-broker
│ │ ├── baetyl-broker_linux-arm64-v8.zip
│ │ └── program.yml
│ ├── baetyl-program-config-baetyl-core-wd8pgwqcw
│ │ └── 1647231231iatdab
│ │ ├── baetyl
│ │ ├── baetyl_linux-arm64-v8.zip
│ │ └── program.yml
│ └── baetyl-program-config-baetyl-init-pgjmmbxgs
│ └── 1647231231mjxcmv
│ ├── baetyl
│ ├── baetyl_linux-arm64-v8.zip
│ └── program.yml
├── run
│ ├── baetyl-edge-system
│ │ ├── baetyl-broker-fvpjgyphg
│ │ │ └── 1647231233e6me8h
│ │ │ └── baetyl-broker
│ │ │ └── 1
│ │ │ ├── etc
│ │ │ │ └── baetyl
│ │ │ │ └── conf.yml
│ │ │ ├── service.yml
│ │ │ └── var
│ │ │ └── lib
│ │ │ └── baetyl
│ │ │ ├── bin -> /var/lib/baetyl/object/baetyl-program-config-baetyl-broker-q5qfjmhrq/1647231231gn9g6z
│ │ │ ├── broker.db
│ │ │ ├── run -> /var/lib/baetyl/run
│ │ │ └── system
│ │ │ └── certs
│ │ │ ├── ca.pem
│ │ │ ├── crt.pem
│ │ │ └── key.pem
│ │ ├── baetyl-core-uhzm5j2b6
│ │ │ └── 1647231233ubrkqx
│ │ │ └── baetyl-core
│ │ │ └── 1
│ │ │ ├── etc
│ │ │ │ └── baetyl
│ │ │ │ └── conf.yml
│ │ │ ├── service.yml
│ │ │ └── var
│ │ │ └── lib
│ │ │ └── baetyl
│ │ │ ├── bin -> /var/lib/baetyl/object/baetyl-program-config-baetyl-core-wd8pgwqcw/1647231231iatdab
│ │ │ ├── host -> /var/lib/baetyl/host
│ │ │ ├── node
│ │ │ │ ├── ca.pem
│ │ │ │ ├── client.key
│ │ │ │ └── client.pem
│ │ │ ├── object -> /var/lib/baetyl/object
│ │ │ ├── run -> /var/lib/baetyl/run
│ │ │ ├── store -> /var/lib/baetyl/store
│ │ │ └── system
│ │ │ └── certs
│ │ │ ├── ca.pem
│ │ │ ├── crt.pem
│ │ │ └── key.pem
│ │ └── baetyl-init-miqqgm8y3
│ │ └── 1647231233izeku3
│ │ └── baetyl-init
│ │ └── 1
│ │ ├── etc
│ │ │ └── baetyl
│ │ │ └── conf.yml
│ │ ├── service.yml
│ │ └── var
│ │ └── lib
│ │ └── baetyl
│ │ ├── bin -> /var/lib/baetyl/object/baetyl-program-config-baetyl-init-pgjmmbxgs/1647231231mjxcmv
│ │ ├── core
│ │ │ └── store -> /var/lib/baetyl/store
│ │ ├── host -> /var/lib/baetyl/host
│ │ ├── node
│ │ │ ├── ca.pem
│ │ │ ├── client.key
│ │ │ └── client.pem
│ │ ├── object -> /var/lib/baetyl/object
│ │ ├── run
│ │ │ └── services.yml
│ │ ├── store -> /var/lib/baetyl/init/store
│ │ └── system
│ │ └── certs
│ │ ├── ca.pem
│ │ ├── crt.pem
│ │ └── key.pem
│ └── services.yml
└── store
└── core.db
4.3 节点日志查看
进程模式下,边缘应用的日志在 /var/lib/baetyl/log 目录下,且针对系统应用和用户应用进行区分。
- 系统应用日志在 /var/lib/baetyl/log/baetyl-edge-system 路径下
- 用户应用在 /var/lib/baetyl/log/baetyl-edge 路径下
由于这些路径使用root权限创建,如以普通用户身份查看时需要更改owner,才能进入这些路径查看日志。执行修改目录权限命令:
sudo chown -R $(id -u):$(id -g) /var/lib/baetyl
然后进入需要查看日志应用对应路径。以系统应用baetyl-broker为例,进入/var/lib/baetyl/log/baetyl-edge-system/baetyl/baetyl-broker-erqilkypt/1625131937uibjgq 目录,最后一层目录的名字后缀是随机生成,以实际后缀为准。
路径下的baetyl-broker-1.log文件即为日志,其它应用日志查看步骤类似。
4.4 节点卸载
在节点安装模式,切换到进程模式,复制节点卸载命令在设备上执行
一段时间后,在节点详情页显示节点已离线
4.5 边缘服务管理
BIE进程模式的边缘应用都以服务形式启停,托管给systemd来管理,可以使用systemctl
命令来管理BIE边缘应用。
4.5.1 查看BIE正在运行的服务清单
使用systemctl | grep baetyl
命令查看BIE边缘服务
systemctl | grep baetyl
baetyl-edge-system.baetyl-broker-6tg6gj9lm.1668757408widb8u.baetyl-broker.1.service loaded active running baetyl-edge-system.baetyl-broker-6tg6gj9lm.1668757408widb8u.baetyl-broker.1.service
baetyl-edge-system.baetyl-core-zchtp7kaj.1668757407ptm8dh.baetyl-core.1.service loaded active running baetyl-edge-system.baetyl-core-zchtp7kaj.1668757407ptm8dh.baetyl-core.1.service
baetyl-edge-system.baetyl-init-jmlxp4h8a.1668757407vs9hg3.baetyl-init.1.service loaded active running baetyl-edge-system.baetyl-init-jmlxp4h8a.1668757407vs9hg3.baetyl-init.1.service
baetyl-edge.bacnet-cu-driver-application-nss9qesmb.1669703281jgsaqc.bacnet-custom-1-baetyl-driver.1.service loaded active running baetyl-edge.bacnet-cu-driver-application-nss9qesmb.1669703281jgsaqc.bacnet-custom-1-baetyl-driver.1.service
4.5.2 查看服务状态
使用systemctl status
命令查看BIE边缘服务
systemctl status baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service
● baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service
Loaded: loaded (/etc/systemd/system/baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-12-01 18:13:22 +08; 6min ago
Main PID: 27113 (baetyl)
Tasks: 24 (limit: 4915)
CGroup: /system.slice/baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service
├─27113 /media/dumu/usr/baetyl/object/baetyl-program-config-baetyl-init-hrshrp53b/166933841856w2jq/baetyl program /var/lib/baetyl/run/baetyl-edge-system/baetyl-core-vuyraqchw/1669338418dtixrg/baetyl-core/1
└─27179 /var/lib/baetyl/run/baetyl-edge-system/baetyl-core-vuyraqchw/1669338418dtixrg/baetyl-core/1/var/lib/baetyl/bin/baetyl core
4.5.3 启停服务
使用systemctl restart|stop|start
命令启停服务
cd /etc/systemd/system/
# 查看baetyl服务
ls -l baetyl*
-rw-r--r-- 1 root root 708 11月 30 15:56 baetyl-edge-system.baetyl-broker-pjldzbhld.1669338418ax8khn.baetyl-broker.1.service
-rw-r--r-- 1 root root 696 11月 30 15:56 baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service
-rw-r--r-- 1 root root 690 11月 30 15:57 baetyl-edge-system.baetyl-dmp-zh6catanp.1669794847tajtpd.baetyl-dmp.1.service
-rw-r--r-- 1 root root 544 11月 30 15:55 baetyl-edge-system.baetyl-init-ykitkkph9.1669338418qvx4cq.baetyl-init.1.service
# 停止baetyl-core
systemctl stop baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service
# 重启baetyl-core
systemctl restart baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service
# 启动baetyl-core
systemctl start baetyl-edge-system.baetyl-core-vuyraqchw.1669338418dtixrg.baetyl-core.1.service