1

似乎在使用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。

4

1 回答 1

0

为什么要引入新的系统属性?instance-id 已经默认为已解析的 ${jboss.node.name} 表达式。未指定时,该属性默认为服务器的主机名。

于 2018-02-08T16:44:53.663 回答