其它配置
> 文档中心 > 文档中心 > INFINI Gateway > 功能手册 > 其它配置

其它配置 #

高级用法 #

配置模板 #

示例:

configs.template:
  - name: "es_gw1"
    path: ./sample-configs/config_template.tpl
    variable:
      name: "es_gw1"
      binding_host: "0.0.0.0:8000"
      tls_on_entry: true
      elasticsearch_endpoint: "http://localhost:9200"
名称类型说明
configs.templatearray配置模板,可以指定多个模板和对应的参数
configs.template[].namestring配置的名称
configs.template[].pathstring模板配置路径
configs.template[].variablemap模板的参数设置,变量在模板里面的用法:$[[变量名]]

使用环境变量 #

极限网关支持在配置里面使用环境变量来进行灵活的参数控制。

首先在配置里面定义环境变量的默认值,如下:

env:
  PROD_ES_ENDPOINT: http://localhost:9200
  PROD_ES_USER: elastic
  PROD_ES_PASS: password

然后就可以在配置里面通过如下语法来使用环境变量了:

elasticsearch:
  - name: prod
    enabled: true
    endpoints:
      - $[[env.PROD_ES_ENDPOINT]]
    discovery:
      enabled: false
    basic_auth:
      username: $[[env.PROD_ES_USER]]
      password: $[[env.PROD_ES_PASS]]

注意,外部环境变量的优先级会大于配置内部的环境变量设置,比如希望在启动程序的时候覆盖环境变量,操作如下:

PROD_ES_ENDPOINT=http://1.1.1.1:9200 LOGGING_ES_ENDPOINT=http://2.2.2.2:9201  ./bin/gateway

系统配置 #

系统配置主要用来设置极限网关的基础属性:

名称类型说明
path.datastring数据目录,默认为 data
path.logsstring日志目录,默认为 log
path.configsstring配置目录,默认为 config
log.levelstring日志级别,默认为 info
log.debugbool是否开启调试模式,当开启的时候,一旦出现异常程序直接退出,打印完整堆栈,仅用于调试定位故障点,默认为 false,生产环境不要开启,可能丢数据
log.formatbool日志格式,默认为 [%Date(01-02) %Time] [%LEV] [%File:%Line] %Msg%nFormat References
log.disable_file_outputbool是否关闭本地文件的日志输出,默认为 false,容器环境不希望本地日志输出的可以开启本参数
allow_multi_instancebool是否运行单个机器上面启动多个网关实例,默认为 false
skip_instance_detectbool是否跳过网关的实例检测,默认为 false
max_num_of_instancesint网关实例的最大个数,默认为 5
configs.auto_reloadbool是否支持 path.configs 里面配置的动态加载

本地磁盘队列 #

示例:

disk_queue:
  upload_to_s3: true
  s3:
    server: my_blob_store
    location: cn-beijing-001
    bucket: infini-store
  max_bytes_per_file: 102400
名称类型说明
disk_queue.min_msg_sizeint发送到队列单条消息的最小字节限制,默认 1
disk_queue.max_msg_sizeint发送到队列单条消息的最大字节限制,默认 104857600,即 100MB
disk_queue.sync_every_recordsint每隔多少条记录进行一次 sync 磁盘同步操作,默认 1000
disk_queue.sync_timeout_in_msint每隔多长时间进行一次 sync 磁盘同步操作,默认 1000 毫秒
disk_queue.max_bytes_per_fileint本地磁盘队列单个文件的最大值,超过此大小自动滚动新文件,默认 104857600,即 100MB
disk_queue.max_used_bytesint本地磁盘队列可允许的最大存储使用空间大小
disk_queue.warning_free_bytesint磁盘达到告警阈值的空闲存储空间大小,默认 10737418240 即 10GB
disk_queue.reserved_free_bytesint磁盘空闲存储空间大小的保护值,达到会变成只读,不允许写,默认 5368709120 即 5GB
disk_queue.auto_skip_corrupted_filebool是否自动跳过损坏的磁盘文件,默认 true
disk_queue.upload_to_s3bool是否将磁盘队列文件上传到 S3,默认 false
disk_queue.s3.asyncbool是否异步上传到 S3 服务器
disk_queue.s3.serverstringS3 服务器 ID
disk_queue.s3.locationstringS3 服务器位置
disk_queue.s3.bucketstringS3 服务器 Bucket
disk_queue.retention.max_num_of_local_filesint上传 s3 完的文件,按照最新的文件排序,保留在本地磁盘上的最大文件数,默认 3
disk_queue.compress.segment.enabledbool是否开启文件级别的压缩,默认 false

S3 #

示例:

s3:
  my_blob_store:
    endpoint: "192.168.3.188:9000"
    access_key: "admin"
    access_secret: "gogoaminio"
