Docker+Nginx+tomcat实现一个服务器上多个tomcat的负载均衡
前提条件:搭建好了docker,(没有的话,就修改tomcat的端口)+我是在服务器上操作的+nginx(我前面的博客都有相关教程)1.用docker的tomcat镜像启动tomcat服务docker run -d -p 8088:8080 tomcatdocker run -d -p 8089:8080 tomcat2.分别进入docker容器,并在tomcat的webapps目录下创建cxx.
·
前提条件:搭建好了docker,(没有的话,就修改tomcat的端口)+我是在服务器上操作的+nginx(我前面的博客都有相关教程)
1.用docker的tomcat镜像启动tomcat服务
docker run -d -p 8088:8080 tomcat
docker run -d -p 8089:8080 tomcat
2.分别进入docker容器,并在tomcat的webapps目录下创建cxx目录,目录下创建index.html文件,内容分别为server1,server2.
另一个tomcat一样的操作
3.配置nginx
upstream pic{
server 127.0.0.1:8088;
server 127.0.0.1:8089;
}
server{
listen 80;
server_name www.superboycxx.top;(自己准备一个域名)
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://pic;
proxy_redirect off;
}
}
重启nginx
轮询方法,先访问server1,然后一直访问server2
如果是将我们的web应用程序这样部署,怎么解决session问题,权限,已认证的信息怎么共享?
发现访问访问着就弹出来了。
我们查看日志发现,通过nginx负载均衡,从一台服务器,访问到另一台去了,那session肯定没有,所以退出了。
=================================================
解决办法:
1.修改nginx配置文件
IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
}
更多推荐
已为社区贡献1条内容
所有评论(0)