Docker+Nginx+tomcat实现一个服务器上多个tomcat的负载均衡

前提条件:搭建好了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; 
} 


相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页