名称类型说明
s3.[id].endpointstringS3 服务器地址
s3.[id].access_keystringS3 服务器 Key
s3.[id].access_secretstringS3 服务器秘钥
s3.[id].tokenstringS3 服务器 Token 信息
s3.[id].sslboolS3 服务器是否开启了 TLS
s3.[id].skip_insecure_verifybool是否忽略 TLS 证书校验

Kafka #

极限网关支持在使用分布式 Kafka 作为后端队列,相关参数如下。

名称类型说明
kafka.enabledboolKafka 模块是否开启
kafka.defaultboolKafka 模块是否作为默认 Queue 的实现
kafka.num_of_partitionint默认的分区数量,默认 1
kafka.num_of_replicaint默认的分区副本数量,默认 1
kafka.producer_batch_max_bytesint最大提交请求大小,默认 50 * 1024 * 1024
kafka.max_buffered_recordsint最大缓存请求记录数,默认 10000
kafka.manual_flushingbool是否手动 flushing,默认 false
kafka.brokers[]string服务器地址信息
kafka.usernamestring用户信息
kafka.passwordstring密码信息

Badger #

Badger 是一个轻量级的基于磁盘的 KeyValue 存储引擎,极限网关使用 Badger 来实现 KV 模块的存储。

名称类型说明
badger.enabledbool是否启用 Badger实现的 KV 模块,默认为 true
badger.single_bucket_modeboolBadger 模块使用单桶模式,默认为 true
badger.sync_writesboolBadger 模块使用同步写,默认为 false
badger.mem_table_sizeint64Badger 模块的内存表大小,默认为 10 * 1024 * 1024,即 10485760
badger.value_log_file_sizeint64Badger 模块的日志文件大小,默认为 1<<30 - 1,即 1g
badger.value_log_max_entriesint64Badger 模块的日志消息个数,默认为 1000000,即 1million
badger.value_thresholdint64Badger 模块的日志文件大小,默认为 1048576,即 1m
badger.num_mem_tablesint64Badger 模块的内存表个数,默认为 1
badger.num_level0_tablesint64Badger 模块的Level0内存表个数,默认为 1

资源限制 #

名称类型说明
resource_limit.cpu.max_num_of_cpusint允许使用的最大 CPU 核数,仅用于 Linux 操作系统,且 taskset 命令可用
resource_limit.cpu.affinity_liststring允许使用的 CPU 绑定设置,eg: 0,2,50-8,仅用于 Linux 操作系统,且 taskset 命令可用
resource_limit.memory.max_in_bytesstring允许使用的内存的最大大小,软性限制

网络配置 #

公共的网络配置说明。

名称类型说明
*.network.hoststring服务监听的网络地址,例如,192.168.3.10
*.network.portint服务监听的端口地址,例如,8000
*.network.bindingstring服务监听的网络绑定地址,例如,0.0.0.0:8000
*.network.publishstring服务监听的外部访问地址,例如,192.168.3.10:8000
*.network.reuse_portbool是否在多进程端口共享中重用网络端口
*.network.skip_occupied_portbool是否自动跳过已占用的端口

TLS 配置 #

公共的 TLS 配置说明。

名称类型说明
*.tls.enabledbool是否启用 TLS 安全传输,不指定证书可自动生成
*.tls.ca_filestringTLS 安全证书的公共 CA 证书路径
*.tls.cert_filestringTLS 安全证书的公共密钥路径
*.tls.key_filestringTLS 安全证书的私钥路径
*.tls.skip_insecure_verifybool是否忽略 TLS 证书验证
*.tls.default_domainstring用于自动生成证书的默认域名
*.tls.skip_domain_verifybool是否跳过域名验证
*.tls.client_session_cache_sizeint设置 TLS 会话恢复的最大客户端会话状态缓存大小

API #

名称类型说明
api.enabledbool是否启用 API 模块, 默认为 true
api.networkobject网络配置,请参考通用网络配置部分
api.tlsobjectTLS 配置,请参考通用 TLS 配置部分
api.securityobjectAPI 模块的安全配置
api.security.enabledbool是否启用安全性
api.security.usernamestring安全性的用户名
api.security.passwordstring安全性的密码
api.cors.allowed_origins[]string跨域请求可以执行的源列表
api.websocketobjectAPI 模块的 WebSocket 配置
api.websocket.enabledobject是否启用 WebSocket
api.websocket.permitted_hosts[]string允许访问 WebSocket 服务的主机列表
api.websocket.skip_host_verifybool是否跳过验证 WebSocket 的主机

其它配置 #

名称类型说明
preference.pipeline_enabled_by_defaultmapPipeline 是否默认启动,如果改成 false,则需要每个 Pipeline 配置显式设置 enabledtrue