upsync

指令 `upsync` 允许 NGINX 从 Consul 或 Etcd 动态同步上游服务器配置,从而实现不中断服务的实时更新。

语法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 和键值存储上造成不必要的负载。

← 返回所有指令