Nginx的部分配置
1. 基础容灾配置(被动健康检查)
在 upstream
块中,通过 max_fails
和 fail_timeout
参数定义故障转移规则:
在 upstream
块中,通过 max_fails
和 fail_timeout
参数定义故障转移规则:
nginx
复制
upstream backend {# 定义后端服务器,设置失败阈值和超时server 172.16.108.42:80 max_fails=3 fail_timeout=10s; # 10秒内失败3次则标记为不可用server 172.16.108.43:80 max_fails=3 fail_timeout=10s;# 负载均衡策略(可选)least_conn; # 最少连接数策略 }
参数说明:
-
max_fails
:在fail_timeout
时间内,允许的最大失败请求次数。 -
fail_timeout
:服务器被标记为不可用的时间(超时后自动恢复探测)。 -
1. 权重(
weight
)的作用 -
默认值:如果未指定
weight
,默认值为1
。 -
流量分配规则:根据权重值的比例分配请求。
-
适用场景:后端服务器性能不均衡时(如一台性能强、一台性能弱),通过权重调整流量分配。
效果:
-
当某台服务器连续失败 3 次后,Nginx 会将其标记为不可用,10秒内不再分配请求。
-
10秒后,Nginx 会尝试重新发送请求探测是否恢复。
http {# ... 其他原有配置 ...upstream ai-backend {server 172.16.108.42:10011 weight=1 max_fails=3 fail_timeout=10s;server 172.16.108.43:10011 weight=1 max_fails=3 fail_timeout=10s;keepalive 32;least_conn;}server {listen 10011;server_name 172.16.108.41;location / {proxy_pass http://ai-backend;proxy_http_version 1.1;proxy_set_header Connection "";proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 超时时间设为20分钟proxy_connect_timeout 1200s;proxy_read_timeout 1200s;proxy_send_timeout 1200s;}}# ... 其他服务配置 ...
}
http {# ... 原有其他配置(如AI服务、日志格式等) ...# 定义词向量服务的upstreamupstream wordvec-backend {server 172.16.108.44:10011 weight=1 max_fails=3 fail_timeout=10s; # 本地Nginx服务器的10011端口(若服务部署在Nginx本机)server 172.16.108.42:10011 weight=1 max_fails=3 fail_timeout=10s; # 另一台服务器的10011端口keepalive 32; # 保持长连接least_conn; # 最少连接数负载均衡}# 词向量服务的独立监听端口(例如10012)server {listen 6001; # 监听外部请求的端口server_name 172.16.108.41; # Nginx服务器IP或域名location / {proxy_pass http://wordvec-backend; # 转发到词向量后端proxy_http_version 1.1;proxy_set_header Connection ""; # 启用HTTP 1.1长连接proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 超时时间设为20分钟(1200秒)proxy_connect_timeout 1200s; # 连接后端超时proxy_read_timeout 1200s; # 读取响应超时proxy_send_timeout 1200s; # 发送请求超时}}
}
1. 检查配置文件语法
在重启前 必须验证配置正确性,避免错误配置导致服务崩溃:
sudo nginx -t
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:57
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:64
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:71
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:79
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
2. 重新加载配置(平滑重启)
传统方式:
sudo nginx -s reload[root@bigdata41 nginx]# sudo nginx -s reload nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:57 nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:64 nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:71 nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:79 nginx: [error] invalid PID number "" in "/run/nginx.pid"报异常 暂未处理3. 完全重启服务(强制重启)
sudo systemctl restart nginx
sudo systemctl restart nginx 重新启动nginx
sudo systemctl status nginx 查看nginx 状态
将41上已有的6001端口服务迁移走
sudo systemctl status nginx