可执行二进制程序类型进程应用
更新时间:2023-03-28
1、概述
在进程应用概述当中提到,进程应有两类,本文重点讲解可执行二进制程序类型进程应用。并以构建emqx的BIE进程应用为例来进行详细说明。
2、程序包依赖文件准备
2.1 可执行二进制程序
emqx提供了多个平台的编译程序,因此可以使用emqx作为示例介绍二进制程序文件的制作方式。
- 下载emqx-5.0.8-ubuntu20.04-arm64.tar.gz 并解压。
- 可以看到emqx的相对路径是
bin/emqx
,这个将作为entry的值填写到program.yml
文件当中。
- 因为程序入口是bin/emqx,入口程序需要具有可执行权限,可以通过
ls
命令查看文件权限。
ls -l
-rwxr-xr-x 1 root root 34538 Sep 28 19:38 emqx
- 如果程序不具备可执行权限,可以通过自行如下命令添加可执行权限
chmod +x emqx
- 当前baetyl边缘计算框架还不支持tar.gz文件的解压缩,因此需要将上述文件压缩成zip包,执行如下命令,将在该目录下得到emqx-5.0.8-ubuntu20.04-arm64.zip压缩文件。
cd emqx-5.0.8-ubuntu20.04-arm64
zip -r emqx-5.0.8-ubuntu20.04-arm64.zip ./*
2.2 程序入口配置文件
-
整理程序入口配置文件:
- 文件名:
program.yml
- 文件内容:
entry: "bin/emqx"
- 文件名:
- 执行如下命令,得到zip压缩包emqx-program-yml-1.zip
zip -r emqx-program-yml-1.zip program.yml
3、创建程序包
-
参考进程程序包,创建程序包emqx-5.0.8-ubuntu20.04,通过HTTP方式引入前面创建的2个文件:
- 也可以直接下载(右键->另存为) 进程程序包-emqx-5.0.8-ubuntu20.04.json 到本地,然后直接导入程序包。
- 程序包支持多平台架构。可以在一个程序包当中引入多个平台的可执行程序,边缘计算框架baetyl会自动根据实际设备的系统架构(Arch)动态下载匹配的可执行程序。因为不管是哪一种平台的emqx可执行程序,他的程序目录是基本不变的,可执行程序的入口都是
bin/emqx
,因此程序入口配置文件可以复用同一个emqx-program-yml-1.zip
。但是不同平台的变量名需要单独定义。包含2种架构的程序包如下图所示:
4、创建进程应用
4.1 创建流程
-
创建进程应用
- 名称:emqx-5-0-8-ubuntu20-04
-
添加服务(程序包)
- 名称:emqx-5-0-8-ubuntu20-04
- 程序包:关联emqx-5.0.8-ubuntu20.04
- 启动参数:
foreground
- 点击确定
- 点击下一步
-
目标节点
- 单节点匹配
- 选择一个进程节点
- 点击下一步
-
部署方式:
- 立即部署
- 点击创建
4.2 启动参数说明
上述在添加服务的时候,设置了启动参数为foreground
。这是因为bin/emqx
不可以单独执行,还需要传入参数,可以使用的参数信息如下:
$ ./bin/emqx
Usage: emqx COMMAND [help]
Commonly used COMMANDs:
start: Start EMQX in daemon mode
console: Start EMQX in an interactive Erlang or Elixir shell
foreground: Start EMQX in foreground mode without an interactive shell
stop: Stop the running EMQX node
ctl: Administration commands, execute 'emqx ctl help' for more details
在本文当中我们传入的参数为foreground
,即完整的命令为bin/emqx foreground
。
5、验证
- 云端查看边缘应用状态
- 边缘查看systemctl服务状态
systemctl | grep baetyl
baetyl-edge-system.baetyl-broker-77zsf48j5.1663915447jqisxn.baetyl-broker.1.service loaded active running baetyl-edge-system.baetyl-broker-77zsf48j5.1663915447jqisxn.baetyl-broker.1.service
baetyl-edge-system.baetyl-core-sggwknd8w.1663915447w8dtie.baetyl-core.1.service loaded active running baetyl-edge-system.baetyl-core-sggwknd8w.1663915447w8dtie.baetyl-core.1.service
baetyl-edge-system.baetyl-init-igkjsqy4b.1663915447d2ahdm.baetyl-init.1.service loaded active running baetyl-edge-system.baetyl-init-igkjsqy4b.1663915447d2ahdm.baetyl-init.1.service
baetyl-edge.emqx-5-0-8-ubuntu20-04.16643650656x6gix.emqx-5-0-8-ubuntu20-04.1.service loaded active running baetyl-edge.emqx-5-0-8-ubuntu20-04.16643650656x6gix.emqx-5-0-8-ubuntu20-04.1.service
- 边缘查看应用日志文件
# 执行命令,如果应用名称是emqx-5-0-8-ubuntu20-04,可以直接使用如下命令
tail -f /var/lib/baetyl/log/baetyl-edge/emqx-5-0-8-ubuntu20-04/1*/*.log
# 返回日志
NOTE: Use the same config value for all nodes in the cluster.
!!!!!!
log.file_handlers.default.enable = EMQX_LOG__FILE_HANDLERS__DEFAULT__ENABLE = false
log.console_handler.enable = EMQX_LOG__CONSOLE_HANDLER__ENABLE = true
Listener ssl:default on :8883 started.
Listener tcp:default on :1883 started.
Listener ws:default on :8083 started.
Listener wss:default on :8084 started.
Listener http:dashboard on :18083 started.
EMQX 5.0.8 is running now!