您的位置:首页 > 运维架构 > Nginx

nginx负载均衡配置---nginx的学习之路

2015-08-30 19:37 555 查看
Nginx  负载均衡

1. Nginx  负载均衡基础知识
nginx 的 upstream 目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2)、weight
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。
3)、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
4)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5)、url_hash(第三方)


2. Nginx  负载均衡实例 1
upstream bbs.linuxtone.org {  #定义负载均衡设备的 Ip 及设备状态
        server 127.0.0.1:9090 down;
     server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}

在需要使用负载均衡的 server 中增加
proxy_pass http://bbs.linuxtone.org/;
每个设备的状态设置为:
a)  down 表示单前的 server 暂时不参与负载
b)  weight 默认为 1.weight 越大,负载的权重就越大。
c)  max_fails : 允许请求失败的次数默认为 1.当超过最大次数时, 返回 proxy_next_upstream 模
块定义的错误
d)  fail_timeout:max_fails 次失败后,暂停的时间。
e)  backup: 其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器
压力会最轻。

nginx 支持同时设置多组的负载均衡,用来给不用的 server 来使用。
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多 3 层目录
location 对 URL 进行匹配.可以进行重定向或者进行新的代理 负载均衡

3. Nginx  负载均衡实例 2
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓
存时比较有效,也可以用作提高 Squid 缓存命中率.

简单的负载均等实例:
#vi nginx.conf //nginx 主配置文件核心配置
……….
#loadblance my.linuxtone.org
upstream my.linuxtone.org {
ip_hash;
server 127.0.0.1:8080;
server 192.168.169.136:8080;
server 219.101.75.138:8080;
server 192.168.169.117;
server 192.168.169.118;
server 192.168.169.119;
}
…………..
include vhosts/linuxtone_lb.conf;
………
# vi proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
#nginx cache
#client_body_temp_path /data/nginx_cache/client_body 1 2;
proxy_temp_path /data/nginx_cache/proxy_temp 1 2;
#vi linuxtone_lb.conf
server
{
listen 80;
server_name my.linuxtone.org;
index index.php;
root /data/www/wwwroot/mylinuxtone;
if (-f $request_filename) {
    break;
}
if (-f $request_filename/index.php) {
   rewrite (.*) $1/index.php break;
}
error_page 403 http://my.linuxtone.org/member.php?m=user&a=login; location / {
   if ( !-e $request_filename) {
        proxy_pass http://my.linuxtone.org;         break;
   }
   include /usr/local/nginx/conf/proxy.conf;
}
}

使用负载均衡的话,可以修改配置http节点如下:
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {

#设定mime类型,类型由mime.type文件定义
include             /etc/nginx/mime.types;
default_type    application/octet-stream;

#设定日志格式
access_log        /var/log/nginx/access.log;

#省略上文有的一些配置节点
#。。。。。。。。。。

#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.1x:3128 weight=5;
#本机上的Squid开启3128端口,不是必须要squid
server 192.168.8.2x:80    weight=1;
server 192.168.8.3x:80    weight=6;
}

upstream mysvr2 {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.x:80    weight=1;
server 192.168.8.x:80    weight=6;
}

#第一个虚拟服务器
server {
#侦听192.168.8.x的80端口
listen             80;
server_name    192.168.8.x;

#对aspx后缀的进行负载均衡请求
location ~ .*\.aspx$ {
#定义服务器的默认网站根目录位置
root     /root;
#定义首页索引文件的名称
index index.php index.html index.htm;

#请求转向mysvr 定义的服务器列表
proxy_pass    http://mysvr ;

#以下是一些反向代理的配置可删除.

proxy_redirect off;

#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#允许客户端请求的最大单文件字节数
client_max_body_size 10m;

#缓冲区代理缓冲用户端请求的最大字节数,
client_body_buffer_size 128k;

#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 90;

#连接成功后,后端服务器响应时间(代理接收超时)
proxy_read_timeout 90;

#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffer_size 4k;

#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_buffers 4 32k;

#高负荷下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 64k;

#设定缓存文件夹大小,大于这个值,将从upstream服务器传
proxy_temp_file_write_size 64k;

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: