熟悉了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 :②修改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-sstop
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
领取专属 10元无门槛券
私享最新 技术干货