nginx配置负载均衡及日志切分

Posted 一个程序猿的生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx配置负载均衡及日志切分相关的知识,希望对你有一定的参考价值。

熟悉了nginx,就应该会配置简单的负载均衡啦。

1、什么是负载均衡?

负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

简单地说是多台服务器共同分担处理请求的压力,提高服务的稳定性。A挂了B也能继续干。

在分布式系统中,负载平衡是无处不在的,它是分布式系统的自然特点,分布式节点是使用大量的计算机来完成一台计算机无法完成的计算,存储服务,因为大量的计算机节点,然后平衡调度是非常重要的。负载均衡的前提必须是“从多个服务器提供单一的Internet服务”,



常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问每一个下游,就能实现“将请求/数据【均匀】分摊到多个操作单元上执行”。

(1)【客户端层】到【反向代理层】的负载均衡,是通过“DNS轮询”实现的;

(2)【反向代理层】到【站点层】的负载均衡,是通过“nginx”实现的;

(3)【站点层】到【服务层】的负载均衡,是通过“服务连接池”实现的;

(4)【数据层】的负载均衡,要考虑“数据的均衡”与“请求的均衡”两个点,常见的方式有“按照范围水平切分”与“hash水平切分”。

极其牛逼的负载均衡算法,后面再分解。

2.nginx负载均衡的配置步骤

①两台服务器分别安装tomcat,监听8080端口。

各自在tomcat/webapps/Root/Index.jsp页面下添加下面代码:

 负载均衡测试服务器1/负载均衡测试服务器2
nginx server ip : <%=request.getRemoteAddr()%>

②修改nginx配置文件

upstream myapp {
   server 139.199.97.71:8080 weight=1 max_fails=2 fail_timeout=30s;
        server 139.199.16.176:8080 weight=1 max_fails=2 fail_timeout=30s;
}

server{
       listen 80;
       server_name abc.chengzhipcx.xyz;
       location / {
               proxy_pass http://myapp;
               index index.html index.jsp;
       }
}

说明:

*设定负载均衡的服务器列表
#upstream myproject {
   #weigth参数表示权值,权值越高被分配到的几率越大
   #max_fails 当有#max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查
   #fail_timeout 在以后的#fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器
#}

③启动nginx即可。

访问nginx主机的80端口,频繁刷新即可看到不同的主页变换响应。



其实nginx配置负载均衡不难,在具体的业务中需要整合redis实现共享session,配合cas实现sso。

3.日志切分

在互联网的环境下,日志是极其重要的。在高并发的场景下日志会变得很庞大,不方便管理和定位bug。

这时候就需要写定时任务来定时的处理log文件

#!/bin/sh

BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`


/usr/local/nginx/sbin/nginx -s stop

mv /usr/local/nginx/logs/*.log /usr/local/nginx/logsbak/$BAK_TIME-log.log

/usr/local/nginx/sbin/nginx

说明:先把nginx停了,移动文件,启动服务

使用crontab -e 创建定时任务,每三十分钟执行一次。

*/30 * * * * sh /usr/local/etc/logbak.sh



以上是关于nginx配置负载均衡及日志切分的主要内容,如果未能解决你的问题,请参考以下文章

nginx负载均衡与日志配置

Windows下安装Nginx及负载均衡

Haproxy+Nginx负载均衡群集及调度日志管理

详解nginx.conf文件配置项(包括负载均衡)

nginx负载均衡及配置

nginx负载均衡原理及配置