Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
本篇主要配置负载均衡
环境:ubuntu18.04.4
upstream:负载均衡配置模块
关于负载均衡的模式:
1.轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2.ip_hash : 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3.fair : 此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。(
Nginx
本身是不支持fair
的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair
模块)。4.url_hash : 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。
5.weight : 权重。释义:比如2太服务器,承受并发能力的不同,所配置的权重也不同。 比如A服务器可以承受2W并发量。B服务器只能承受1W并发量。那么A服务器路径配置权重就为2,B服务器为1。
6.max_fails : 一个请求周期中请求的次数。如果达到设置次数将把该服务器标记为不可用。
7.fail_timeout : 设置过期时间。(一般搭配max_fails:一个请求周期中每次请求达到设置过期时间,同时达到max_fails次数该服务器标记为不可用)。
8.down : 表示当前的server暂时不参与负载均衡。
9.backup : 备用服务器,当负载均衡中有其他服务器挂掉,此服务器会加入负载均衡。
配置代码模块:
1.轮询
upstream mysvr {
server 192.168.11.10:8090 weight=1;
server 192.168.11.11:8090 weight=2 max_fails=1 fail_timeout=10s;
}
#同一个nginx配置文件中可配置多个upstream
#upstream mysvr1 {}
#upstream mysvr2 {}
#Shop客户端后台
server{
listen 8080;
server_name 192.168.16.91;
location ^~/v1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#反向代理配置 注意路径中的mysvr 是对应upstream配置。
proxy_pass http://mysvr/v1/api/;
}
}
2.ip_hash
upstream mysvr {
ip_hash;
server 192.168.11.10:8090 weight=1;
server 192.168.11.11:8090 weight=2 max_fails=1 fail_timeout=10s;
}
#同一个nginx配置文件中可配置多个upstream
#upstream mysvr1 {}
#upstream mysvr2 {}
#Shop客户端后台
server{
listen 8080;
server_name 192.168.16.91;
location ^~/v1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#反向代理配置 注意路径中的mysvr 是对应upstream配置。
proxy_pass http://mysvr/v1/api/;
}
}
3.fair
upstream mysvr {
server 192.168.11.10:8090 weight=1;
server 192.168.11.11:8090 weight=2 max_fails=1 fail_timeout=10s;
fair;
}
#同一个nginx配置文件中可配置多个upstream
#upstream mysvr1 {}
#upstream mysvr2 {}
#Shop客户端后台
server{
listen 8080;
server_name 192.168.16.91;
location ^~/v1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#反向代理配置 注意路径中的mysvr 是对应upstream配置。
proxy_pass http://mysvr/v1/api/;
}
}
4.url_hash
upstream mysvr {
hash $request_uri;
server 192.168.11.10:8090 weight=1;
server 192.168.11.11:8090 weight=2 max_fails=1 fail_timeout=10s;
}
#同一个nginx配置文件中可配置多个upstream
#upstream mysvr1 {}
#upstream mysvr2 {}
#Shop客户端后台
server{
listen 8080;
server_name 192.168.16.91;
location ^~/v1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#反向代理配置 注意路径中的mysvr 是对应upstream配置。
proxy_pass http://mysvr/v1/api/;
}
}