其它配置 #
高级用法 #
配置模板 #
示例:
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.template | array | 配置模板,可以指定多个模板和对应的参数 |
configs.template[].name | string | 配置的名称 |
configs.template[].path | string | 模板配置路径 |
configs.template[].variable | map | 模板的参数设置,变量在模板里面的用法:$[[变量名]] |
使用环境变量 #
极限网关支持在配置里面使用环境变量来进行灵活的参数控制。
首先在配置里面定义环境变量的默认值,如下:
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.data | string | 数据目录,默认为 data |
path.logs | string | 日志目录,默认为 log |
path.configs | string | 配置目录,默认为 config |
log.level | string | 日志级别,默认为 info |
log.debug | bool | 是否开启调试模式,当开启的时候,一旦出现异常程序直接退出,打印完整堆栈,仅用于调试定位故障点,默认为 false ,生产环境不要开启,可能丢数据 |
log.format | bool | 日志格式,默认为 [%Date(01-02) %Time] [%LEV] [%File:%Line] %Msg%n ,
Format References |
log.disable_file_output | bool | 是否关闭本地文件的日志输出,默认为 false ,容器环境不希望本地日志输出的可以开启本参数 |
allow_multi_instance | bool | 是否运行单个机器上面启动多个网关实例,默认为 false |
skip_instance_detect | bool | 是否跳过网关的实例检测,默认为 false |
max_num_of_instances | int | 网关实例的最大个数,默认为 5 |
configs.auto_reload | bool | 是否支持 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_size | int | 发送到队列单条消息的最小字节限制,默认 1 |
disk_queue.max_msg_size | int | 发送到队列单条消息的最大字节限制,默认 104857600 ,即 100MB |
disk_queue.sync_every_records | int | 每隔多少条记录进行一次 sync 磁盘同步操作,默认 1000 |
disk_queue.sync_timeout_in_ms | int | 每隔多长时间进行一次 sync 磁盘同步操作,默认 1000 毫秒 |
disk_queue.max_bytes_per_file | int | 本地磁盘队列单个文件的最大值,超过此大小自动滚动新文件,默认 104857600 ,即 100MB |
disk_queue.max_used_bytes | int | 本地磁盘队列可允许的最大存储使用空间大小 |
disk_queue.warning_free_bytes | int | 磁盘达到告警阈值的空闲存储空间大小,默认 10737418240 即 10GB |
disk_queue.reserved_free_bytes | int | 磁盘空闲存储空间大小的保护值,达到会变成只读,不允许写,默认 5368709120 即 5GB |
disk_queue.auto_skip_corrupted_file | bool | 是否自动跳过损坏的磁盘文件,默认 true |
disk_queue.upload_to_s3 | bool | 是否将磁盘队列文件上传到 S3,默认 false |
disk_queue.s3.async | bool | 是否异步上传到 S3 服务器 |
disk_queue.s3.server | string | S3 服务器 ID |
disk_queue.s3.location | string | S3 服务器位置 |
disk_queue.s3.bucket | string | S3 服务器 Bucket |
disk_queue.retention.max_num_of_local_files | int | 上传 s3 完的文件,按照最新的文件排序,保留在本地磁盘上的最大文件数,默认 3 |
disk_queue.compress.segment.enabled | bool | 是否开启文件级别的压缩,默认 false |
S3 #
示例:
s3:
my_blob_store:
endpoint: "192.168.3.188:9000"
access_key: "admin"
access_secret: "gogoaminio"
名称 | 类型 | 说明 |
---|---|---|
s3.[id].endpoint | string | S3 服务器地址 |
s3.[id].access_key | string | S3 服务器 Key |
s3.[id].access_secret | string | S3 服务器秘钥 |
s3.[id].token | string | S3 服务器 Token 信息 |
s3.[id].ssl | bool | S3 服务器是否开启了 TLS |
s3.[id].skip_insecure_verify | bool | 是否忽略 TLS 证书校验 |
Kafka #
极限网关支持在使用分布式 Kafka 作为后端队列,相关参数如下。
名称 | 类型 | 说明 |
---|---|---|
kafka.enabled | bool | Kafka 模块是否开启 |
kafka.default | bool | Kafka 模块是否作为默认 Queue 的实现 |
kafka.num_of_partition | int | 默认的分区数量,默认 1 |
kafka.num_of_replica | int | 默认的分区副本数量,默认 1 |
kafka.producer_batch_max_bytes | int | 最大提交请求大小,默认 50 * 1024 * 1024 |
kafka.max_buffered_records | int | 最大缓存请求记录数,默认 10000 |
kafka.manual_flushing | bool | 是否手动 flushing,默认 false |
kafka.brokers | []string | 服务器地址信息 |
kafka.username | string | 用户信息 |
kafka.password | string | 密码信息 |
Badger #
Badger 是一个轻量级的基于磁盘的 KeyValue 存储引擎,极限网关使用 Badger 来实现 KV 模块的存储。
名称 | 类型 | 说明 |
---|---|---|
badger.enabled | bool | 是否启用 Badger实现的 KV 模块,默认为 true |
badger.single_bucket_mode | bool | Badger 模块使用单桶模式,默认为 true |
badger.sync_writes | bool | Badger 模块使用同步写,默认为 false |
badger.mem_table_size | int64 | Badger 模块的内存表大小,默认为 10 * 1024 * 1024 ,即 10485760 |
badger.value_log_file_size | int64 | Badger 模块的日志文件大小,默认为 1<<30 - 1 ,即 1g |
badger.value_log_max_entries | int64 | Badger 模块的日志消息个数,默认为 1000000 ,即 1million |
badger.value_threshold | int64 | Badger 模块的日志文件大小,默认为 1048576 ,即 1m |
badger.num_mem_tables | int64 | Badger 模块的内存表个数,默认为 1 |
badger.num_level0_tables | int64 | Badger 模块的Level0内存表个数,默认为 1 |
资源限制 #
名称 | 类型 | 说明 |
---|---|---|
resource_limit.cpu.max_num_of_cpus | int | 允许使用的最大 CPU 核数,仅用于 Linux 操作系统,且 taskset 命令可用 |
resource_limit.cpu.affinity_list | string | 允许使用的 CPU 绑定设置,eg: 0,2,5 或 0-8 ,仅用于 Linux 操作系统,且 taskset 命令可用 |
resource_limit.memory.max_in_bytes | string | 允许使用的内存的最大大小,软性限制 |
其它配置 #
名称 | 类型 | 说明 |
---|---|---|
preference.pipeline_enabled_by_default | map | Pipeline 是否默认启动,如果改成 false ,则需要每个 Pipeline 配置显式设置 enabled 为 true |