似乎在使用standalone-ha.xml而不是standalone.xml时添加了JSESSIONID中的instance-id,至少在我的情况下:
# 独立(未附加实例 ID)
[mad@max bin]$ ./standalone.sh -Djboss.instance.id=node1 -Djboss.node.name=node1
[mad@max bin]$ curl -I http://127.0.0.1:8080/cluster-test/
HTTP/1.1 200 OK
Connection: keep-alive
X-Powered-By: Undertow/1
X-Powered-By: JSP/2.3
Set-Cookie: JSESSIONID=vEE6VucqPJBCbewsJceWKRjVAYvT1oxWy0ItAWwu; path=/cluster-test
Server: JBoss-EAP/7
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 100
Date: Mon, 29 Jan 2018 18:06:22 GMT
# 独立 HA(附加实例 ID)
[mad@max bin]$ ./standalone.sh -c standalone-ha.xml -Djboss.instance.id=node1 -Djboss.node.name=node1
[mad@max bin]$ curl -I http://127.0.0.1:8080/cluster-test/
HTTP/1.1 200 OK
Connection: keep-alive
X-Powered-By: Undertow/1
X-Powered-By: JSP/2.3
Set-Cookie: JSESSIONID=5y1NCo9CM963aO5-OurRJAx2LMFl8wIi0AV3PJzm.node1; path=/cluster-test
Server: JBoss-EAP/7
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 100
Date: Mon, 29 Jan 2018 18:03:38 GMT
正如我们在独立模式中看到的那样,JSESSIONID 中没有附加 .node1。
两种情况下的 Undertow 配置:
<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${jboss.instance.id}">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
这对我来说没有意义。有时你所拥有的只是一个 Apache/Nginx Web 服务器在两个或多个节点之间进行负载平衡,而无需 HA 配置。这对粘性会话造成了巨大的问题,有什么建议吗?
在域模式下,情况相同:如果您从默认配置文件创建服务器组,则不会将实例 ID 添加到 JSESSIONID。