nginx作为反向代理服务器可以用作负载均衡,可以用一台服务器作为负载均衡,上面安装nginx,另外用两台或者更多的服务器作为web应用服务器,上面安装相同的tomcat,nginx根据负载的相关策略将外网访问的请求分发到应用服务器上,每个请求都可能分发到不同的web应用服务器,所以需要处理一下tomcat的session问题,将所有的web应用服务器上tomcat的session统一存储在一个数据库里面比如redis,那么这里就需要一个数据库服务器,总体来要实现真正的负载均衡,至少需要4台服务器。 1.nginx负载均衡配置 nginx具体怎么安装前面有文章介绍。 负载均衡服务器ip:192.168.1.100 web应用服务器ip1:192.168.1.101 web应用服务器ip2:192.168.1.102 nginx.conf配置文件中配置
http {
upstream tomcat {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
...
server {
listen 80;
server_name localhost;
...
location / {
proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
...
}
重启nginx之后,可以访问地址192.168.1.100就能看到tomcat的欢迎页面,刷新页面会在两个web服务器间切换。 2.tomcat redis会话状态配置 多个tomcat之间共享session,这样不管用户的请求发送到哪台服务器,用户的登陆状态都不会丢失了。 redis的tomcat session管理下载地址:
https://github.com/jcoleman/tomcat-redis-session-manager 这个需要下载master分支的源代码下来然后编译,这个分支是tomcat7以上的版本,编译的依赖文件pom.xml如下