其它配置

其它配置 #

高级用法 #

配置模板 #

示例:

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 #

配置、数据、日志相关路径配置。

示例:

path.data: data
path.logs: log
path.configs: "config"
名称类型说明
path.datastring数据目录,默认为 data
path.logsstring日志目录,默认为 log
path.configsstring配置目录,默认为 config

Log #

日志相关配置。

示例:

log:
  level: info
  debug: false
名称类型说明
log.levelstring日志级别,默认为 info
log.debugbool是否开启调试模式,当开启的时候,一旦出现异常程序直接退出,打印完整堆栈,仅用于调试定位故障点,默认为 false,生产环境不要开启,可能丢数据
log.formatbool日志格式,默认为 [%Date(01-02) %Time] [%LEV] [%File:%Line] %Msg%nFormat References
log.disable_file_outputbool是否关闭本地文件的日志输出,默认为 false,容器环境不希望本地日志输出的可以开启本参数

Configs #

配置管理相关配置。

示例:

configs:
  auto_reload: true
  managed: true
  panic_on_config_error: false 
  interval: "1s"
  servers:
    - "http://localhost:9000"
  max_backup_files: 5
  soft_delete: false
  tls:
    enabled: false
    cert_file: /etc/ssl.crt
    key_file: /etc/ssl.key
    skip_insecure_verify: false
名称类型说明
configs.auto_reloadbool是否支持 path.configs 里面配置的动态加载
configs.managedbool是否支持由配置中心进行配置管理
configs.servers[]string配置中心地址
configs.intervalstring配置同步间隔
configs.soft_deletebool配置文件删除为软删除,默认 true
configs.panic_on_config_errorbool配置加载如果有错误就直接崩溃,默认 true
configs.max_backup_filesint配置文件最大备份数,默认 10
configs.valid_config_extensions[]string有效的配置文件后缀,默认 .tpl, .json, .yml, .yaml
configs.tlsobjectTLS 配置(请参考通用 TLS 配置)
configs.always_register_after_restartbool实例重启后是否进行注册,实例运行在 K8S 环境下,需开启此参数。
configs.allow_generated_metrics_tasksbool允许自动生成采集指标任务
configs.ignored_path[]string需要忽略的配置文件路径

本地磁盘队列 #

示例:

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 的主机

Metrics #

配置系统指标采集。

示例:

metrics:
  enabled: true
  queue: metrics
  network:
    enabled: true
    summary: true
    details: true
  memory:
    metrics:
      - swap
      - memory
  disk:
    metrics:
      - iops
      - usage
  cpu:
    metrics:
      - idle
      - system
      - user
      - iowait
      - load
名称类型说明
enabledbool是否开启系统指标采集,默认 true
queuestring指标采集队列
networkobject采集网络指标配置
network.enabledbool是否采集网络指标,默认 true
network.summarybool是否采集 summary 指标
network.socketsbool是否采集相关 socket 指标
network.throughputbool是否采集 throughput 指标
network.detailsbool是否将网络 IO 指标进行累计
network.interfaces[]string指定需要采集的网络接口,默认采集所有接口
memoryobject采集内存指标配置
memory.enabledbool是否开启内存指标的采集,默认 true
memory.metrics[]string指定采集相关指标,可选 swapmemory
diskobject采集磁盘指标配置
disk.metrics[]string指定采集相关指标,可选 usageiops
cpuobject采集 CPU 指标配置
cpu.metrics[]string指定采集相关指标,可选 idlesystemuseriowaitload

Node #

节点相关配置。

示例:

node:
  major_ip_pattern: ".*"
  labels:
    env: dev
  tags:
    - linux
    - x86
    - es7
名称类型说明
major_ip_patternstring如果主机上有多个 IP,用 pattern 来控制以哪个 IP 为主,当注册时用于上报。
labelsmap自定义标签
tags[]string自定义标签

其它配置 #

名称类型说明
preference.pipeline_enabled_by_defaultmapPipeline 是否默认启动,如果改成 false,则需要每个 Pipeline 配置显式设置 enabledtrue
allow_multi_instancebool是否允许同一程序启动多个实例,默认为 false
skip_instance_detectbool是否跳过实例检测,默认为 false
max_num_of_instancesint同一程序可同时运行的实例的最大个数,默认为 5
Edit 编辑本页