1.Nginx负载均衡策略
1.1 什么是负载均衡
说明:在分布式条件下,为了提高用户请求的响应能力,准备多台服务器.一起抗击高并发.需要用户通过同一个网址访问不同服务器的技术称之为负载均衡机制.
1.2 准备多台tomcat服务器
1.2.1 规划说明
准备3台tomcat服务器,并且端口号依次为8091/8092/8093,之后完成项目Windows部署.
1.2.2 编辑MsgController
说明:动态获取当前服务器端口号信息
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MsgController {
@Value("${server.port}")
private int port;
//主要获取当前访问服务器的端口号信息!!!
@RequestMapping("/getPort")
public String getMsg() {
return "您当前访问服务器的端口号:"+port;
}
}
1.2.3 项目打包
注意事项:
1).按照规定修改端口号信息 8091/8092/8093
2).将JT项目整体打包部署.
3).打完包保存为 8091/8092/8093
1.2.4 项目发布
- cmd中发布 8091/8092/8093
利用命令实现项目发布: java -jar 8089.war
- 说明: 通过命令发布项目之后,浏览器访问速度较慢.(不正常)
方式1: 直接关闭当前dos命令窗口
方式2: ctrl + c 方式 释放资源.
1.3 Nginx实现负载均衡
1.3.1 负载均衡需求说明
要求: 通过http://manage.jt.com 方式 依次访问8091/8092/8093服务器.
1.3.2 负载均衡策略----轮询
说明: 根据配置文件的顺序,依次访问tomcat服务器.
#配置图片服务器代理 个别windows中"_-"字符可能不识别
server{
listen 80;
server_name image.jt.com;
location / {
#映射到目录中
root D:\\java\\LX;
}
}
# 配置域名代理
server {
listen 80;
server_name manage.jt.com;
location / {
#代理的是服务器地址
#proxy_pass http://localhost:8091;
proxy_pass http://jtw;
}
}
#定义多台tomcat服务器 1.轮询策略
upstream jtw{
server localhost:8091;
server localhost:8092;
server localhost:8093; }
1.3.3 负载均衡策略----权重
权重策略: 让性能更优的服务器更多的处理请求.
#定义多台tomcat服务器 1.轮询策略2.权重策略(weight)
upstream jtw{
server localhost:8091 weight=6;
server localhost:8092 weight=3;
server localhost:8093 weight=1;
}
1.3.4 负载均衡策略—IPHASH策略
说明: 如果需要用户与后端服务器进行绑定时,可以使用IPhash策略.
案例A: 有时用户可能做登录操作,可能将用户信息保存到session对象 中,如果这时采用轮询/权重的策略,可能访问其他的业务服务器.导致用户频繁的登录.
配置信息:
#定义多台tomcat服务器 1.轮询策略2.权重策略(weight)3.IPHASH策略
upstream jtw{
ip_hash;
server localhost:8091 weight=6;
server localhost:8092 weight=3;
server localhost:8093 weight=3;
}
IPHASH原理:
补充知识:
1).IPHASH一般只做测试时用.
2).使用IPHASH可能造成负载不均的现象. 某些服务器负载压力过高.有宕机的风险.
3).使用IPHASH时,如果后端服务器宕机,则直接影响用户的使用.
4).工作中如果需要实现用户信息的共享,一般采用SSO的方式进行.
用户只需一次登录就可以访问所有相互信任的应用系统
1.4关于Nginx属性配置
1.4.1关于Nginx工作原理说明
默认条件下,nginx会按照指定的负载均衡规则访问服务器。如果访问的服务器又出现了问题,那么则会访问下一台服务器。但是随着负载均衡的继续,任然访问故障机.效率低.
down属性(要手动标识)
说明:如果遇到某台tomcat服务器宕机,则可以通过down属性标识故障机,则nginx永远不会主动访问故障机.
backup 属性
说明: backup的作用表示标识备用机. 一般情况下备用不工作.当遇到主机全部宕机/遇忙时,这时备用机才会生效.
设定访问超时
属性说明:
1.max_fails=1 允许访问失败的最多次数
2.fail_timeout=60s 失败的超时时间(理解为时间区间)
当服务器宕机时,这时配置文件还没有被标识为down时.开启了高可用的机制. 只要失败的次数超过最大失败次数,则
在指定的时间周期之内,不会再次访问故障机.
#定义多台tomcat服务器 1.轮询策略2.权重策略(weight)3.IPHASH策略
upstream jtw{
#ip_hash;
server localhost:8091 weight=6 max_fails=1 fail_timeout=60s; #宕机(down)
server localhost:8092 weight=3 max_fails=1 fail_timeout=60s;
server localhost:8093 weight=3 max_fails=1 fail_timeout=60s backup; #备用机
}