Nginx
server {
listen 80;
server_name test.test.com
location / {
#实现服务器代理
proxy_pass http://localhost:8080;
}
}
负载均衡
nginx实现负载均衡,通过搭建Tomcat服务器集群,可以极大提高网站的并发量;
轮询策略
根据配置文件的顺序,依次分配服务器访问。
#负载均衡配饰策略 轮询
upstream test {
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
server {
listen 80;
server_name test.test.com;
location / {
#与上面
proxy_pass http://test;
}
}
权重策略
说明:
- 采用轮询策略,因为服务器性能差别,没有根据服务器性能进行分配,长时间会导致形成差的服务器因高负载而宕机,因此采用全从策略,服务性能越好,数字越大,分配越多;
upstream test {
server localhost:8081 weight=1;
server localhost:8082 weight=2;
server localhost:8083 weight=3;
IP_hash 策略
需求说明:
- 因为服务器搭建成集群,有些操作需要登陆后进行,但Tomcat集群没法实现Session共享,导致重复登录。
解决方法:
- url充血技术,将用户信息拼接到http请求中,效率太低。
- IP_Hash;
IP_Hash说明:
- 根据用户的IP地址进行Hash运算,根据计算结果,绑定到集群中的某一台服务器。
配置策略:
upstream test {
ip_hash;
server localhost:8081 weight=1;
server localhost:8082 weight=2;
server localhost:8083 weight=3;
}
专业术语:
- Session黏着;
IP_Hash重的问题:
- 由于IP地址的原因,经过hash值的运算,同一时间绑定在同一台服务器的IP地址访问过多,可能会导致负载
不均;
- 如果IP地址绑定的服务器宕机,用户访问失败;
- 安全性不好;
改进方式:
-新单点登录(SSO策略)
备用机机制
说明:
- 为了让服务器出现问题后,能够继续提供服务,采用备用机机制,正常情况不启动,当主机遇忙或者主机宕机时生效。
upstream test {
server localhost:8081 weight=1;
server localhost:8082 weight=2;
server localhost:8083 weight=3 backup;
}
使用Nginx进行项目上线
- 项目打成war包
- 根据服务器数量分批上线;
- 需要上线的服务器在nginx中作down处理;
- 将打包好的项目部署到服务器中,启动服务器,经过测试后上线。
Nginx的健康检测
设定超时时间:
使用Nginx实现方向代理后,如果后台服务器没有即是响应,那么请求必须等到超时时间后,访问下一台服务器,超时时间默认为3分钟,可以手动修改。
proxy_connect_timeout 3;
proxy_read_timeout 3;
proxy_send_timeout 3;
设置超时时间的优缺点
优点:当访问后台服务器,如果超过超时时间,会自动访问下一台服务器。
缺点:如果配置了权重或者轮询策略,定期链接故障机,导致用户体验差。
检测实现
当在指定周期内,如果检测发现后台服务器不能正常访问,那么在周期内不会再将请求发送到故障机,直到下一个周期再次检测访问成功后。
配置:
max_fails=1 在指定周期内检测失败的次数;
fail_timeout=60s 代表周期时间,单位秒;
upstream test {
server localhost:8081 max_fails=1 fail_timeout=60s;
server localhost:8082 max_fails=1 fail_timeout=60s;
server localhost:8083 max_fails=1 fail_timeout=60s;
}