背景:随着访问量的增加和并发的提高,服务器的压力会越来越大,此时需要部署多台服务器来分摊压力(分布式部署),
服务分摊开来,是数据前段分布服务,即在服务层之前的分布负载,此时需要一个工具将所有分布式服务器和访问进行条件负载连接;
nginx下载地址(windows环境模拟下载windows版本):
http://nginx.org/en/download.html
注:nginx下载后本地解压时,解压的文件夹不能带中文,需要解压到非中文文件夹,否早启动不了报错;
双击nginx.exe启动文件后,去任务管理器-->进程-->重寻找nginx进程,如果没找到,去查看nginx解压目录下的logs文件下的
error.log文件:
错误:failed (1113: No mapping for the Unicode character exists in the target multi-byte code page) 这个错误是因为解压在中文目录下了,改下解压目录名字为英文即可;
upstream 关键字后面的代理服务名字不要带特殊字符,否则服务无法访问(错误提示在tomcat控制台显示)
负载模型(简单):
|------------------>tomcat1 |
|------------------>tomcat2 |
nginx|------------------>tomcat3 | ------------------------->服务层------->数据层
|------------------>tomcat4 |
|------------------>tomcat...... |
上面是基本的模型,这个nginx负载需要简单的配置一下nginx,即在conf文件夹下编辑nginx.conf文件:
多个tomcat配置在upstream 下面
配置完毕,浏览器输入:localhost即可访问配置负载的两台tomcat服务器
注:nginx负载均衡有多种负载策略:
1:轮询
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询
2:权重
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3:ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
upstream localtomcat{
server 192.168.1.104:40 down;
server 192.168.1.104:50 weight=4;
server 192.168.1.104:60;
server 192.168.1.104:70 backup;
}
1)down
表示单前的server暂时不参与负载
2)Weight
默认为1.weight越大,负载的权重就越大。
3)max_fails
允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4)fail_timeout
max_fails 次失败后,暂停的时间。
5)Backup
其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。