nginx负载均衡之健康检查

2023-11-19

严格来说,nginx到目前为止没有针对负载均衡后端节点的健康检测的模块,但是可以通过upstream负载均衡组中的max_fails=numberfail_timeout=time来间接实现,但还是会把请求转发给故障服务器的,然后再转发给别的服务器,这样就需要多一次转发。nginx_upstream_check_module为淘宝技术团队开发的nginx模块,用来检测后端服务器的健康状态,如果后端服务器不可用,则请求不再转发到这台服务器。

官网: https://github.com/yaoweibin/nginx_upstream_check_module

0x01: 安装nginx_upstream_check_module模块

以下命令均在root用户下执行

wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/refs/tags/v0.4.0.tar.gz

进入nginx源码目录,进行打该模块的补丁(这一步千万不能遗漏)

nginx-1.22.0目录执行如下命令,nginx_upstream_check_module源码目录跟nginx源码目录同级

patch -p1 <  /usr/local/src/nginx_upstream_check_module-0.4.0/check_1.20.1+.patch

然后通过./configure --add-module来增加模块

./configure --prefix=/usr/local/nginx-1.22.0/ --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --user=www --group=www --add-module=/usr/local/src/nginx_upstream_check_module-0.4.0

0x02:配置nginx upstream参数

  • 健康检查配置

upstream testserver {

    server 192.168.159.161:80;

    server 192.168.159.162:80;

    check interval=1000 rise=3 fall=3 timeout=500 type=http;

    check_http_send "HEAD / HTTP/1.0\r\n\r\n";

    check_http_expect_alive http_2xx http_3xx;

}

interval: 向后端发送的健康检查包的间隔,单位为毫秒

rise: 如果连续成功次数达到rise_count,服务器就被认为是up

fall: 如果连续失败次数达到fall_count,服务器就被认为是down

timeout: 后端健康请求的超时时间,单位为毫秒

type: 健康检查包的类型,支持tcpssl_hellohttpmysqlajp

  • 如果想查看后端服务器实时的健康状态,可以在对应server中增加以下location配置

    location /upstatus {

        check_status;

        access_log off;

        #allow SOME.IP.ADD.RESS;

        #deny all;

    }

0x03:查看健康检查状态

