一、Tomcat服务器搭建
1.准备Tocmat服务器并修改配置文件server.xml
<Server port="8005" shutdown="SHUTDOWN"> Tomcat监听的关闭端口
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />监听浏览器的HTTP请求的端口,如果是Https的请求就转到8443端口
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />8009端口接收其他服务器发送的请求
说明:启动Tomcat时,此3个端口都会启动,因此多个Tomcat服务器之间的此三个的端口号不能一样,否则端口被占用无法启动
二、发布项目
将项目打包,之后将war包包名修改为ROOT.war(缺省访问),再放入多个Tomcat服务器的webapps里
假设部署到3台Tomcat中最终实现Localhost:8091,Localhost:8092,Localhost:8093
三、Nginx实现均衡负载
1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器
upstream wff {
server localhost:8091;
server localhost:8092;
server localhost:8093;
}
server {
listen 80;
server_name a.a.com;
location / {
proxy_pass http://wff;
}
}修改完成后 重启服务器
2.权重:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream wff {
server localhost:8091 weight=3;
server localhost:8092 weight=2;
server localhost:8093 weight=1;
}
3.ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
upstream wff {
ip_hash;
server localhost:8091 weight=3;
server localhost:8092 weight=2;
server localhost:8093 weight=1;
}
问题描述:采用集群的部署后,如何实现单点登录是一个典型的问题.因为用户登陆后,需要将用户信息保存到Session中,但是不同的服务器Session不能共享.所以无法实现用户只登陆一次,其他免密登录的效果.
解决方案:可以通过IP_hash配置,使用用户单点登录,用户访问服务器时,将IP地址经过计算.之后绑定到特定到某一台服务器上,从而实现了单点登录效果.
补充说明:如果配置IP_hash,那么配置的权重和轮询将不起作用.
风险: 不安全
还有其他第三方实现均衡负载的效果。
三、项目上线
1.修改Nginx,将需要上线的机器先做下线处理
2.将服务停止,之后将包进行部署
3.将服务器启动,启动后先经过测试人员测试
4.如果测试没有问题,则将tomcat上线.部署后续的项目
四、Nginx中备用机机制
说明: 在一般的情况下,服务器会配置备用机,该机器正常的情况下,不会处理请求,只有在主服务遇忙时或者主机宕机时,才会访问备用机.
upstream wff {
server localhost:8091 weight=3 down(下线);
server localhost:8092 weight=2 down;
server localhost:8093 weight=1 backup(备用);
}
五、Nginx健康检测(基本高可用)
问题:如果服务器出现意外的宕机现象,这时nginx访问会出现问题.
解决方案:
Nginx内部有自己的健康检测机制,在指定的检测周期内,如果发现后台服务器出现宕机的现象.那么在该周期内不会再将请求发往该机器.直到下一个检测周期时,才会再次检查服务器是否宕机,如果依然宕机,则该周期内不会发请求给故障机.
最终实现了tomcat服务器宕机后,自动的实现了故障的迁移.
配置文件介绍:
server localhost:8091 max_fails=1 fail_timeout=60s;
最大的失败的次数允许1次.如果出现宕机那么在60秒内,不会再将请求发往该机器.Nginx健康
upstream wff {
server localhost:8091 max_fails=1 fail_timeout=60s;
server localhost:8092 max_fails=1 fail_timeout=60s;
server localhost:8093 backup;
}
proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout:连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处 理 请求的时间)
proxy_send_timeout :后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
server {
listen 80; server_name a.a.com;
location / {
proxy_pass http://jt;
proxy_connect_timeout 3;
proxy_read_timeout 3;
proxy_send_timeout 3;
}
}
检查配置Nginx健康检查配置Nginx健康检查配置