我在集群中有两个 CentOS 8 节点(192.168.1.101 和 192.168.1.102)(使用起搏器),我将 VIP(192.168.1.100)和 Apache 配置为集群的资源。在所有节点上都安装了 Apache 2.4 和 Tomcat 9
Apache的配置是: vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ProxyPreserveHost On
<Proxy balancer://myClusterBalancer>
BalancerMember http://192.168.1.101:8080/ route=server01 keepalive=On ping=5 max=200 ttl=120
BalancerMember http://192.168.1.102:8080/ route=server02 keepalive=On ping=5 max=200 ttl=120
ProxySet stickysession=JSESSIONID|jsessionid lbmethod=byrequests timeout=60
</Proxy>
ProxyPass /server-status !
ProxyPass /MyWebApp/ balancer://myClusterBalancer/MyWebApp/ stickysession=JSESSIONID|jsessionid scolonpathdelim=On
ProxyPassReverse /MyWebApp/ balancer://myClusterBalancer/MyWebApp/
ProxyPass / balancer://myClusterBalancer/MikiFax/ stickysession=JSESSIONID|jsessionid scolonpathdelim=On
ProxyPassReverse / balancer://myClusterBalancer/MyWebApp/
</VirtualHost>
我的 Tomcat server.xml 用于 Node1 和 Node2 vim /opt/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server01">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server02">
我的系统以这种方式工作:
- 在http://192.168.1.100/MyWebApp上向 VIP 发出 HTTP 请求,我收到了 Apace 的回复;
- Apace 将请求转发到作为反向代理和负载均衡器的两个 Tomcat 之一
- Tomcat发送http响应
现在在 Tomcat 的页面上,我有不同的链接,当我单击此链接(打开一个新选项卡)时,我需要使用相同的 Tomcat 服务器。
链接格式如下:
第一个链接:
<a target="_blank" href="http://192.168.1.100/MyWebApp/F?URL=1599825050056&viewAttach=Y">CLICK FOR DETAILS</a>
当我单击它时,我会使用 第二个链接打开一个新选项卡:
<a href="attachments\myAttachment.pdf" target="_blank">myAttachment.pdf</a>
这个文件在我加载页面时保存在服务器上(在我点击第一个链接之后),如果我点击链接我在新选项卡中打开文件,但有时这个请求由另一台服务器处理,我收到一个错误,因为在第二台服务器上这个文件没有被下载。
我该如何解决这个问题?感谢更新。