Baetyl 配置文件释义

单位统一说明:

  • 大小:b:字节(byte);k:千字节(kilobyte);m:兆字节(megabyte),g:吉字节(gigabyte)
  • 时间:s:秒;m:分;h:小时

配置示例可参考本项目 example 目录中的各种例子。

主程序配置

主程序的配置和应用配置是分离的,默认配置文件是工作目录下的etc/baetyl/conf.yml,配置解读如下:

  1. mode:默认值:docker,服务运行模式。docker:容器模式;native:进程模式
  2. grace:默认值:30s,服务优雅退出超时时间
  3. server:主程序API Server配置项
  4. address:默认值可读取环境变量:BAETYL_MASTER_API_ADDRESS,主程序 API Server地址
  5. timeout:默认值:30s,主程序 API Server请求超时时间
  6. logger:日志配置项
  7. path:默认为空,即不打印到文件;如果指定文件则输出到文件
  8. level:默认值:info,日志等级,支持 debuginfowarn error
  9. format:默认值:text,日志打印格式,支持 text json
  10. age:
  11. max:默认值:15,日志文件保留的最大天数
  12. size:
  13. max:默认值:50,日志文件大小限制,单位MB
  14. backup:
  15. max:默认值:15,日志文件保留的最大数量

应用配置

应用配置的默认配置文件是工作目录下的 var/db/baetyl/application.yml,配置解读如下:

  1. version:应用版本
  2. services:应用的服务列表
  3. - name:[必须]服务名称,在服务列表中必须唯一
  4. image:[必须]服务入口。Docker容器模式下表示服务镜像;Native进程模式下表示服务运行包所在位置
  5. replica:默认为0,服务副本数,表示启动的服务实例数。通常服务只需启动一个。函数运行时服务一般设置为0,不由主程序启动,而是由函数管理服务来动态启动实例
  6. mounts:存储卷映射列表
  7. - name:[必须]存储卷名称,对应存储卷列表中的一个
  8. path:[必须]存储卷映射到容器中的路径
  9. readonly:默认值:false,存储卷是否只读
  10. ports:Docker容器模式下暴露的端口,例如:
  11. -0.0.0.0:1883:1883
  12. -0.0.0.0:1884:1884/tcp
  13. -8080:8080/tcp
  14. -9884:8884
  15. devices:Docker容器模式下的设备映射,例如:
  16. -/dev/video0
  17. -/dev/sda:/dev/xvdc:r
  18. args:服务实例启动参数,例如:
  19. -'-c'
  20. -'conf/conf.yml'
  21. env:服务实例环境变量,例如:
  22. version: v1
  23. restart:服务实例重启策略配置项
  24. retry:
  25. max:默认为空,表示总是重试,服务重启最大次数
  26. policy:默认值:always,重启策略。no:不重启;always:总是重启;on-failure:服务异常退出就重启
  27. backoff:
  28. min:默认值:1s,重启最小间隔时间
  29. max:默认值:5m,重启最大间隔时间
  30. factor:默认值:2,重启间隔增大倍数
  31. resources:Docker容器模式下的服务实例资源限制配置项
  32. cpu:
  33. cpus:服务实例可用的 CPU 比例,例如:1.5,表示可以用1.5 CPU 内核
  34. setcpus:服务实例可用的 CPU 内核,例如:0-2,表示可以使用第02 CPU 内核;0,表示可以使用第0 CPU 内核;1,表示可以使用第1 CPU 内核
  35. memory:
  36. limit:服务实例可用的内存,例如:500m,表示可以用500兆内存
  37. swap:服务实例可用的交换空间,例如:1g,表示可以用1G内存
  38. pids:
  39. limit:服务实例可创建的进程数
  40. volumes:存储卷列表
  41. - name:[必须]存储卷名称,在存储卷列表中唯一
  42. path:[必须]存储卷在宿主机上的路径,相对于主程序的工作目录而言

