之前有做过介绍实现极限网关(INFINI Gateway) 配置动态加载,这是一个 Gateway 实例的操作,直接在服务器上修改配置文件。如果有多个 Gateway 实例需要调整,登录多台主机修改配置文件就有些繁琐,有没有简便的方法呢?
答案是: 当然有!
INFINI Gateway 有配套的管理页面,那就是 INFINI Console。
Gateway 注册到 Console 后,就可以在如下的页面上进行管理。
其中 Config 可以查看到当前 Gateway 的配置。
当然不止有查看功能,也可以在这里修改配置,然后下发给 Gateway。
要实现这一功能,需要有相应的配置。
- 需要将下发的配置进行存储(存到 Console 的系统集群索引 .infini_configs 中)
python
PUT .infini_configs/_doc/gateway_proxy_yml
{
"payload": {
"content": """
entry:
- name: my_es_entry
enabled: true
router: my_router
max_concurrency: 200000
network:
binding: 0.0.0.0:8000
flow:
- name: simple_flow
filter:
- http:
schema: https
host: 192.168.0.102:9200
router:
- name: my_router
default_flow: simple_flow""",
"version": 1,
"name": "gateway_proxy.yml"
},
"metadata": {
"labels": {
"instance": "_all"
},
"category": "app_settings",
"name": "gateway"
},
"id": "gateway_proxy_yml"
}
字段 | 是否必须 | 说明 |
---|---|---|
payload.content | 是 | 具体的 Gateway 配置 |
payload.version | 是 | 当前配置的版本,用于确认是否同步配置 |
payload.name | 是 | 配置下发后落地的文件名 |
metadata.labels | 是 | 配置标签,instance: _all 表明所有 Gateway 实例都可以同步该配置 |
metadata.category | 是 | 配置属于应用配置,Gateway 应填写 app_settings |
metadata.name | 是 | 配置属于哪类应用,可选 gateway、agent |
id | 是 | 配置 ID |
- 配置 Gateway
yaml
env:
CONFIG_SERVER: http://192.168.0.102:9000
path.data: data
path.logs: log
path.configs: config # directory of additional gateway configurations
configs:
auto_reload: true # set true to auto reload gateway configurations
#for managed client's setting
managed: true # managed by remote servers
panic_on_config_error: false #ignore config error
interval: "10s"
servers: # config servers
- $[[env.CONFIG_SERVER]]
soft_delete: false
max_backup_files: 5
api:
enabled: true
network:
binding: 0.0.0.0:2900
配置中心参数详情请查阅文档。
- 创建额外配置存储目录并启动 Gateway。
bash
mkdir config
./gateway-mac-amd64
从日志中,可以看到 Gateway 已经注册到配置管理,获取到 gateway_proxy.yml,然后配置重新加载。
通过 Console 的 Gateway 配置管理页面查看下发的配置:
在页面上调整配置,点击 Save 保存。
注:更新完配置后,需同时增大配置的版本号(MANAGED_CONFIG_VERSION)。
从 Gateway 日志中可以看到,配置文件进行了同步并应用。