1.nginx配置文件
2.配置访问域名
#京淘商品管理系统
server {
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://localhost:8091;
}
}
- 负载均衡策略
(1) 轮询
#定义集群的配置
upstream jt {
server localhost:8091;
server localhost:8092;
server localhost:8093;
}
(2) 权重
说明:根据服务器的性能,让高性能的服务处理更多的请求.
配置:
#定义集群的配置
upstream jt {
server localhost:8091 weight=6;
server localhost:8092 weight=3;
server localhost:8093 weight=1;
}
(3) IP_HASH
问题描述:
因为采用集群的部署,会有多台tomcat一齐提供服务.但是有些模块需要权限校验.必须实现Session共享.
问题:如何保证Session共享呢??
解决方案:
- URL重写技术
实现思路:通过拦截器拦截全部的请求,之后动态拼接url?SessionId
特点:效率低
功能:解决Cookie禁用问题.
- IP_HASH技术
说明:将用户的IP动态的绑定到特定的服务器中.之后用户的全部的请求都访问特定的服务器.
注意:
如果使用IP_hash那么轮询和权重则不生效
用法:
#定义集群的配置
upstream jt {
ip_hash;
server localhost:8091 weight=6;
server localhost:8092 weight=3;
server localhost:8093 weight=1;
}
(4)实现nginx上下线
问题描述:
当后台的tomcat服务器,如果宕机,那么如果没有人修改Nginx的配置文件.则会导致Nginx的请求任然会发往宕机的机器.这时只能等待用户连接超时.
方案A:
如果发现宕机的机器,则认为的修改配置文件,将该服务器进行下线处理.
该方案的用途:一般上线部署时使用.
方案B:Nginx健康检测(心跳检测)
说明:Nginx内部有健康检测的机制.如果检测到服务器不能正常连接.那么会在指定的周期内,不会再将用户的请求发往该机器.
如果运维人员将服务器修复后,Nginx的健康检测,查询到该机器可以正常提供服务后,则在下一个周期内.使用该机器.
如果当用户访问恰好访问到故障机.那么在Nginx超时时间过后,访问下一台服务器.为用户提供服务.
(5)健康检测机制
参数介绍:
max_fails=1 Nginx健康检测的失败的次数
fail_timeout=60s 表示在60秒内 不会再将请求发往故障机. 时间不宜过小 否则Nginx内部负载太高了.
proxy_connect_timeout 1; 请求超时时间 1秒
proxy_read_timeout 1; 读取资源的超时
proxy_send_timeout 1; 发送数据的超时
#定义集群的配置
upstream jt {
#ip_hash;
server localhost:8091 max_fails=1 fail_timeout=60s;
server localhost:8092 max_fails=1 fail_timeout=60s;
server localhost:8093 max_fails=1 fail_timeout=60s;
}
#京淘商品管理系统
server {
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://jt;
proxy_connect_timeout 1;
proxy_read_timeout 1;
proxy_send_timeout 1;
}
}