【nginx】nginx怎么让出问题的代理服务器优雅地退出

本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

【nginx】nginx怎么让出问题的代理服务器优雅地退出

背景:

业务对部分链接线路敏感度不同进行优雅退出

实现:使用 upstream里面的fail_timeoutmax_fails 指令来配置服务器的故障转移行为。

这些指令可以在 upstream 块中为每个服务器设置,用以控制在特定时间内允许的失败次数(如连接失败、超时等),以及在达到失败次数后服务器被标记为不可用的时间。

具体配置:

展示如何设置当服务器在 10 秒内失败 10 次后,将其屏蔽 10 秒:

复制代码
upstream backend {
    server backend1.example.com max_fails=10 fail_timeout=10s;
    server backend2.example.com max_fails=10 fail_timeout=10s;
    # 可以继续添加更多服务器
}

配置解释:

  1. max_fails

    • 这个指令设置了在 fail_timeout 指定的时间窗口内允许的最大失败次数。在这个例子中,我们设置为 10 次。
  2. fail_timeout

    • 这个指令定义了在服务器被标记为失败后,多长时间内服务器将被认为是不可用的。在这个例子中,我们设置为 10 秒。

完整NG配置:

复制代码
http {
    upstream backend {
        server backend1.example.com max_fails=10 fail_timeout=10s;
        server backend2.example.com max_fails=10 fail_timeout=10s;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

注意事项:

  • 监控:确保监控你的后端服务器的健康状况和 Nginx 的错误日志,这样你可以及时了解到任何可能出现的问题。
  • 调整和优化 :根据实际的服务器性能和业务需求,调整 max_failsfail_timeout 的值。过于敏感或过于宽松的设置都可能不利于系统的稳定性和可用性。
  • 测试:在生产环境部署前,通过各种模拟故障的测试来验证这些设置的效果,确保它们能如预期般工作。

通过这样的配置,你可以让 Nginx 在后端服务器频繁失败时自动进行暂时的屏蔽,从而增加系统的整体稳定性和可靠性。

相关推荐
月亮!28 分钟前
移动端测试重磅升级:跨平台自动化测试框架深度对比
运维·网络·人工智能·测试工具·容器·自动化·测试用例
凯子坚持 c1 小时前
Docker 容器全生命周期管理与运维命令深度解析
运维·docker·php
java_logo2 小时前
MILVUS Docker 容器化部署指南
运维·人工智能·docker·容器·prometheus·milvus
渡我白衣2 小时前
计算机组成原理(1):计算机发展历程
java·运维·开发语言·网络·c++·笔记·硬件架构
_OP_CHEN2 小时前
【Git原理与使用】(一)告别文件混乱!Git 初识:从版本灾难到高效管理的终极方案
linux·运维·git·github·运维开发·版本控制·企业级组件
装不满的克莱因瓶2 小时前
【Java架构 搭建环境篇三】Linux安装Git详细教程
java·linux·运维·服务器·git·架构·centos
MC皮蛋侠客3 小时前
Linux安装go及环境配置教程
linux·运维·golang
满天点点星辰3 小时前
Linux命令大全-find命令
linux·运维·服务器
H_z_q24013 小时前
RHCE的条件测试
linux·运维·服务器
wanhengidc3 小时前
免费云手机的安全性如何?
运维·服务器·安全·智能手机·生活