部署 openYuanrong#
本节将介绍常见场景下主机部署 openYuanrong 时的配置,配置参数详细说明请参考部署参数表。
使用命令行工具 yr 部署 openYuanrong#
用法#
yr [OPTIONS] COMMAND [ARGS]...
描述#
yr 是 Python 版实验命令行工具,用于主机部署 openYuanrong,并提供配置渲染、组件编排、健康检查、状态查询与停止能力。
在执行 yr start 时,CLI 会:
合并配置(默认值 + 用户配置 + 命令行覆盖)并渲染模板。
创建部署目录
/tmp/yr_sessions/<timestamp>/,更新符号链接/tmp/yr_sessions/latest。按依赖顺序启动组件并执行健康检查。
生成会话文件
/tmp/yr_sessions/latest/session.json,供status/health/stop使用。
在 master 模式启动成功后,会打印 worker 节点加入集群的推荐命令和最小配置片段。
配置#
配置如何合并
yr 在启动时,会通过合并以下内容来生成最终生效的配置:
优先级从高到低:
命令行覆盖项(
yr start ... -s KEY=VALUE,可重复指定)用户配置文件(默认:
/etc/yuanrong/config.toml,若存在)内置默认值
基于内置 config.toml.jinja 编写自定义 config.toml#
Python yr CLI 的最终组件配置由内置模板渲染得到:
api/python/yr/cli/values.tomlapi/python/yr/cli/config.toml.jinja
建议流程:
执行
yr config template查看内置模板结构(values.toml+config.toml.jinja)。新建自己的
config.toml,只写需要覆盖的字段(无需复制整份模板)。使用
yr -c /path/to/config.toml start --master(或yr -c ... start)启动。
示例:在主节点启用 frontend,并覆盖 function_proxy 与 ds_worker 的启动参数:
[mode.master]
frontend = true
[values]
log_level = "DEBUG"
[values.function_proxy]
ip = "10.88.0.4"
port = "22772"
grpc_listen_port = "22773"
[function_proxy.args]
enable_metrics = false
litebus_thread_num = 25
runtime_recover_enable = true
[ds_worker.args]
heartbeat_interval_ms = 120000
node_dead_timeout_s = 120
执行:
yr -c /path/to/config.toml start --master
如需在不改文件的情况下临时覆盖,可叠加 -s/--set(例如 -s 'function_proxy.args.enable_metrics=true')。
使用 [mode.*] 控制组件启停#
yr start --master 启动主节点模式,yr start 启动从节点模式。默认组件如下:
master:etcd、ds_master、ds_worker、function_master、function_proxy、function_agentagent:ds_worker、function_proxy、function_agent
可通过 [mode.master] 或 [mode.agent] 打开额外组件。示例(在 master 上启用 frontend、dashboard、collector):
[mode.master]
frontend = true
dashboard = true
collector = true
运行命令:
yr -c /path/to/config.toml start --master
使用 [values.*] 覆盖运行时参数#
values 主要承载运行时参数(IP、端口、TLS 路径、日志路径等),并用于渲染组件配置模板。
示例:开启函数系统和 etcd 的 TLS:
[values.fs.tls]
enable = true
base_path = "/yuanrong/myssl/cert/yr"
ca_file = "ca.crt"
cert_file = "module.crt"
key_file = "module.key"
[values.etcd]
auth_type = "TLS"
[values.etcd.auth]
base_path = "/yuanrong/myssl/cert/etcd"
ca_file = "ca.crt"
cert_file = "server.crt"
key_file = "server.key"
client_cert_file = "client.crt"
client_key_file = "client.key"
运行命令:
yr -c /path/to/config.toml start --master
使用 [component.*] 覆盖组件启动参数#
除 mode.* 和 values.* 外,还可直接覆盖组件级配置(例如 etcd、ds_master、function_master、function_proxy)。
这些配置会直接影响组件进程启动参数、环境变量和健康检查行为。
常见可覆盖的子表包括:
[COMPONENT.args]:组件命令行参数[COMPONENT.env]:组件环境变量[COMPONENT.health_check]:健康检查配置
环境变量合并行为
组件环境变量在实现上按以下方式合并:
以当前 shell 环境变量为基础。
再应用
[COMPONENT.env]中的变量(通常组件配置优先级更高,会覆盖同名 shell 变量)。若
LD_LIBRARY_PATH/LD_PRELOAD同时在 shell 和组件配置中存在,则会拼接为:shell_value:config_value。
示例(为 function_master 追加库路径):
export LD_LIBRARY_PATH=/opt/custom/lib
yr -c /path/to/config.toml start --master
假设配置文件中包含:
[function_master.env]
LD_LIBRARY_PATH = "/opt/yr/lib"
示例:覆盖部分 function_master 和 function_proxy 的启动参数:
[function_master.args]
runtime_recover_enable = true
litebus_thread_num = 25
system_timeout = 2000000
[function_proxy.args]
enable_metrics = false
litebus_thread_num = 25
runtime_recover_enable = true
运行命令:
yr -c /path/to/config.toml start --master
使用 -s 的命令行覆盖(TOML 片段)#
启动时可通过 -s/--set 临时覆盖配置,避免修改文件。
规则:
-s可重复指定。每条必须是合法 TOML 赋值语句(
KEY=VALUE)。
示例:
覆盖 master 地址与端口:
yr start --master -s 'values.ds_master.ip="10.88.0.9"' -s 'values.ds_master.port="12123"'覆盖数组表(etcd 地址列表):
yr start --master -s 'values.etcd.address=[{ip="10.88.0.9",peer_port="32380",port="32379"}]'
-c/--config 指定的配置文件路径必须存在;若不指定 -c,CLI 会尝试读取默认路径 /etc/yuanrong/config.toml,不存在时回退到内置默认值。
全局选项#
-c,--configPATHconfig.toml的路径。若提供,该路径必须存在。-v,--verbose启用更详细的日志输出。
--version打印版本后退出。
-h,--help显示帮助。
命令#
start#
以 master 或 agent 模式启动 YuanRong 系统。
用法
yr start [--master] [--master_address http(s)://HOST:PORT] [-s KEY=VALUE]…
关键选项
--master切换为 master 模式(默认是 agent 模式)。
-s,--setKEY=VALUE从命令行覆盖配置值。可指定多次。
每个
KEY=VALUE必须是合法的 TOML 赋值语句,并且通常使用values.*下的点路径。示例:
-s 'values.ds_master.ip="10.88.0.9"'-s 'values.ds_master.port="12123"'-s 'values.etcd.address=[{ip="10.88.0.9",peer_port="32380",port="32379"}]'
--master_addresshttp(s)://HOST:PORT仅 agent 模式可用。启动前从指定
function_master获取服务发现信息,并自动转换为配置覆盖项。若与--master同时使用,命令会报错退出。参数值必须包含协议头,即
http://或https://。当使用https://时,还需要通过--config或-s提供values.fs.tls.ca_file、values.fs.tls.cert_file、values.fs.tls.key_file(可配合values.fs.tls.base_path)。
说明
成功后,会话文件会写入
/tmp/yr_sessions/latest/session.json。日志会写入部署目录下(见 文件)。
启动
--master时,yr会打印推荐的yr start ...加入命令,以及最小配置示例。
launch#
基于 config.toml 启动单个组件。通常用于作为容器的 entrypoint。
用法
yr launch [--inherit-env] [--env-subst KEY]… COMPONENT
描述
仅启动单个组件,不处理依赖拓扑。
常用于容器 entrypoint。
--env-subst KEY可将配置文件中的{KEY}替换为环境变量KEY的值。
status#
显示系统状态。
用法
yr status [-f SESSION_FILE]
选项
-f,--fileSESSION_FILE会话 JSON 文件路径(默认:
/tmp/yr_sessions/latest/session.json)。
描述
yr status 读取会话后访问 function_master 的 global-scheduler 接口,输出 Ready agent 数量与资源概览。该命令仅支持 master 模式会话。
stop#
停止系统组件。
用法
yr stop [--force] [-f SESSION_FILE]
选项
--force强制停止组件(使用 SIGKILL 代替 SIGTERM)。
-f,--fileSESSION_FILE会话 JSON 文件路径。若提供,该路径必须存在。
描述
默认情况下,yr stop 会对会话文件中记录的 daemon 进程发送 SIGTERM 尝试停止。
使用 --force 时,会对 daemon 发送 SIGKILL,并额外尝试停止会话中记录的所有组件 PID。
health#
显示当前节点已拉起的所有组件的健康状态与运行情况。
用法
yr health [-f SESSION_FILE]
选项
-f,--fileSESSION_FILE会话 JSON 文件路径(默认:
/tmp/yr_sessions/latest/session.json)。
描述
yr health 读取会话文件并检查组件 PID 是否在运行。
config#
与配置相关的命令。
config dump#
输出合并后的配置。
用法
yr config dump [-s KEY=VALUE]…
描述
渲染生效配置(默认值 + 配置文件 + 覆盖项),并以 TOML 格式打印。
config template#
打印内置模板。
用法
yr config template
描述
打印内置 values.toml 与 config.toml.jinja 模板内容。
示例#
启动 master 集群#
yr start --master
启动 agent 并加入 master#
执行 yr start --master 后,终端会打印推荐的 worker 加入命令,可直接在 worker 节点执行。示例:
yr start -s 'values.etcd.address=[{ip="10.88.0.4",peer_port="32380",port="32379"}]' -s 'values.ds_master.ip="10.88.0.4"' -s 'values.ds_master.port="12123"' -s 'values.function_master.ip="10.88.0.4"' -s 'values.function_master.global_scheduler_port="22770"'
也可以在 agent 节点通过自动发现方式加入(等效于自动生成 -s 覆盖项):
yr start --master_address http://10.88.0.4:22770
使用默认会话路径查看状态#
yr status
优雅停止集群#
yr stop
强制停止(SIGKILL)#
yr stop --force
查看渲染后的生效配置#
yr config dump
查看内置模板#
yr config template
配置安全通信#
请先按照安全通信章节准备组件证书
[mode.master]
dashboard = true
collector = true
[values]
log_level = "DEBUG"
[values.fs.tls]
enable = true
base_path = "/opt/ssl/cert/yr"
ca_file = "ca.crt"
cert_file = "module.crt"
key_file = "module.key"
[values.ds.curve]
enable = true
base_path = "/opt/ssl/cert/curve"
cache_storage_auth_type = "ZMQ"
cache_storage_auth_enable = true
[values.etcd]
auth_type = "TLS"
[values.etcd.auth]
base_path = "/opt/ssl/cert/etcd"
ca_file = "ca.crt"
cert_file = "server.crt"
key_file = "server.key"
client_cert_file = "client.crt"
client_key_file = "client.key"
[values.dashboard.auth]
enable = true
cert_file = "/opt/ssl/cert/dashboard/server.crt"
key_file = "/opt/ssl/cert/dashboard/server.key"
[values.dashboard.prometheus]
address = "10.88.0.3:9090"
[values.dashboard.prometheus.auth]
enable = true
base_path = "/opt/ssl/cert/prometheus"
ca_file = "ca.crt"
cert_file = "client.crt"
key_file = "client.key"
执行以下命令:
yr -c <your-config-path> start --master
配置多master#
[mode.master]
frontend = true
function_scheduler = true
dashboard = true
collector = true
[values]
log_level = "DEBUG"
[values.etcd]
enable_multi_master = true
[[values.etcd.address]]
ip = "10.88.0.2"
peer_port = "32380"
port = "32379"
[[values.etcd.address]]
ip = "10.88.0.3"
peer_port = "32380"
port = "32379"
执行以下命令:
yr -c <your-config-path> start --master
文件#
/etc/yuanrong/config.toml默认配置文件路径(若存在)。
/tmp/yr_sessions/<timestamp>/启动时创建的单次运行部署目录。
/tmp/yr_sessions/latest指向当前部署目录的符号链接。
/tmp/yr_sessions/latest/session.json供
yr status、yr health与yr stop使用的会话文件。/tmp/yr_sessions/latest/logs/当前部署的日志目录。
/tmp/yr_sessions/latest/logs/yr_daemon.logdaemon 的 stdout/stderr 重定向目标文件。
/tmp/yr_sessions/latest/logs/<component>_stdout.log组件标准输出/错误输出日志文件。
/tmp/yr_sessions/yr_current_master_info主节点信息文件供yr SDK解析。
退出状态#
- 0
成功。
- 1
失败(启动失败、状态不健康、会话无效、模式不匹配等)。
验证部署状态#
部署完成后,可执行 yr status 查看集群状态。正常情况下,ReadyAgentsCount 与实际可用 worker 数量一致。
若部署失败,可优先检查:
/tmp/yr_sessions/latest/logs/yr_daemon.log/tmp/yr_sessions/latest/logs/<component>_stdout.log
Cluster Status:
ReadyAgentsCount: 2
可运行简单示例进一步验证部署结果。
删除 openYuanrong 集群#
在所有节点执行如下命令即完成集群删除。
yr stop
Note
yr stop 命令并不会删除部署目录下的文件,如果您修改了配置重新部署,请清空该目录下的文件或指定一个新的目录。