nginx 的负载均衡

nginx 属于更高级的应用层,不牵扯到 IP 和内核的改动,它只是单纯地把用户的请求nginx

转发到后面的机器上。这就意味着,后端的 RS 不须要配置公网 IP。算法

(1)环境说明vim

nginx 分发器(一个公网 ip192.168.1.40 和一个内网 ip192.168.0.40)。后端

RS1 只有内网 ip(192.168.0.43)session

RS2 只有内网 ip(192.168.0.45)server

(2)配置ip

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

# vim /usr/local/nginx/conf/vhosts/lb.confhash

加入以下内容:io

upstream test {

ip_hash;

server 192.168.0.43;

server 192.168.0.45;

}

server {

listen 80;

server_name www.123com;

location / {

proxy_pass http://test/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

 

ip_hash 为 nginx 的一种调度

算法,加上这一行后会达到这样的效果,即一个用户的请求会适中被分发到固定的一个 RS

上。这样的好处是,能够避免把同一个用户的请求分发到不一样的机器上而致使 session 丢失

的状况。upstream 里面,RS 后面的 ip 后面还能够加权重,好比“server 192.168.31.100

weight=100;”。还有一点要注意,upstream 后面的 test 是自定义的一个名字,能够随便写,

惟一的要求是要和 proxy_pass 后面保持一致。

相关文章
相关标签/搜索