nginx负载接口与宕机切换

只愿长相守 提交于 2020-01-26 06:05:47

1.启动nginx

/usr/local/nginx/sbin/nginx -c /home/thinkpad/nginx-1.8.0/conf/nginx.conf #指定配置文件启动nginx

ps -ef|grep nginx #查看nginx是否启动

2.nginx.conf

#user nobody;

worker_processes 1;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

#access_log logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

#mytest 需要被转发的机器

upstream test-client {

server 88.xxx.206.xxx:5005;

server 88.xxx.206.xxx:5007;

}

#mytest

server {

#charset koi8-r;

#通过下面5010这个端口。访问上面需要被转发的机器。使用localhost:5010访问 proxy_pass

#也就是说 访问localhost:5010等于访问http://test-client/webhooks/rest/webhook ,test-client 就是需要被转发的两台机器

listen 5010;

server_name localhost;

location / {

proxy_pass http://test-client/webhooks/rest/webhook;

proxy_redirect default;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

# postman 上 post访问http://localhost:5010 即可

3.nginx负载方式

3.1 默认是轮询方式,按照时间顺序依次分发请求给不同机器,如果有机器中间宕机,则自动剔除。

upstream test-client {

server 88.xxx.206.xxx:5005;

server 88.xxx.206.xxx:5007;

}

3.2 权重的方式也用的很多,给每个机器分配权重值,那么分发的请求将按照比例分发。性能好的机器就weight设置大点 来接收更多的请求。比较常用

upstream test-client {

server 88.xxx.206.xxx:5005 weight=2;

server 88.xxx.206.xxx:5007 weight=3;

}

3.3 iphash 方式。这种方式稍微不常用些,会将请求服务的ip 经过hash映射到固定的机器上。设置如下

upstream test-client {

ip_hash;

server 88.xxx.206.xxx:5005 weight=2;

server 88.xxx.206.xxx:5007 weight=3;

}

3.4 最少连接,根据每个服务器的连接数 动态分配。将请求分配到连接数量最少的服务器上。比较常用

upstream test-client {

least_conn;

server 88.xxx.206.xxx:5005 weight=2;

server 88.xxx.206.xxx:5007 weight=3;

}

3.5 fair模式,根据请求得到的响应时间来分配请求,哪台机器响应时间最迅速就优先分配。特别常用

upstream test-client {

server 88.xxx.206.xxx:5005 weight=2;

server 88.xxx.206.xxx:5007 weight=3;

fair;

}

4.宕机切换,这个很重要。就是假如有台机器挂了,需要将请求分发到可用的机器上。等宕机的机器恢复后又能重新给这台机器分发请求。怎么设置呢很简单。看下面。

upstream rasa-client {

server 88.xxx.206.xxx:5005 max_fails=3 fail_timeout=10s;

server 88.xxx.206.xxx:5007 max_fails=3 fail_timeout=10s;

}

max_fails=3 fail_timeout=10s 意思是10s内达到3次请求失败,nginx就判定这台机器已经宕机 已经挂了,就不会再给其分发请求。真实测试时,直接挂掉一台机器后,请求会分发给可用机。恢复后就会被重新分发。

注:用来直接负载自己的get,post  restful接口就行。请大口食用。亲测可口!!!

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!