MENU

linux下resin集群配置,实现 session 共享

2016 年 10 月 20 日 • 应用服务器

为什么要这样干?

nginx 轮训,就会出现session共享问题,能解决的就是使用nginx的ip_hash;算法,但是有很多弊端,我不多说了,这篇文章是做resin集群,跟nginx没有任何关系,继续让他轮训就可以了,以下是实现方法。resin安装及基础配置详见这篇文章

环境

nginx IP:192.168.1.116:80 软件版本:Tengine/2.1.2
IP:192.168.1.96:80 软件版本:resin-pro-4.0.47
IP:192.168.1.89:80 软件版本:resin-pro-4.0.47

nginx 配置

nginx配置
upstream www_server_plools{
    server 192.168.1.96:80 max_fails=2 fail_timeout=30s ;
    server 192.168.1.89:80 max_fails=2 fail_timeout=30s ;
}
    server {
        listen       80;
        server_name  192.168.1.116;
        location / {
        proxy_pass http://www_server_plools;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

配置resin集群

1.下载补丁

这操蛋玩意是收费的,只有professional版的才能做集群,有钱的自己买,没钱的下载破解补丁

下载完之后会得到一个压缩包,里面有一个pro.jar的文件,替换掉$RESIN_HOME/lib/pro.jar文件。

2.修改resin配置文件,两个resin配置一模一样,以下是配置文件

resin.properties

dev_mode      : false
resin_doc      : false
app_servers      : 192.168.1.96:6800  192.168.1.89:6800            #集群地址
home_cluster : app
app.http          : 80
web.http          : 8080
setuid_user   : www-data                                                        #运行用户
setuid_group  : www-data                                                         #运行组
jvm_args  : -Djsse.enableSNIExtension=false -d64 -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+UseParallelOldGC -XX:+UseCodeCacheFlushing
jvm_argsa : -Xms4096m -Xmx4096m -Xmn1024m -XX:MaxPermSize=768M -Xss1m -Xloggc:log/gc-aresin.log -XX:ReservedCodeCacheSize=96m
jvm_argsw : -Xms768m -Xmx768m -Xmn196m -XX:MaxPermSize=320M -Xss256k -Xloggc:log/gc-wresin.log 
jvm_mode  : -server   #配置内存,按需配置
port_thread_max   : 2560
accept_thread_max : 32
accept_thread_min : 8
tcp_cork : true
sendfile : true
keepalive_select_enable : true
proxy_cache_enable : true
proxy_cache_size : 256m
session_store : true
quercus_disable : true
3.修改cluster-default.xml

session-config替换成以下内容

           <session-config>
           <use-persistent-store>${session_store}</use-persistent-store>
         
           <enable-url-rewriting>true</enable-url-rewriting>
           <enable-cookies>true</enable-cookies>
           <reuse-session-id>all</reuse-session-id>
           <!-- always-load-session>true</always-load-session -->
           <!-- always-save-session>true</always-save-session -->
           <session-timeout>10</session-timeout>
           <session-max>40960</session-max>
         </session-config>
       </web-app-default>
     </host-default>

保存退出

修改完成后启动resin,两个都启动,查看一下变化。

IP为192.168.1.89的app-0会变成app-1

停掉其中一个resin,另一个会有一下提示信息。

最后验证一下

结果就是无论nginx轮训到哪台服务器,session 信息都能同步过去。不会出现在A服务器上登陆过之后轮训到B,然后重新登录的情况。等等等等。。。

最后编辑于: 2018 年 12 月 18 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码