被动健康检查

upstream backend {
    server backend1.example.com:12345;
    server backend2.example.com:12345 max_fails=3 fail_timeout=30s;
}

被动健康检查说明

  • max_fails=3:设置最大失败次数为 3
  • fail_timeout=30s:设置失败超时时间为 30 秒

被动健康检查原理: 被动健康检查是一种基于连接状态的健康检查方法,当连接失败时,会计入失败次数,当失败次数达到上限时,后端服务器会被标记为不可用。

参数说明

参数说明默认值
max_fails最大失败次数1
fail_timeout失败超时时间10s

参数说明原理

  • max_fails:设置最大失败次数,当失败次数达到上限时,后端服务器会被标记为不可用
  • fail_timeout:设置失败超时时间,当后端服务器被标记为不可用后,会在失败超时时间后重新尝试连接

健康检查流程

健康检查流程分为以下几个步骤:

  1. Nginx 尝试连接:Nginx 尝试连接后端服务器
  2. 后端服务器响应:后端服务器响应连接请求
  3. Nginx 检查连接状态:Nginx 检查连接状态,如果连接失败,会计入失败次数
  4. Nginx 检查失败次数:Nginx 检查失败次数,如果失败次数达到上限,后端服务器会被标记为不可用
  5. Nginx 重新尝试连接:Nginx 会在失败超时时间后重新尝试连接后端服务器

健康检查流程原理: 健康检查流程分为五个步骤,Nginx 尝试连接后端服务器,后端服务器响应连接请求,Nginx 检查连接状态,如果连接失败,会计入失败次数,Nginx 检查失败次数,如果失败次数达到上限,后端服务器会被标记为不可用,Nginx 会在失败超时时间后重新尝试连接后端服务器。

示例

upstream backend {
    server backend1.example.com:12345 max_fails=3 fail_timeout=30s;
    server backend2.example.com:12345 max_fails=2 fail_timeout=20s;
}

server {
    listen 12345;
    proxy_pass backend;
}

示例说明

  • backend1.example.com:12345 max_fails=3 fail_timeout=30s:设置最大失败次数为 3,失败超时时间为 30 秒
  • backend2.example.com:12345 max_fails=2 fail_timeout=20s:设置最大失败次数为 2,失败超时时间为 20 秒

示例原理

  • backend1.example.com:12345 会在失败 3 次后被标记为不可用,会在 30 秒后重新尝试连接
  • backend2.example.com:12345 会在失败 2 次后被标记为不可用,会在 20 秒后重新尝试连接

注意事项

  • 被动健康检查基于连接状态
  • 连接失败会计入失败次数
  • 失败次数达到上限后,服务器会被标记为不可用
  • 失败超时时间后,服务器会重新尝试连接