通过http://192.168.159.160/upstatus 页面查看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx负载均衡之健康检查 的相关文章

  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • Nginx 对 cms 后端的重写规则

    我需要在 nginx 服务器中制定 url 重写规则 服务器块 就像我之前的 apache 服务器一样 这是 htaccess 中的代码 我需要将其实现 转换 到我现有的代码中 RewriteRule A Za z0 9 A Za z0 9
  • 如何设置 Nginx URI 以修复重定向到指定位置中的空 URI

    问题 当使用包含 符号的无效 URL 访问我们的网站时 Nginx 会抛出 400 Bad Request 错误 我们希望将请求重写为 WordPress 404 页面 而不是 Nginx 页面 我已经尝试过以下方法 location 40
  • 从 Nginx 到 Express.js 上的 socket.io 的反向代理上“无法获取”

    我已经关注了通过私有网络让 Node js 在两台 Ubuntu 14 04 服务器上通过 Nginx 工作 Node js 位于 myappserver 上 通过私有 IP myprivatewebserver 访问 并通过 mypubl
  • uWSGI重启时停机

    每次当我有代码更新时重新启动服务器时 我都会遇到 uwsgi 问题 当我使用 sudo restart account 重新启动 uwsgi 时 停止和启动实例之间存在一个小间隙 导致停机并停止所有当前请求 当我尝试 sudo reload
  • 如何将亚马逊颁发的免费证书配置到nginx.config

    我已经安装了nginx服务器在Amazon Linux 2环境 在创建弹性负载均衡器期间 我创建了 Amazon 的免费证书 现在 我想通过以下方式访问我的服务器https port 443 我该如何配置这个SSL证书在nginx conf
  • NGINX 与 Tomcat 配置

    我是 Nginx 新手 我需要你的帮助 根据很多论坛我了解到我们所有的静态页面都存储在Nginx中 当有请求到来时 我必须将该请求传递给 tomcat 获取数据 并在 tomcat 生成响应后生成响应 目前 我刚刚做到了 我将请求直接传递给
  • 上传大文件(几 GB)时,nginx 返回内部服务器错误

    我在 nginx 后面有一个 Artifactory 上传大于 4 GB 的文件失败 我相当确定这是 nginx 的错误 因为如果文件从本地主机上传 上传到本地主机 则不会出现问题 nginx 设置为client max body size
  • Docker:Nginx 和 php5-fpm docker 不说话

    我想进行完全 Docker 化的 Drupal 安装 我的第一步是让容器与 Nginx 和 php5 fpm 一起运行 两者都基于 Debian 我在 CoreOS alpha 频道 使用 Digital Ocean 我的 Dockerfi
  • 如何在位置中使用 Nginx Regexp

    Web 项目将静态内容放入 some content img 文件夹中 url规则为 img some md5 但文件夹中的位置 content img 前两位数字 Example url example com img fe5afe048
  • 如何在运行 NGINX Docker 容器的 AWS EC2 上启用 HTTPS?

    我在 AWS 上有一个运行 Amazon Linux 2 的 EC2 实例 在上面 我安装了 Git docker 和 docker compose 完成后 我克隆了我的存储库并运行docker compose up让我的生产环境启动 我访
  • Django + uwsgi + ngnix + 调试关闭 = 服务器错误(500)

    我正在尝试设置一个由 Django uwsgi Nginx 组成的生产服务器 我正在关注的教程位于此处http www panta info blog 3 how to install and configure nginx uwsgi a
  • 将代码从 htaccess 重写为 nginx 配置?

    我在将 htaccess 文件中的重写代码实现到 nginx 配置中时遇到问题 我已经尝试过生成器 http winnginx com htaccess http winginx com htaccess用于生成我的重写 代码 我的ngin
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • Beanstalk 部署忽略 .ebextensions 中的 nginx 配置文件

    我在单实例 Elastic Beanstalk 环境中托管 Java Web 应用程序 并添加了几个 ebextension 文件 这些文件在每次部署时成功为我创建配置文件 然而 我无法找到一种方法让 Beanstalk 在 etc ngi
  • Docker 中的 NGINX 缓存 IP 地址并提供错误的 Content-Type

    Summary 我想让NGINX 不是NGINX Plus 通过使用变量从DNS名称重新解析IP地址proxy pass 如建议的这篇 Nginx 官方文章 在变量中设置域名 部分 https www nginx com blog dns
  • 如何修复 Nginx 自动 301 重定向到带有尾部斜杠的相同 URL?

    当我尝试将 Web 应用程序的子目录中的索引文件访问到相同的 URL 但附加了斜杠 时 Nginx 出现了不良行为 它正在重新路由请求 我有一个简单的 Web 应用程序 其中设置了一个根目录和其中的许多子目录 每个子目录中都有一个 inde
  • 错误请求 400:nginx/gunicorn

    我已经遵循了这个教程 http blog wercker com 2013 11 25 django 16 part3 html http blog wercker com 2013 11 25 django 16 part3 html我现
  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链

