Nginx 的负载均衡集群

Nginx 的负载均衡集群

Nginx的负载均衡和lvs相比,Nginx属于更高级的应用层,不会牵扯到IP和内核的改动,它只是单纯的把用户的请求转发到后面的机器上。这就意味着:后端的RS不需要配置公网IP。

1. 环境说明

Nginx分发器(公网IP:192.168.0.161;内网IP:192.168.209.131)
RS1:只有内网,IP为:192.168.209.132
RS2:只有内网,IP为:192.168.209.133

2. 配置

在nginx分发器上编辑配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vim /usr/local/nginx/conf/vhosts/lb.conf
#加入以下内容
upstream graped {
ip_hash;
server 192.168.209.132:80;
server 192.168.209.133:80;
}

server {
listen 80;
server_name www.123.com;
location / {
proxy_pass http://graped/;
proxy_set_header Host $host;
}
}

说明:

upstream用来定义后端的RS,可以只写一个。ip_bash 为nginx的一种调度算法,加上这一行后会达到这样的效果:即一个用户的请求会始终被分发到固定的一个RS上。这样的好处是:可以避免吧同一个用户的请求分发到不同的机器上面而导致session丢失的情况。upstream里面,RS后面的IP后面还可以加权重,比如:

1
server 192.168.209.132:80 weight=100

还需要注意的是,upstream后面的graped是自定义的一个名字,可以随便写,唯一的要求是要和后面的proxy_pass后面保持一致。

另外:
还可以根据访问的目录来区分后端Web,请参考:nginx代理扩展:
根据目录区分后端web