因专案需要一个负载均衡的机制,看似用Nginx最轻松方便,虽然Nginx在windows下的效能比不上在Linux下,不过先完好Nginx的设定,日后要搬上Linux也方便
环境
.NetCore 应用程式
IIS
Windows
下载
从Nginx的下载页面就有了windows的版本,下载后找个位置放就可以直接启动执行
设定
Nginx的设定在conf/nginx.conf,直接加上负载均衡需要的设定
nginx.conf:
-
#user nobody;
-
-
#工作進程數量,預設值為1
-
#可以依照CPU的核心數量調整
-
#或是給定 auto 自動判斷
-
worker_processes 4;
-
-
error_log logs/error.log;
-
error_log logs/error.log notice;
-
error_log logs/error.log info;
-
-
events {
-
#每個工作進程的最大同時連接數量
-
worker_connections 1024;
-
}
-
-
http {
-
include mime.types;
-
default_type application/json;
-
-
sendfile on;
-
keepalive_timeout 65;
-
gzip on;
-
-
#載入其他設定檔,這邊是把server相關的設定拆開處理
-
include default.conf;
-
}
default.conf:
-
server {
-
#監聽80port
-
listen 80;
-
server_name 127.0.0.1;
-
-
charset utf-8;
-
-
location / {
-
proxy_set_header Host $host;
-
#load balance會改變clientIP,這邊讓他把IP繼續往下傳
-
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;
-
#指定 load balance的目標
-
proxy_pass http://apps;
-
}
-
}
-
-
#定義server
-
upstream apps {
-
server 127.0.0.1:81 weight=1 max_fails=3 fail_timeout=60s;
-
server 127.0.0.1:82 weight=2 max_fails=3 fail_timeout=60s;
-
}
weight
指定权重,依照上面的设定,相当于三个request,两个请求进:82,一个请求进:81
max_fails & fail_timeout
nginx的健康检查机制,若检测该serve 无法正常回应指定的max_fails 次数,则会暂时移除这个server,等fail_timeout 指定的时间后再做一次确认
max_fails预设值为1
fail_timeout预设值为10s
LoadBalance 模式
nginx提供三种Load Balance的模式,方别为
循环,轮流发送请求给各个server
最少连接,把请求送个连接数量最少的server
用户IP,相同的IP请求送给同一个server
循环
若不指定,预设会采用这个模式
-
upstream apps {
-
server 127.0.0.1:81
-
server 127.0.0.1:82
-
}
最少连接
在开头加上least_conn
-
upstream apps {
-
least_conn;
-
server 127.0.0.1:81
-
server 127.0.0.1:82
-
}
用户IP
在开头加上ip_hash
-
upstream apps {
-
ip_hash;
-
server 127.0.0.1:81
-
server 127.0.0.1:82
-
}
Relaod
若nginx已经执行,需要执行command重新载入设定档,需要使用-s
跟nginx沟通
stop: fast shutdown
quit: graceful shutdown
reload:reloading the configuration file
reopen:reopening the log files
阅读(1789) | 评论(0) | 转发(0) |