upsync

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

语法upsync address [upsync_timeout=duration] [upsync_interval=duration] [upsync_type=type] [strong_dependency=on | off];
默认值none
上下文upstream
参数1+

说明

upsync 指令是 NGINX 模块的一个强大功能,用于从像 Consul 或 Etcd 这样的键值存储同步 upstream 服务器配置。此同步在不需要重启 NGINX 的情况下进行,从而避免任何停机并确保持续的服务交付。当在 upstream 上下文中使用时,该指令至少需要一个参数,用以指定 Consul 或 Etcd 服务器的地址以及 upstream 配置的路径。可以包含其他参数,例如 upsync_timeout(定义同步操作的时间限制)和 upsync_interval(设置同步检查的频率)。此外,参数 upsync_type 用于标识正在访问的存储类型(例如 Consul 或 Etcd)。

配置成功后,NGINX 可以根据键值存储的定义自动添加或删除后端服务器,实时修改诸如权重和健康检查等相关属性。如果某个服务器失败或变得不健康,它可以在不需要管理员任何操作的情况下无缝地从 upstream 中移除。该模块还提供指定转储路径的选项,可将当前的 upstream 配置状态保存到该路径,以便在必要时进行手动检查或回滚。

配置示例

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 和键值存储上产生不必要的负载。

← 返回所有指令