被动健康检查

Nginx自带有健康检查模块:ngx_http_upstream_module,可以做到基本的健康检查,配置如下:

cat demo.conf
upstream cluster{
server 100.100.137.200:80 max_fails=3 fail_timeout=30s;
# max_fails=3 允许的最大失败次数,超过此值后认为服务器不可用
# fail_timeout=30s 服务器被标记为不可用的持续时间,以及超过max_fails后的冷却时间
}
server {
listen 80;
server_name www.demo.com;
location / {
proxy_pass http://cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

Nginx只有当有访问时后,才发起对后端节点探测。如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为多了一次转发,而且自带模块无法做到预警。

主动健康检查(需使用第三方模块)

下载nginx_upstream_check_module模块

wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
unzip master
cd /usr/local/nginx/sbin/
./nginx -V
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-pcre # 重新编译nginx ,命令和 configure arguments:后面显示的一样加--add-module=/usr/local/nginx-1.20.1/nginx_upstream_check_module-master
cd /usr/local/nginx-1.20.1/
./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-pcre --add-module=/usr/local/nginx-1.20.1/nginx_upstream_check_module-master
make
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
mv objs/nginx /usr/local/nginx/sbin/ cd /usr/local/nginx/sbin/
./nginx -V #查看有无新模块

配置主动健康检查

主动地健康检查,nignx定时主动地去ping后端的服务列表,当发现某服务出现异常时,把该服务从健康列表中移除,当发现某服务恢复时,又能够将该服务加回健康列表中。淘宝有一个开源的实现nginx_upstream_check_module模块

cat demo.conf
upstream cluster {
server 100.100.137.200:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_keepalive_requests 100;
check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 80;
server_name www.demo.com;
location / {
proxy_pass http://cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /status {
check_status; # 启用健康状态检查页面,展示所有配置了check指令的上游服务器状态
access_log off;
allow 100.100.137.0/24;
deny all;
}
} # 配置解释:
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
# interval=3000:每 3000 毫秒(3秒) 主动检查一次后端服务器状态。
# rise=2:连续 2 次 检查成功,才将服务器标记为 健康(alive)(避免偶发性成功误判)。
# fall=5:连续 5 次 检查失败,才将服务器标记为 不健康(down)(避免偶发性失败误判)。
# timeout=1000:每次检查的 超时时间 为 1000 毫秒(1秒),超时未响应视为失败。
# type=http:检查类型为 HTTP(还可以是 tcp 或 ssl_hello)。 check_keepalive_requests 100;
# check_keepalive_requests 100: 在同一个 TCP 连接上复用 100 次 HTTP 健康检查请求(减少连接建立开销)。适用于 HTTP/1.1,需配合 Connection: keep-alive 使用。 check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
# 定义发送给后端服务器的健康检查请求 check_http_expect_alive http_2xx http_3xx;
# 定义健康的响应条件:当后端返回 HTTP 状态码 2xx 或 3xx 时,认为服务器健康。其他状态码(如 4xx、5xx)或超时/连接失败会触发失败计数。

nginx健康检查详解的更多相关文章

  1. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  2. Nginx配置文件中文详解

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  3. nginx.conf配置详解

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  4. Nginx安全相关配置和nginx.conf中文详解

    一.centos下redis安全相关 1.背景 在使用云服务器时,如果我们的redis关闭了protected-mode模式,被病毒攻击的可能会大大增加,因此我们使用redis时候,最好更改默认端口, ...

  5. Nginx 安装与详解

    nginx简介 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用.nginx比它大哥apache性能改 ...

  6. Nginx配置项优化详解【转】

    (1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...

  7. Nginx服务优化详解

    Nginx服务优化详解 1.隐藏Nginx版本信息 编辑主配置文件nginx.conf,在http标签中添加代码 server_tokens off;来隐藏软件版本号. 2.更改Nginx服务启动的默 ...

  8. Nginx配置配置文件详解

    文章目录 配置文件 nginx.conf配置文件详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 事件相关配置 Fastcgi相关配置参数 常需要调整的参数 nginx作 ...

  9. Nginx 配置文件nginx.conf中文详解

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  10. Nginx 核心配置详解

    目录 Nginx 核心配置详解 Nginx 四层访问控制: Nginx账户认证功能: 自定义错误页面: 自定义访问日志: 检测文件是否存在: 长连接配置: 作为下载服务器配置: 作为上传服务器: 其他 ...

随机推荐

  1. 简述odoo18的一个请求执行流程

    以下是Odoo中一个完整请求走向的每一步所涉及的技术细节: 用户发起请求: 技术:HTTP/HTTPS协议,通过Web浏览器或其他HTTP客户端库. 到达WSGI服务器: 技术:通常使用Gunicor ...

  2. 五分钟扫盲:25个工作中常用的Linux命令

    目录 §基础篇 cd 命令 ls / ll 和 clear 命令 grep 命令 : 查找关键字 find命令 kill tail cp命令 mv命令 rm命令 mkdir命令 rmdir 命令 ca ...

  3. Spring、Spring Framework、Spring Boot、Spring Cloud的区别

    Spring Spring是一个生态体系(也可以说是技术体系),是集大成者,它包含了Spring Framework.Spring Boot.Spring Cloud等(还包括Spring Cloud ...

  4. java原生链利用

    java原生链利用 在上一个文章中我们利用Java原生链进行shiro的无依赖利用; 针对在没有第三方库的时候,我们该如何进行java反序列化; 确实存在一条不依赖第三方库的java反序列化利用链;但 ...

  5. crictl基础操作

    # 1. 查看机器上的镜像列表 crictl images ls # 2.删除机器上没用使用的镜像 crictl rmi --prune

  6. Docker修改Devicemapper存储驱动为Direct-lvm模式

    一.说明 Device mapper是基于内核的框架,支持Linux上许多高级卷管理技术.Docker中devicemapper存储驱动程序利用此框架的精简配置和快照功能进行镜像和容器管理. devi ...

  7. SM30里DEC数据显示0

    需求:DEC数据在维护的时候显示0 1,设置数据元素对于的域带转换历程. 2,写转换历程函数(注意两个历程的输入和输出类型,这个需要修改) FUNCTION conversion_exit_zdays ...

  8. 蛟分承影,雁落忘归 —— 袋鼠云一站式全自动化运维管家 ChengYing(承影)正式开源

    ​ 原文地址: 交流蛟分承影,雁落忘归--袋鼠云一站式全自动化运维管家ChengYing(承影)正式开源 技术交流:30537511(钉钉群) 我们兴奋的向大家宣布一个好消息 DTstackCon新成 ...

  9. Java学习篇(三)—— 集合框架

    集合框架是什么? 对容器的学习建议结合leecode,了解每一个容器的增删改查操作. 数据结构里学习了几种数据结构类型:数组.链表.栈.队列.树.哈希表.堆.在C++中,C++ STL提供了数组vec ...

  10. CSP-S 2024 游寄

    我不曾忘记 很好听的草神歌,打算推完经过就推这个 . 我的破木箱 装满枯萎的花 放不下 光与壤 和新鲜的愿望 如果能飞翔 去高高的地方 撒一张 梦的网 收集爱的回响 你也在听吗 落单的孩子啊 别害怕 ...