redis2_next_upstream

当当前上游服务器未能正确响应时,`redis2_next_upstream` 指令确定 NGINX 何时应尝试将请求路由到不同的上游服务器。

语法redis2_next_upstream error | timeout | invalid_response | not_found | off;
默认值none
上下文http, server, location
参数1+

说明

redis2_next_upstream 指令允许用户指定在何种条件下 NGINX 应考虑切换到另一个上游 Redis 服务器。对于使用 NGINX 作为中介的基于 Redis 的应用来说,该指令对于确保高可用性和弹性至关重要。它接受一个或多个参数,每个参数表示会触发故障切换的具体条件。可用选项包括 errortimeoutinvalid_responsenot_found。通过定义这些条件,管理员可以调整 NGINX 的行为以更好地满足其应用的容错要求。

该指令可以在 httpserverlocation 上下文中配置,并且由于允许多个参数,可为错误处理提供灵活的方式。例如,如果 Redis 查询超时或返回无效响应,NGINX 可以在已指定的情况下自动切换到另一个上游 Redis 服务器。这在单点故障可能导致服务中断的环境中尤其有用,从而增强依赖 Redis 的应用的鲁棒性。

在配置该指令时应谨慎,因为过于激进的故障切换设置可能导致在瞬时故障期间快速在上游服务器之间轮换,这会加剧延迟并降低整体系统性能。因此,建议围绕应包含的条件制定周全的策略,以在可靠性和性能之间取得平衡。

配置示例

upstream redis_backend {
    server 127.0.0.1:6379;
    server 192.168.0.1:6379;
}

location /redis {
    redis2_pass redis_backend;
    redis2_next_upstream error timeout invalid_response;
    redis2_query get some_key;
}

确保 upstream 服务器已正确配置并处于可用状态,以避免不必要的故障切换尝试。

使用 'not_found' 时请谨慎,因为它可能导致对其他服务器的过度故障切换,即便是针对不存在的有效键也是如此。

避免为故障切换设置过多条件,因为这可能导致不断重试,从而引起性能下降。

← 返回所有指令