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配置负载均衡及日志切分的主要内容,如果未能解决你的问题,请参考以下文章