baetyl-agent 配置

  1. remote:Agent模块对接 BIE 云端管理套件的配置项
  2. mqtt: BIE 云端 MQTT 通道配置
  3. clientid:[必须]连接云端 MQTT 通道的Client ID,必须是云端核心设备的 ID
  4. address:[必须]云端 MQTT 通道的的地址,必须使用 SSL Endpoint
  5. username:[必须]云端 MQTT 通道连接的用户名,必须是云端核心设备的用户名
  6. ca:[必须]云端 MQTT 通道连接的CA证书路径
  7. key:[必须]云端 MQTT 通道连接的客户端私钥路径
  8. cert:[必须]云端 MQTT 通道连接的客户端公钥路径
  9. timeout:默认值:30s,云端 MQTT 通道连接超时时间
  10. interval:默认值:1m,云端 MQTT 通道重连的最大间隔时间,从500微秒翻倍增加到最大值
  11. keepalive:默认值:1m,云端 MQTT 通道连接的保持时间
  12. cleansession:默认值:false,云端 MQTT 通道连接的的是否保持Session
  13. validatesubs:默认值:false,云端 MQTT 通道连接是否检查订阅结果。如果为true发现订阅失败报错退出
  14. buffersize:默认值:10,发送消息内存队列大小,异常退出会导致消息丢失
  15. http: BIE 云端 HTTP 通道配置
  16. address:会自动根据 MQTT 通道的地址推断云端 HTTPS 通道地址,无需配置
  17. timeout:默认值:30s,云端HTTPS通道连接超时时间
  18. report:Agent上报云端配置
  19. url:上报的URL,无需配置
  20. topic:上报主题模板,无需配置
  21. interval:默认值:20s,上报间隔时间
  22. desire:Agent接收云端下发配置
  23. topic:下发主题模板,无需配置

