nginx 负载均衡的配置

bb225 10年前
服务器集群是我们那种大型百万级IP运维人员会操作的,今天小的也来给大家过一把nginx负载均衡配置集群方法,网上找了几篇文章,发现也不难呀。

nginx负载均衡一,

1. 安装时不要安装在源代码同一个目录下,make时会报错的。

 代码如下 复制代码

./configure --prefix=/opt/nginx
make && make install

2. 修改配置文件/opt/nginx/conf/nginx.conf
在server元素前增加:(假设两个tomcat的端口都是8080)

 代码如下 复制代码

upstream www.111cn.net   { 
server   192.168.1.13:8080; 
server   192.168.1.14:8080; 
    }

将server元素下的server_name改为实际域名,例如:

 代码如下 复制代码
server_name  www.111cn.net

在location元素下面增加一行:

 代码如下 复制代码
proxy_pass www.111cn.net

3. 启动停止命令

启动:/opt/nginx/sbin/nginx
快速停止:/opt/nginx/sbin/nginx -s stop
完整有序停止:/opt/nginx/sbin/nginx -s quit
重新加载:/opt/nginx/sbin/nginx -s reload


nginx负载均衡二,

假设我们有3台服务器,IP地址分别为:
192.168.0.1 / 192.168.0.2 / 192.168.0.3

我们将192.168.0.1作为前端主服务器,192.168.0.2和192.168.0.3作为负载均衡的后端服务器。

下面是192.168.0.1主服务器上Nginx的配置方法:

 代码如下 复制代码

worker_processes 1;

events {
worker_connections 1024;
}

http {
upstream serverlist {
server 192.168.0.2:8000 weight=3 max_fails=3 fail_timeout=20s;
server 192.168.0.3:8000 weight=7 max_fails=3 fail_timeout=20s;
}

server {
listen 80;
server_name www.111cn.net;
location / {
proxy_pass         http://serverlist;
proxy_set_header   HOST             $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}
}
}

配置说明:

upstream serverlist{}可以理解为一个服务器池,通过proxy_pass http://serverlist命令,可将访问www.111cn.net的请求分配给位于池内的服务器192.168.0.2和192.168.0.3。
weight=3和weight=7为服务器的权重,权重越高,被分配到的请求就越多。
max_fails=3和fail_timeout=20s的含义是,当请求失败次数达到3次时,这个服务器将被暂时下线20秒。

技巧:主服务器可负责静态内容,将所有php的请求分配到后端服务器处理。