1

我使用 Hazelcast 作为 Jetty 实例的 webapp 会话存储。Jetty 实例前面还有 Nginx 作为负载均衡器。

问题: 会话共享非常完美,因为我的两个码头服务器在不同的端口(8080 和 8081)上并排工作。但是,当我重新启动一个 Jetty 实例 (8081) 时,我失去了共享会话。我使用默认的 hazelcast.xml 和过滤器,罐子也被正确地放入了 webapp。

以下是使用会话对象的 groovy-grails webapp 代码示例:

package jtest

class HomeController {

def index() {
if(!session.test){
session.test = 1
} else {
session.test++
}
render "port = " + request.getServerPort() + "; session = " + session.test 
}
}

nginx.conf文件包含以下几行:

upstream backend  {
    #ip_hash;
server 127.0.0.1:8081; # Reverse proxy to  BES1
server 127.0.0.1:8082; # Reverse proxy to  BES2
}

server {
    listen       8080;
    server_name  localhost;
location / {
    proxy_pass              http://backend;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        Host $http_host;
}

问: 其实我想问问这种情况是正常的还是设置有什么特别要说的?

以下是代码示例

http://snipt.org/ziBa8 - Hazelcast.xml(几乎完好无损) http://snipt.org/ziBb2 - Hazelcast 过滤来自 webapp /WEB-INF/web.xml的代码

4

0 回答 0