OpenResty动态后端热加载
文章目录
使用到的模块: https://github.com/weibocom/nginx-upsync-module
通过第三方注册中心(Etcd/Consul
),NGINX/OpenResty
从第三方拿后端信息,实现同步。该模块在修改后端注册中心时,无需重载(reload
)NGINX/OpenResty
。
实践
1. 准备Consul
|
|
|
|
2. NGINX/OpenResty
-
安装
因为该模块不是标准模块,需要将相关产品的源码下载下来,通过
--add-module
重新编译,将模块整合进去,此处略… -
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
... upstream test { upsync IP:PORT/v1/kv/upstreams/UPSTREAM_NAME/ upsync_timeout=10s upsync_interval=5000ms upsync_type=consul strong_dependency=off; upsync_dump_path servers_test.conf; include servers_test.conf; server 127.0.0.1:8090 backup; } ... # 查看当前后端的主机 location = /upstream-show { allow IP.Address; deny all; upstream_show; } ...
有一个小
Bug
,第一次启动时,要往servers_test.conf
文件里面写入至少一台后端,不然会因为upstream
内没有可用的server
而导致主进程无法启动。1 2
# serers_test.conf server 127.0.0.1:9099;
-
注册后端服务
1 2
# 格式 curl -XPUT IP:PORT/v1/kv/upstreams/UPSTREAM_NAME/SERVER_ADDR:PORT
-
启动即可。通过
ConsulAddress:8500
管理地址可以删除KEY
观察后端效果
文章作者 UnknowName
上次更新 2020-11-23