博客文章已转移到新地址,本地址暂时保留,新文章仅在新地址更新。[置顶]

nginx配置负载均衡

作者:小宝 2019-05-02 02:05:10

当网站的流量比较大的时,可以通过增加服务器的方式分流用户的请求,可以开几台服务器同时工作,根据用户的距离等算法,对用户的请求分发开来。

nginx 是个很不错的负载均衡程序,而且配置很简单,负载功能用到 nginx的upstream 模块:

#weight【权重】越大被请求的概率越大;max_fails周期失败次数;fail_timeout请求周期,这里的意思是10s内请求失败次数为2以上自动判断这个节点不可用,

#默认是10s内1次,那么在10s内不再请求该节点,自动到分发到其他能用的节点上

upstream stream_group{

ip_hash; #这个分配方式,有5种,在下面说明
server 服务器IP1 weight=1 max_fails=2 fail_timeout=10;
server 服务器IP2 weight=2 max_fails=2 fail_timeout=10;

server 服务器IP3:端口号 down; #down代表这台服务器暂停服务,不要分发进来
server 服务器IP4:端口号 weight=2; #仅指定权重,其他默认
server 服务器IP5:端口号; #都用默认
server 服务器IP6:端口号 backup; #backup这是备胎的意思,只有其他服务器都挂了或者忙不过来了,这台才会开始任务,这家伙平时没啥事,最后关键时刻还得靠它呢

}
server{

#这里其他配置省略不写

    location / {             
            proxy_pass http://stream_group; #这里需要加上upstream的名称
    }

}

upstream目前支持5种分配方式:

1.轮询模式:默认的模式

按请求时间一个一个来请求,有序地进行,如果有down的或者其他的自动跳过到下一个。


2.ip_hash【ip_hash】:根据IP分区分配

只要用户的IP不变,那么用户访问的就是同一台固定的服务器,在用session的网站比较合适,这有利于保证session有效,用内存数据库的另当别论。


3.weight【weight=权重】:权重模式,越大请求分配的概率越大

这种模式一般用在服务器性能不同的服务器群,性能高的当然权重就相对高,反之则少分发。


4.fair【fair】:根据响应时间分配

由服务器响应的时间决定优先级,响应时间越短的服务器就优先级越大,响应时间越短则被分配到的请求量越大。


5.url_hash【hash $request_uri】:由访问url的hash结果分配,暂且理解成重定向吧

比如有些文件需要下载,放在了一个专属的服务器,请求相同url的请求都分发到该服务器去。一般用在资源服务器、需要缓存文件的服务器,比如文件下载。


操作案例:

[root@instance-6ocolrk6 vhost]# cat alipay168.cn.conf
upstream test1 {
server 127.0.0.1:8083 weight=2 ;#hellow
server 127.0.0.1:8082 weight=3 ;#dir 2
server 127.0.0.1:80 weight=2 ;#目前没有配置,会默认返回nginx默认页面
}
server {
        listen  80;
        server_name www.alipay168.cn;
        index index.php index.html;
        root    /web/nginx/alipay168;
        location /{
               proxy_pass http://test1;
        }

         location ~\.php$ {
               fastcgi_pass 127.0.0.1:9000;#php-fpm的默认端口是9000
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
          }
}

刷新测试页面,查看负载分配效果:



©BRISKLAN;备案信息:桂ICP备16004757号-1