由于考虑到当请求量很大时,需要用到分布式部署服务,但是随之而来又带来了一个问题就是,万一那台机器停止了服务时,改如何自动切换达到服务高可用呢?网上看了下文章,大家都才用nginx来进行实现,以下是本人的nginx配置示例:
//配置文件地址 ${root}/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http{
upstream myserver {
server 127.0.0.1:7001 weight=1 max_fails=3 fail_timeout=20s;
server 127.0.0.1:7002 weight=3 max_fails=3 fail_timeout=20s;
#定义后端服务器,权重3,失败3次后暂停服务20s
}
server {
listen 80;
server_name www.domain.com;
index index.html;
root /WWW;
location / { # 配置健康检查
proxy_pass http://myserver;
proxy_next_upstream http_500 http_502 error timeout
invalid_header;
# 当出现以上状态码时,转发给下一台服务器
}
}
}
指定在何种情况下一个失败的请求应该被发送到下一台后端服务器:
error # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误
timeout # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现超时
invalid_header # 后端服务器返回空响应或者非法响应头
http_500 # 后端服务器返回的响应状态码为500
http_502 # 后端服务器返回的响应状态码为502
http_503 # 后端服务器返回的响应状态码为503
http_504 # 后端服务器返回的响应状态码为504
http_404 # 后端服务器返回的响应状态码为404
off # 停止将请求发送给下一台后端服务器
网友评论