基于轮询(Round Robin)的负载均衡配置
-
Nginx的负载均衡策略默认就是轮询。
-
Nginx负载均衡策略支持http和https,只需要修好proxy_pass后的协议即可。
-
Nginx支持FastCGI、uwsgi、SCGI、memcached的负载均衡,只需要把proxy_pass改为fastcgi_pass、uwsgi_pass、scgi_pass、memchached_pass即可。
-
适合场景:服务性能差不多,无状态、短平快的应用。
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
http{
upstream netease.com {
server 127.0.0.1:8881;
server 127.0.0.1:8882;
server 127.0.0.1 8883;
}
server {
listen 80;
server_name netease.com;
location / {
proxy_pass http://netease.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
基于哈希(ip_hash)的负载均衡配置
-
使用 ip_hash 指令开启哈希负载均衡策略。
-
nginx使用客户端访问的ip地址进行哈希计算,来确保同一服务端访问客户的请求。
-
此策略适合有状态的服务(session)。
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
http{
upstream netease.com {
ip_hash;
server 127.0.0.1:8881;
server 127.0.0.1:8882;
server 127.0.0.1 8883;
}
server {
listen 80;
server_name netease.com;
location / {
proxy_pass http://netease.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
基于最少连接(least_conn)的负载均衡配置
此配置适合客户请求长短不一的情况(有的服务处理的慢,相对长时间占用请求线程导致负载变高)
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
http{
upstream netease.com {
least_conn;
server 127.0.0.1:8881;
server 127.0.0.1:8882;
server 127.0.0.1 8883;
}
server {
listen 80;
server_name netease.com;
location / {
proxy_pass http://netease.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
基于权重的负载均衡配置
此策略适合服务器配置差别较大的情况。
权重越高分配的请求越多。
此策略可以与最少连接负载和ip哈希策略结合使用。
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
http{
upstream netease.com {
least_conn;
server 127.0.0.1:8881; weight=3;
server 127.0.0.1:8882; weight=2;
server 127.0.0.1 8883; weight=1;
}
server {
listen 80;
server_name netease.com;
location / {
proxy_pass http://netease.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
网友评论