随机推荐

  • 【阅读笔记】联邦学习实战——联邦学习医疗健康应用案例

    联邦学习实战 联邦学习医疗健康应用案例 前言 1 医疗健康数据概述 2 联邦医疗大数据与脑卒中预测 2 1 联邦数据预处理 2 2 联邦学习脑卒中预测系统 3 联邦学习在医疗影像中的应用 3 1 肺结节案例描述 3 2 数据概述 3 3 联
  • 超越所有MIM模型的BEiT v2来了!微软使用矢量量化视觉Tokenizers的掩码图像建模!

    写在前面 蒙面图像建模 MIM 通过恢复损坏的图像patch 在自监督表示学习中展示了令人印象深刻的结果 然而 大多数方法仍然对低级图像像素进行操作 这阻碍了对表示模型的高级语义的利用 在这项研究中 作者提出使用语义丰富的视觉标记器作为掩码
  • 【论文精读】ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision

    Hierarchical Text Conditional Image Generation with CLIP Latents 前言 Abstract 1 Introduction 2 Background 2 1 Taxonomy of
  • Android编译之常用配置及mk模板使用(汇总一)

    Android编译之常用配置及mk模板使用 引言 编译选项 1 eng 2 user 3 userdebug 模块编译常量宏 常用模块编译模板 1 编译一个APK 2 编译一个Java 共享库和静态库 3 编译一个Native 共享库和静态
  • 利用python做数据分析

    数据分析是指对数据进行控制 处理 整理 分析的过程 在这里 数据 是指结构化的数据 例如 记录 多维数组 Excel 里的数据 关系型数据库中的数据 数据表等 1 为什么要用python做数据分析 很多人都有兴趣选择python作为数据分析
  • 阿里P7大牛亲自教你!妈妈再也不用担心我的面试,讲的明明白白!

    第一次观看我文章的朋友 可以关注 点赞 转发一下 每天分享各种干货技术和程序猿趣事 前言 随着移动终端的快速发展 Android开发人员也越来越多 Android开发市场也进入了一个饱和的状态 Android开发人员也面临着难找一份好工作的
  • 虚拟机 服务器死机,VMware虚拟机开机卡死黑屏,进不了系统解决办法

    Vmware虚拟机Linux Ubuntu CentOS windowns开机启动卡死黑屏 想重置虚拟机又没有拍摄快照 重新装一次虚拟机 别着急 这里有个方法可以试一试 VMware 15 5 0 build 14665864 物理机操作系
  • python怎么算数据平均数,python怎样求10个数的平均数

    python怎样求10个数的平均数 发布时间 2021 03 12 09 18 47 来源 亿速云 阅读 100 作者 小新 这篇文章主要介绍了python怎样求10个数的平均数 具有一定借鉴价值 感兴趣的朋友可以参考下 希望大家阅读完这篇
  • Java JDBC快速上手

    一 JDBC介绍 JDBC Java DataBase Connectivity Java的数据库连接 JDBC 本质上是由sun公司开发的一套操作数据库的接口 规范 各个数据库厂商要想使用Java连接自己的数据库 都必须按照JDBC接口的
  • r如何让新增加的列出现在第一列 r如何调整新增加的列的位置

    https www cnblogs com liujiaxin2018 p 16211983 html 1 任意位置插入列 复制代码 gt a lt letters 1 5 gt b lt LETTERS 1 5 gt c lt sampl
  • 单元测试方法

    目录 一 单元测试概述 目录 一 单元测试概述 1 单元测试是什么呢 2 我们目前测试方法是怎么进行的 存在什么问题 3 Junit单元测试框架 4 JUnit优点 二 单元测试实现步骤 1 需求 使用单元测试进行业务方法预期结果 正确性测
  • AltiumDesigner下载安装

    原文来自公众号 工程师看海 AltiumDesigner的特点是交互人性化 上手简单 显示画面美观 是很多硬件工程师入门之选 在我的公众号 后台回复 altium designer 可以得到altium designer的安装包和和谐方法
  • 【ES】QueryBuilder构造ES查询条件:精准匹配、模糊搜索、范围查询、and、or

    private QueryBuilder getQueryBuilder termsQuery key obj1 obj2 一次匹配多个值 matchQuery key Obj 单个匹配 field不支持通配符 前缀具高级特性 multiM
  • Mysql分库分表方案

    Mysql分库分表方案 Mysql分库分表方案 1 为什么要分表 当一张表的数据达到几千万时 你查询一次所花的时间会变多 如果有联合查询的话 我想有可能会死在那儿了 分表的目的就在于此 减小数据库的负担 缩短查询时间 mysql中有一种机制
  • Hadoop知识点整理

    知识点大纲 一 初识Hadoop 1 mapreducer 和rdbms区别 2 结构化数据 非结构化数据 半结构化数据 3 hadoop发展历程 二 关于MapReducer 1 新老API对比 2 MapReducer 执行步骤 3 c
  • filebeat多个日志输出多条索引

    vim filebeat yml filebeat prospectors type log enabled true paths opt zcsy hbase logs hbase hadoop regionserver cd zcsy
  • Windows 10 安装Qt5.15.2以及vs2019

    Windows 10 安装Qt5 15 2以及vs2019 一 安装Qt5 15 2 下载Qt5 15 2 下载地址 阿里云盘 安装 Qt5 15 2 输入账号进行在线安装 点击NEXT进入下一步 注 账号密码需要去QT官网申请帐号 账号申
  • WebSocket + kafka实时推送数据(springboot纯后台)

    逻辑 kafka订阅消费者主题 消费后通过webSocket推送到前端 kafka vue financial webSocket 学习引用 SpringBoot2 0集成WebSocket 实现后台向前端推送信息 World Of Mos
  • Java_web初级学习01搭建环境

    一 安装jdk以及JAVA HOME JRE HOME配置 1 安装jdk 这里可以修改路径 2 设置JAVA HOME和JRE HOME环境变量 计算机 图标上右键 gt 属性 gt 高级系统设置 配置JAVA HOME环境变量 到jdk
  • nginx负载均衡之健康检查

    严格来说 nginx到目前为止没有针对负载均衡后端节点的健康检测的模块 但是可以通过upstream负载均衡组中的max fails number和fail timeout time来间接实现 但还是会把请求转发给故障服务器的 然后再转发给