与Hazelcast,Jetty和Nginx的会话持久性问题

时间:2013-04-04 08:17:51

标签: session nginx persistence jetty hazelcast

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

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

0 个答案:

没有答案