baetyl-hub 配置

  1. listen:[必须]监听地址,例如:
  2. - tcp://0.0.0.0:1883
  3. - ssl://0.0.0.0:1884
  4. - ws://:8080/mqtt
  5. - wss://:8884/mqtt
  6. certificate: SSL/TLS 证书认证配置项,如果启用 ssl wss 必须配置
  7. ca:Server CA 证书路径
  8. key:Server的服务端私钥路径
  9. cert:Server的服务端公钥路径
  10. principals:接入权限配置项,如果不配置则Client无法接入,支持账号密码和证书认证
  11. - username:Client接入Hub用户名
  12. password:Client接入Hub密码
  13. permissions:
  14. - action:操作权限。pub:发布权限;sub:订阅权限
  15. permit:操作权限允许的主题列表,支持+和#匹配符
  16. - username:Client接入Hub用户名,使用证书双向认证可不配置密码
  17. permissions:
  18. - action:操作权限。pub:发布权限;sub:订阅权限
  19. permit:操作权限允许的主题列表,支持+和#匹配符
  20. subscriptions:主题路由配置项
  21. - source:
  22. topic:订阅的主题
  23. qos:订阅的QoS
  24. target:
  25. topic:发布的主题
  26. qos:发布的QoS
  27. message:消息相关的配置项
  28. length:
  29. max:默认值:32k;最大值:268,435,455字节(约256MB),可允许传输的最大消息长度
  30. ingress:消息接收配置项
  31. qos0:
  32. buffer:
  33. size:默认值:10000,可缓存到内存中的QoS0的消息数,增大缓存可提高消息接收的性能,若设备掉电,则会直接丢弃QoS0的消息
  34. qos1:
  35. buffer:
  36. size:默认值:100,等待持久化的QoS1的消息缓存大小,增大缓存可提高消息接收的性能,但潜在的风险是Hub异常退出(比如设备掉电)会丢失缓存的消息,不回复确认(puback)。Hub正常退出会等待缓存的消息处理完,不会丢失数据。
  37. batch:
  38. max:默认值:50,批量写QoS1的消息到数据库(持久化)的最大条数,消息持久化成功后会回复确认(ack
  39. cleanup:
  40. retention:默认值:48hQoS1的消息保存在数据库中的时间,超过该时间的消息会在清理时物理删除
  41. interval:默认值:1mQoS1的消息清理时间间隔
  42. egress:消息发送配置项
  43. qos0:
  44. buffer:
  45. size:默认值:10000,内存缓存中的待发送的QoS0的消息数,若设备掉电会直接丢弃消息;缓存满后,新推送的消息直接丢弃
  46. qos1:
  47. buffer:
  48. size:默认值:100QoS1的消息发送后,未确认(ack)的消息缓存大小,缓存满后,不再读取新消息,一直等待缓存中的消息被确认。QoS1的消息发送给客户端成功后等待客户端确认(puback),如果客户端在规定时间内没有回复确认,消息会一直重发,直到客户端回复确认或者 session 关闭
  49. batch:
  50. max:默认值:50,批量从数据库读取消息的最大条数
  51. retry:
  52. interval:默认值:20s,消息重发时间间隔
  53. offset:消息序列号持久化相关配置
  54. buffer:
  55. size:默认值:10000,被确认(ack)的消息的序列号的缓存队列大小。比如当前批量发送了QoS1且序列号为123的三条消息给客户端,客户端确认了序列号13的消息,此时序列号1会入列并持久化,序列号3虽然已经确认,但是还是得等待序列号2被确认入列后才能入列。该设计可保证Hub异常重启后仍能从持久化的序列号恢复消息处理,保证消息不丢,但是会出现消息重发,也因此暂不支持QoS2的消息
  56. batch:
  57. max:默认值:100,批量写消息序列号到数据库的最大条数
  58. logger:日志配置项
  59. path:默认为空,即不打印到文件;如果指定文件则输出到文件
  60. level:默认值:info,日志等级,支持debuginfowarn error
  61. format:默认值:text,日志打印格式,支持 text json
  62. age:
  63. max:默认值:15,日志文件保留的最大天数
  64. size:
  65. max:默认值:50,日志文件大小限制,单位MB
  66. backup:
  67. max:默认值:15,日志文件保留的最大数量
  68. status:Hub状态配置项
  69. logging:
  70. enable:默认值:false,是否打印Hub的状态信息
  71. interval:默认值:1m,状态信息打印时间间隔
  72. storage:数据库存储配置项
  73. dir:默认值:`var/db/baetyl/data`,数据库存储目录
  74. shutdown:Hub退出配置项
  75. timeout:默认值:10mHub退出超时时间

baetyl-function-manager 配置

  1. hub:
  2. clientid:Client连接HubClient IDcleansession false则不允许为空
  3. address:[必须]Client连接Hub的地址
  4. username:[必须]Client连接Hub的用户名
  5. password:如果采用账号密码,必须填Client连接Hub的密码,否者不用填写
  6. ca:如果采用证书双向认证,必须填Client连接HubCA证书路径
  7. key:如果采用证书双向认证,必须填Client连接Hub的客户端私钥路径
  8. cert:如果采用证书双向认证,必须填Client连接Hub的客户端公钥路径
  9. timeout:默认值:30sClient连接Hub的超时时间
  10. interval:默认值:1mClient连接Hub的重连最大间隔时间,从500微秒翻倍增加到最大值
  11. keepalive:默认值:1mClient连接Hub的保持连接时间
  12. cleansession:默认值:falseClient连接Hub的是否保持Session
  13. validatesubs:默认值:falseClient是否检查Hub订阅结果,如果是发现订阅失败报错退出
  14. buffersize:默认值:10Client发送消息给Hub的内存队列大小,异常退出会导致消息丢失,恢复后QoS1的消息依赖Hub重发
  15. rules:路由规则配置项
  16. - clientid:Client连接HubClient ID
  17. subscribe:
  18. topic:[必须]ClientHub订阅的消息主题
  19. qos:默认值:0ClientHub订阅的消息QoS
  20. function:
  21. name:[必须]处理消息的函数名
  22. publish:
  23. topic:[必须]计算结果发布到Hub的主题
  24. qos:默认值:0,计算结果发布HubQoS
  25. retry:
  26. max:默认值:3,最大重试次数
  27. functions:函数列表
  28. - name:[必须]函数名称,列表内唯一
  29. service:[必须]提供函数实例的服务名称
  30. instance:实例配置项
  31. min:默认值:0,最小值:0,最大值:100,最少实例数
  32. max:默认值:1,最小值:1,最大值:100,最大实例数
  33. idletime:默认值:10m,实例最大空闲时间
  34. evicttime:默认值:1m,实例检查周期,如果发现实例空闲超过就销毁
  35. message:
  36. length:
  37. max:默认值:4m函数实例允许接收和发送的最大消息长度
  38. backoff:
  39. max:默认值:1mClient连接函数实例最大重连间隔
  40. timeout:默认值:30sClient连接函数实例超时时间

baetyl-function-python 配置

  1. # 两个模块的配置方式相同,可参考下面一份配置
  2. server:作为 GRPC Server独立启动时配置;托管给 baetyl-function-manager 无需配置
  3. address: GRPC Server监听的地址,<host>:<port>
  4. workers:
  5. max:默认 CPU 核数乘以5,线程池最大容量
  6. concurrent:
  7. max:默认不限制,最大并发连接数
  8. message:
  9. length:
  10. max:默认值:4m函数实例允许接收和发送的最大消息长度
  11. ca:Server CA 证书路径
  12. key:Server的服务端私钥路径
  13. cert:Server的服务端公钥路径
  14. functions:函数列表
  15. - name:[必须]函数名称,列表内唯一
  16. handler:[必须]函数包和处理函数名,比如:'sayhi.handler'
  17. codedir:[必须]Python代码所在路径
  18. logger:日志配置项
  19. path:默认为空,即不打印到文件;如果指定文件则输出到文件
  20. level:默认值:info,日志等级,支持 debuginfowarn error
  21. format:默认值:text,日志打印格式,支持 text json
  22. age:
  23. max:默认值:15,日志文件保留的最大天数
  24. size:
  25. max:默认值:50,日志文件大小限制,单位MB
  26. backup:
  27. max:默认值:15,日志文件保留的最大数量

baetyl-remote-mqtt 配置

  1. hub:
  2. clientid:Client连接HubClient IDcleansession false则不允许为空
  3. address:[必须]Client连接Hub的地址
  4. username:[必须]Client连接Hub的用户名
  5. password:如果采用账号密码,必须填Client连接Hub的密码,否者不用填写
  6. ca:如果采用证书双向认证,必须填Client连接Hub CA 证书路径
  7. key:如果采用证书双向认证,必须填Client连接Hub的客户端私钥路径
  8. cert:如果采用证书双向认证,必须填Client连接Hub的客户端公钥路径
  9. timeout:默认值:30sClient连接Hub的超时时间
  10. interval:默认值:1mClient连接Hub的重连最大间隔时间,从500微秒翻倍增加到最大值
  11. keepalive:默认值:1mClient连接Hub的保持连接时间
  12. cleansession:默认值:falseClient连接Hub的是否保持Session
  13. validatesubs:默认值:falseClient是否检查Hub订阅结果,如果是发现订阅失败报错退出
  14. buffersize:默认值:10Client发送消息给Hub的内存队列大小,异常退出会导致消息丢失,恢复后QoS1的消息依赖Hub重发
  15. rules:路由规则列表,向Hub订阅消息发送给Remote,或反之
  16. - hub:
  17. clientid:Client连接HubClient ID
  18. subscriptions:ClientHub订阅的消息,例如
  19. - topic: say
  20. qos:1
  21. - topic: hi
  22. qos:0
  23. remote:
  24. name:[必须]指定Remote名称,必须是Remote列表中的一个
  25. clientid:Client连接RemoteClient ID
  26. subscriptions:ClientRemote订阅的消息,例如
  27. - topic: remote/say
  28. qos:0
  29. - topic: remote/hi
  30. qos:0
  31. remotes:Remote列表
  32. - name:[必须]Remote名称,列表内必须唯一
  33. clientid:Client连接RemoteClient ID
  34. address:[必须]Client连接Remote的地址
  35. username:Client连接Remote的用户名
  36. password:如果采用账号密码,必须填Client连接Remote的密码,否者不用填写
  37. ca:如果采用证书双向认证,必须填Client连接Remote CA 证书路径
  38. key:如果采用证书双向认证,必须填Client连接Remote的客户端私钥路径
  39. cert:如果采用证书双向认证,必须填Client连接Remote的客户端公钥路径
  40. timeout:默认值:30sClient连接Remote的超时时间
  41. interval:默认值:1mClient连接Remote的重连最大间隔时间,从500微秒翻倍增加到最大值
  42. keepalive:默认值:1mClient连接Remote的保持连接时间
  43. cleansession:默认值:falseClient连接Remote的是否保持Session
  44. validatesubs:默认值:falseClient是否检查Remote订阅结果,如果是发现订阅失败报错退出
  45. buffersize:默认值:10Client发送消息给Remote的内存队列大小,异常退出会导致消息丢失,恢复后QoS1的消息依赖Remote重发
  46. logger:日志配置项
  47. path:默认为空,即不打印到文件;如果指定文件则输出到文件
  48. level:默认值:info,日志等级,支持 debuginfowarn error
  49. format:默认值:text,日志打印格式,支持 text json
  50. age:
  51. max:默认值:15,日志文件保留的最大天数
  52. size:
  53. max:默认值:50,日志文件大小限制,单位 MB
  54. backup:
  55. max:默认值:15,日志文件保留的最大数量

baetyl-timer 配置

  1. hub:要连接的Hub信息
  2. address: timer 模块要连接的Hub地址
  3. username: timer 模块接入Hub的用户名
  4. password: timer 模块接入Hub密码
  5. clientid:Client连接HubClient ID
  6. timer: timer 相关属性
  7. interval: timer 模块定时间隔
  8. publish:
  9. topic:定时结果发布到Hub的主题
  10. payload:负载数据,map 数据结构,例如:
  11. id:1
  12. logger:日志配置项
  13. path:默认为空,即不打印到文件;如果指定文件则输出到文件
  14. level:默认值:info,日志等级,支持 debuginfowarn error