服务配置管理
本文介绍平台的服务配置的管理原理。
大部分服务的配置信息有三个来源:
- 命令行参数
- 配置文件,配置文件路径一般在 /etc/yunion/<service_name>.conf
- Keystone中保存的服务配置
如果一个参数在三个来源都有设置,则越排在后的配置来源优先级最高。
命令行参数
服务配置首先通过命令行参数设置,如果存在 --config 的配置,则会加载 --config 指定的配置文件的内容,根据配置文件的内容设置参数。
以下配置项是只能通过命令行指定的参数:
| 配置项 | 类型 | 说明 |
|---|---|---|
| config | string | 指定配置文件路径 |
| help | bool | 显示帮助信息并退出 |
| version | bool | 显示版本信息并退出 |
| pid_file | string | pid文件路径 |
配置文件
配置文件格式可以是Key=Value的方式设置参数,也可以是YAML的格式。配置文件的配置项在服务器启动时由服务程序从配置文件中一次性读取,程序启动后对配置文件的修改不会被动态加载。
部分服务则会进一步地从keystone的服务配置中加载配置信息,并且监听keystone的服务配置的变化,动态地更新服务配置。
并不是所有配置项都能从keystone的服 务配置中动态加载。以下配置项是只能通过命令行参数或者文件配置指定的参数。这些配置项主要包含服务的认证信息,数据库配置信息等。
| 配置项 | 类型 | 说明 |
|---|---|---|
| region | string | 服务实例归属区域的名称, 一般为 region0 |
| application_id | string | 服务的应用名称 |
| log_level | string | 输出日志的级别,默认为info,即仅输出info |
| log_verbose_level | int | 日志的冗余度 (deprecated) |
| temp_path | string | 存储本地临时文件的目录 |
| address | string | 服务API监听地址 |
| port | string | 服务API监听端口 |
| port_v2 | string | v2端口 (deprecated) |
| admin_port | string | 管理端口 (deprecaated) |
| session_endpoint_type | string | 访问其他服务的Endpoint的类型,默认为 internal |
| admin_password | string | Keystone服务账号密码 |
| admin_project | string | Keystone服务账号所属项目 |
| admin_project_domain | string | Keystone服务账号所属项目的域名称,默认为Default |
| admin_user | string | Keystone服务账号用户名 |
| admin_domain | string | Keystone服务账号用户所属域名称,默认为 Default |
| auth_url | string | keystone的认证URL,一般为 https://<keystone>:30500/v3 |
| enable_ssl | string | 是否启用TLS(https) |
| ssl_certfile | string | TLS证书的证书文件路径 |
| ssl_keyfile | string | TLS证书的私钥路径 |
| ssl_ca_certs | string | TLS证 书的CA证书路径,该选项可选,如果certfile为包含了full chain的证书,则该选项可以为空 |
| is_slave_node | bool | 该运行实例是否为SLAVE状态。每个服务的定时任务只会在MASTER实例上运行 |
| config_sync_period_seconds | int | 从keystoneb被动同步下拉配置的时间间隔,默认为1800秒 |
| sql_connection | string | 定义通用的数据库的SQL连接字符串,默认为空 |
| clickhouse | string | 定义clickhouse的SQL连接字符串,默认为空 |
| ops_log_with_clickhouse | bool | 是否采用clickhouse来记录操作日志(opslog),默认为false,在设置了clickhouse,并且 ops_log_with_clickhouse 为true时,opslog记录保存在clickhouse |
| db_checksum_skip_init | bool | 开启数据库完整性校验后,是否跳过数据库的初始化。如果不跳过,则需要等待较长的数据库 checksum 重新计算的时间 |
| db_checksum_tables | bool | 是否开启数据库完整性校验,如果开启,则对enable_db_checksum_tables的表做完整性校验 |
| enable_db_checksum_tables | []string | 指定数据库完整性校验的数据库表名 |
| auto_sync_table | bool | 自动同步数据库schema,默认为false |
| exit_after_db_init | bool | 初始化完数据库后,服务自动退出。如果auto_sync_table=true且 exit_after_db_init=true,则执行完数据库schema同步后,服务自动退出 |
| global_virtual_resource_namespace | bool | 是否资源使用全局名字空间,默认为true,也就是不同项目的资源名称不能重复 |
| debug_sqlchemy | bool | 是否打开sqlchemy的debug模式,默认为false,也就是不输出sqlchemy的日志 |
| lockman_method | string |