负载均衡健康检查通过定期向后端服务器发送探测请求来验证其可用性,若连续失败则将其从服务池中剔除。具体做法是配置健康检查的协议(如http、tcp)、端口、路径及超时时间,并设置合理的阈值以平衡检测灵敏度与误判率。

HTTP健康检查如何配置路径和预期状态
在HTTP模式下,负载均衡器会向指定URL发起GET请求,并根据返回的HTTP状态码判断健康与否。通常将路径设为`/health`或`/ping`,预期状态码设为200。若服务器返回非200状态或连接超时,则视为不健康。

import requests
def check_health(url, expected_status=200, timeout=5):
try:
response = requests.get(url, timeout=timeout)
return response.status_code == expected_status
except requests.exceptions.RequestException:
return False
# 示例调用
url = "http://backend-server:8080/health"
is_healthy = check_health(url)
print(f"Server is healthy: {is_healthy}")
上述代码模拟了HTTP健康检查逻辑。当访问`/health`路径时,若服务器正常响应且状态码为200,则函数返回True;若发生网络异常或超时,则返回False。实际部署中,需确保后端应用暴露该端点并返回正确状态码。
TCP健康检查如何验证端口连通性
TCP健康检查仅尝试建立到后端服务器指定端口的TCP连接,成功则视为健康,失败则标记为不健康。这种方式适用于非HTTP服务,如数据库或自定义协议服务。配置时需指定目标IP、端口及超时时间。

import socket
def check_tcp_port(host, port, timeout=5):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
result = sock.connect_ex((host, port))
sock.close()
return result == 0
except Exception:
return False
# 示例调用
host = "backend-server"
port = 3306
is_reachable = check_tcp_port(host, port)
print(f"Port {port} is reachable: {is_reachable}")
此代码演示了TCP端口连通性检查。通过创建TCP套接字并尝试连接指定主机和端口,若连接成功(返回码为0),则认为端口可达。该方法简单有效,适用于任何基于TCP的服务,无需应用层协议支持。
健康检查失败后如何处理后端节点
当健康检查连续失败达到设定阈值时,负载均衡器会将该后端节点标记为“不健康”并从可用池中移除,停止向其转发流量。待后续检查恢复成功后,再重新加入池中以接收流量。这一机制确保了故障节点不会继续影响用户体验。










