负载均衡----实现配置篇(Nginx)

2017-07-10_59631ce71b5b8.jpg

当生产环境里有很大的流量产生时,通常需要用负载均衡技术来做优化,并确保容错配置。Nginx不光可以实现Web Server,还可以作为HTTP负载均衡来分发流量给后端的应用程序服务器,以此来提高性能。Nginx的负载均衡功能依赖于ngx_http_upstream_module模块,所支持的代理方式有proxy_pass,fastcgi_pass,memcached_pass。

Nginx常用负载均衡算法:

轮询(默认算法)——每个请求会依次分配给后端不同的应用程序服务器,不理会后端服务器的实际压力

加权轮询——权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况

IP HASH——当同IP进行重复访问时会被指定到上次访问到的服务器,可以解决动态网站SESSION共享问题

upstream模块常用参数说明:

server 192.168.0.100:80 负载均衡后端RealServer的IP或者域名,端口不写的话默认为80。高并发场景用域名,再通过DNS进行负载均衡
 weight=5 权重,默认为1,权重越大接收的请求越多
 max_fails=2 最大尝试的失败次数,默认为1,0表示禁止失败尝试
 fail_timeout=10s 失败超时时间,默认是10秒,通常3s左右比较合适
 backup 热备配置,前段RealServer出现问题后会自动上线backup服务器
 down 标志服务器不可用,这个参数通常配合IP_HASH使用


1. 先找到 PA 的nginx.conf配置文件:

在http段加入以下代码:

upstream peiwoqu.com { 
    server 192.168.2.3:80; 
    server 192.168.2.4:80; 
    server 192.168.2.5:80;
}

当然嘛,这peiwoqu.com,你懂的,你可以替换成其他。


那么PA的server配置如下:

在http段加入以下代码:

server{ 
    listen 80; 
    server_name www.peiwoqu.com; 
    location / { 
        proxy_pass http://peiwoqu.com; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
}

那么P1、P2、P3的配置如下:

server{ 
    listen 80; 
    server_name www.peiwoqu.com; 
    index index.html; 
    root /data0/www/peiwoqu; 
}

2. 一定要采用80端口吗?有人就问了,我用其它端口行不行啊,当然也是可以的,假设PA的nginx.conf配置文件:

upstream peiwoqu.com { 
    server 192.168.2.3:8080; 
    server 192.168.2.4:8081; 
    server 192.168.2.5:8082;
}
server{ 
    listen 80; 
    server_name www.peiwoqu.com; 
    location / { 
        proxy_pass http://peiwoqu.com; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
}

P1配置:

server  { 
    listen 8080; 
    server_name www.peiwoqu.com; 
    index index.html; 
    root /data0/www/peiwoqu; 
}

P2配置:

server{ 
    listen 8081; 
    server_name www.mydomain.com; 
    index index.html; 
    root /data0/www/peiwoqu;
}

P3配置:

server{ 
    listen 8082; 
    server_name www.mydomain.com; 
    index index.html; 
    root /data0/www/peiwoqu;
}

重启之后,我们访问下,恩不错,确实很厉害。

当我们把一台服务器给关闭了后。

访问网址,还是OK的。


3. 那么负载均衡如何保持通话呢?

当然现在有好几种方案,我们这次只是讲一种。

IP哈希策略

  优点:能较好地把同一个客户端的多次请求分配到同一台服务器处理,避免了加权轮询无法适用会话保持的需求。

  缺点:当某个时刻来自某个IP地址的请求特别多,那么将导致某台后端服务器的压力可能非常大,而其他后端服务器却空闲的不均衡情况。


nginx的配置也很简单,代码如下:

upstream peiwoqu.com { 
    server 192.168.2.3:8080; 
    server 192.168.2.4:8081; 
    server 192.168.2.5:8082;
    ip_hash;
}

转至:http://www.peiwoqu.com/article/830

雷亮博客
请先登陆后发表评论
  • 最新评论
  • 总共0条评论
  • 本站使用thinkphp搭建 © 2014-2016 www.leigougou.com 版权所有 ICP证:蜀ICP备16024789号-1
  • 联系邮箱:1031041088@qq.com