1Nginx应用(学习笔记)
1.1Nginx实现域名代理
1.1.1调用流程
1.1.2Nginx配置
#配置后台管理服务器
server {
listen 80;
server_name manage.jt.com;
location / {
#实现http请求的转发
proxy_pass http://localhost:8091;
}
}
1.2Nginx 负载均衡实现
1.2.1业务说明
需要搭建tomcat服务器集群,共同抗击高并发.这时需要使用反向代理服务器.同时配置负载均衡.
1.2.2动态获取端口号
@RestController
public class MessageController {
@Value("${server.port}")
private String port;
//要求动态获取真实服务器端口号
@RequestMapping("/getPort")
public String getPort() {
return "当前服务端口号为:"+port;
}
}
1.2.3Tomcat集群搭建说明
说明:准备3台tomcat服务器.端口号分别为8081/8082/8083
关于打包报错说明: 检查jt的pom.xml文件中模块配置是否正确.
<!--关于Modules说明 代表聚合项目的所有模块 -->
<modules>
<module>jt-common</module>
<module>jt-manage</module>
</modules>
1.2.4启动集群
命令: java -jar 8081.war
1.3Nginx实现负载均衡
1.3.1轮循策略
说明:根据配置文件的顺序,依次访问服务器.
#配置windows集群 默认是轮循策略
upstream jtWindows {
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
#配置后台管理服务器
server {
listen 80;
server_name manage.jt.com;
location / {
#实现http请求的转发
proxy_pass http://jtWindows;
}
}
1.3.2权重策略
说明:可以为某些服务器添加权重,让该服务器更多的为用户提供服务
#配置windows集群 默认是轮循策略 权重
upstream jtWindows {
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
1.3.3IPHASH策略
问题说明:如果采用集群的部署,如果做敏感操作时,要求用户必须登录.但是由于nginx实现了负载均衡的操作,导致用户的Session数据不同共享.从而导致用户频繁登录.用户体验较差.
问题: nginx实现了tomcat负载均衡. 导致用户每次访问都是不同的服务器.
解决方案: 能否让用户每次访问同一台服务器 IPHASH策略
配置如下:
#配置windows集群 默认是轮循策略 权重
upstream jtWindows {
ip_hash;
server localhost:8081 weight=6;
server localhost:8082 weight=3;
server localhost:8083 weight=1;
}
1.3.3.1Iphash存在的问题
1.Iphash如果一旦服务器出现异常,导致业务失效.
2.可能会出现负载不均的现象.
一般不会使用Iphash,但是如果本次测试时可以使用.
1.3.3.2单点登录系统(SSO)
单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的
1.4NGINX常用属性
1.4.1Down属性
说明:如果服务器宕机,可以在配置文件中标识为down.这样以后不会再访问故障机.
upstream jtWindows {
#ip_hash;
server localhost:8081 down;
server localhost:8082;
server localhost:8083;
}
1.4.2Backup
说明:备用机设置,正常情况下,该服务器不会被访问.当主机全部宕机或者主机遇忙时,该服务器才会访问.
upstream jtWindows {
#ip_hash;
server localhost:8081 down;
server localhost:8082;
server localhost:8083 backup;
}
1.4.3宕机服务器高可用设定
说明:当服务器宕机时,如果访问的失败次数达到最大失败次数,则标识为down.自动完成.在一定的周期之内,如果服务器回复正常,则还会尝试访问故障机.
max_fails=1 最大的失败次数
fail_timeout=60s; 设定周期为60秒
upstream jtWindows {
#ip_hash;
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;
}
学习记录用。