upsync
指令 `upsync` 允许 NGINX 从 Consul 或 Etcd 动态同步上游服务器配置,从而实现不中断服务的实时更新。
NGINX module for syncing upstreams from consul or etcd
·
upstream
语法upsync address [upsync_timeout=duration] [upsync_interval=duration] [upsync_type=type] [strong_dependency=on | off];
默认值none
上下文upstream
参数1+
说明
upsync 指令是 NGINX 模块的一个强大功能,可从像 Consul 或 Etcd 这样的键值存储同步上游服务器配置。此同步在不需要重启 NGINX 的情况下进行,从而避免任何停机并确保持续的服务交付。当在 upstream 上下文中使用时,该指令至少需要一个参数,用于指定 Consul 或 Etcd 服务器的地址以及指向上游配置的路径。可以包含其他参数,例如 upsync_timeout(定义同步操作的超时时间)和 upsync_interval(设置同步检查的频率)。此外,upsync_type 参数用于标识被访问的存储类型(例如 Consul 或 Etcd)。
配置成功后,NGINX 可以根据键值存储的定义自动添加或移除后端服务器,实时修改诸如权重和健康检查等相关属性。如果服务器发生故障或变得不健康,可以在不需要管理员任何操作的情况下无缝地将其从上游移除。该模块还提供指定转储路径的选项,可以将当前的上游配置状态保存到该路径,便于手动检查或在必要时回滚。
配置示例
http {
upstream my_upstream {
upsync 127.0.0.1:8500/v1/kv/upstreams/my_app upsync_timeout=10s upsync_interval=1s upsync_type=consul;
}
server {
listen 80;
location / {
proxy_pass http://my_upstream;
}
}
}⚠
确保为 Consul 或 Etcd 提供正确的 IP 地址和端口,否则同步将失败。
⚠
注意 strong_dependency 设置,因为它会影响故障情况下上游服务器的管理——误用它可能导致不希望的服务器被移除。
⚠
了解将同步间隔配置得过短的影响,因为这会在 NGINX 和键值存储上造成不必要的负载。