配置思路
- 定义后端服务器组:在Nginx配置文件中,使用
upstream
指令定义一个后端服务器组,将不同性能的微服务实例添加到该组中。
- 设置权重:为每个后端服务器实例设置权重,性能好的实例权重可设高些,性能差的实例权重设低些,以此实现基于权重的负载均衡。
- 健康检查机制:使用第三方模块(如ngx_http_upstream_check_module)来实现健康检查,定期向各个后端实例发送请求,根据响应状态判断实例是否健康。
关键参数
upstream
块:
upstream backend {
server 192.168.1.10:8080 weight=5; # 性能较好的实例,权重为5
server 192.168.1.11:8080 weight=3; # 性能次之的实例,权重为3
server 192.168.1.12:8080 weight=2; # 性能较差的实例,权重为2
}
server
:指定后端服务器的IP地址和端口。
weight
:设置该服务器的权重,权重值越高,被分配到请求的概率越大。
- 健康检查配置(以ngx_http_upstream_check_module为例):
http {
# 加载健康检查模块
load_module modules/ngx_http_upstream_check_module.so;
upstream backend {
server 192.168.1.10:8080 weight=5;
server 192.168.1.11:8080 weight=3;
server 192.168.1.12:8080 weight=2;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
check interval=3000
:设置健康检查的时间间隔为3000毫秒(3秒)。
rise=2
:表示连续2次健康检查成功,认为服务器恢复正常。
fall=5
:表示连续5次健康检查失败,认为服务器不健康。
timeout=1000
:设置健康检查请求的超时时间为1000毫秒(1秒)。
type=http
:指定健康检查的类型为HTTP。
check_http_send "HEAD / HTTP/1.0\r\n\r\n"
:设置发送给后端服务器的健康检查请求内容。
check_http_expect_alive http_2xx http_3xx
:设置期望后端服务器返回2xx或3xx状态码表示服务器健康。