`
yang_min
  • 浏览: 338178 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JBOSS7 集群和Session复制配置笔记

阅读更多

最近项目组需要研究下Jboss7的集群等新特性,这里把Jboss7集群配置以及session复制的配置记录下,以备忘.

看了Jboss7的官方文档,以及一些资料,由于E文水平有限,理解的不是很透彻,不过幸好在同事的帮助下终于完成配置且测试成功了,这里非常感谢...微笑

Jboss7的集群方式一般提供了两种方式:

1.Standalone模式当中的standalone-ha.xml,这种适合集群的机器不多或者单个服务器的环境.

2.Domain模式,这种模式可以在控制台进行统一管理,可配置很多台集群进行统一管理,非常方便.

 

一般来说个人推荐在服务器少的情况下第一种情况比较灵活.

要配置集群并实现Session复制功能需要利用Jboss的组件mod_cluster

http://www.jboss.org/mod_cluster

 

 

modcluster负责Apache HTTPD与AS群集的连接工作。通过HTTPD作为前端,为用户提供一个统一的群集访问点,后面负责将负载分担至群集内各节点。

好了直接进入配置正文:

环境:两台RedHat Linux服务器.这里两台机器即:两个节点做集群,

 

node1:192.168.103.68
node2:192.168.103.69

 

 分别在两台机器上安装Jboss7 这里安装过程就不介绍了.比较简单.

node1机器上的Jboss7安装路径:/usr/local/jboss-as-7.1.1.Final

node2机器上的Jboss7安装路径:/usr/local/jboss7

 

默认情况下,在Jboss7的安装路径下/standalone/configuration下有许多配置文件,这里我们主要使用standalone-ha.xml配置文件,修改之前可以进行先备份:

Node1:
cd /usr/local/jboss-as-7.1.1.Final/standalone/configuration
cp standalone-ha.xml standalone-ha.xml.bak
Node2:
略...

 

下面我们编辑node1上的standalone-ha.xml文件,修改如下内容:

<server name="standalone-node1" xmlns="urn:jboss:domain:1.2">

 注:设置节点名称.
<subsystem xmlns="urn:jboss:domain:modcluster:1.0">
            <mod-cluster-config advertise-socket="modcluster" advertise-security-key="1234567890">
                <dynamic-load-provider>
                    <load-metric type="busyness"/>
                </dynamic-load-provider>
            </mod-cluster-config>
        </subsystem>
注:设置mod_cluster中统一进行管理信息同步的安全认证口令,下面在mod_cluster配置当中会进行显示配置.

 

 <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" instance-id="${jboss.node.name}" native="false">
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
            <virtual-server name="default-host" enable-welcome-root="true">
                <alias name="localhost"/>
                <alias name="example.com"/>
            </virtual-server>
        </subsystem>
注:这里指定web服务中的实例节点.

 

 

红色部分为新加内容;

同样node2上的standalone-ha.xml:

<server name="standalone-node2" xmlns="urn:jboss:domain:1.2">


 

 

<subsystem xmlns="urn:jboss:domain:modcluster:1.0">
            <mod-cluster-config advertise-socket="modcluster" advertise-security-key="1234567890">
                <dynamic-load-provider>
                    <load-metric type="busyness"/>
                </dynamic-load-provider>
            </mod-cluster-config>
        </subsystem>

 

 

 <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" instance-id="${jboss.node.name}" native="false">
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
            <virtual-server name="default-host" enable-welcome-root="true">
                <alias name="localhost"/>
                <alias name="example.com"/>
            </virtual-server>
        </subsystem>

 同样红色部分为新加内容.

 

 到这里Jboss的配置就差不多了,下面进行配置mod_cluster的配置.

 

我们在这个demo中,mod_cluster和node1在一台机器上,所以IP地址和node1是一样。但是mod_cluster并不要求部署在集群节点中的一台机器上,只要它们在一个子网即可通过IP Multicast来自动发现。此外,mod_cluster还支持广域网组建群集,但我怀疑这种方式的实用性,并且也不是本文的重点,所以并不详细展开协议层方面的细节。只需要理解一点就可以了.

 

 我这里使用的mod_cluster版本下载地址:

 

http://downloads.jboss.org/mod_cluster//1.2.0.Final/mod_cluster-1.2.0.Final-linux2-x64-ssl.tar.gz

 这个包自带了apache的web server以及mod_cluster组件因此比较方便使用,将其部署在node1机器上,安装路径:

 

 

/opt/jboss/httpd

 编辑mod_cluster的配置文件:

 

 

 vi /opt/jboss/httpd/httpd/conf/httpd.conf

 

 

默认情况下基本上只需要修改下地址跟端口即可:

 

ServerName 192.168.103.68:80
<IfModule manager_module>
  Listen 192.168.103.68:7777
  ManagerBalancerName mycluster
  <VirtualHost *:7777>
    <Location />
     Order deny,allow
     Deny from all
     Allow from all
    </Location>
    KeepAliveTimeout 300
    MaxKeepAliveRequests 0
    #ServerAdvertise on http://@IP@:6666
    AdvertiseFrequency 5
    AdvertiseSecurityKey 1234567890
    #AdvertiseGroup @ADVIP@:23364
    EnableMCPMReceive
    <Location /mod_cluster_manager>
       SetHandler mod_cluster-manager
       Order deny,allow
       Deny from all
       Allow from all
    </Location>
  </VirtualHost>
</IfModule>

 然后保存,退出,启动apache服务:

 

 

 /opt/jboss/httpd/sbin/apachectl start

 

 

然后下面可以进入测试,这里传一个比较简单的demo包(cluster-demo.war)分别上传到node1,node2机器上Jboss7的部署路径:

 

Jboss7安装路径/standalone/deployments

 然后分别启动node1,node2上的Jboss7.

 

 

node1:
Jboss安装路径/bin/standalone.sh --server-config=standalone-ha.xml

node2:
Jboss安装路径/bin/standalone.sh --server-config=standalone-ha.xml

 

 

然后访问一下路径:http://192.168.103.68:7777/mod_cluster_manager

 

 

 

分别访问:http://192.168.103.68/cluster-demo/

http://192.168.103.68/cluster-demo/put.jsp  设置session

http://192.168.103.68/cluster-demo/get.jsp  取session

 

测试步骤:

设置session之后停止任意节点的jboss服务,然后在取session看是否成功取得之前put的session值,

呵呵..不管你信不信,反正我这边测试成功了,可以实现集群以及session复制...酷

 

 

 

 附件:

cluster-demo.war  是本次demo的war包用来测试sesson复制.

jboss7-shell.zip    是分享两个个jboss7的start|stop|restart shell脚本,一个是单服务模式下的,另个是集群模式下,其实也差不多,完全可以修改成兼容通用的,但是现在开始忙了,以后在弄.

注:其中jboss7_cluster脚本中停止服务需要设置当前机器的地址,否则无法停止服务,不过这里也可以修改的,如果有人修改好通用的脚本可以共享出来哈...非常感谢!!!

分享到:
评论
4 楼 yin_bp 2015-04-23  
不建议使用session复制机制,推荐bboss会话共享框架,详细资料参考:
http://yin-bp.iteye.com/category/327553
3 楼 yang_min 2013-12-26  
582399232 写道
博主能问几个问题吗?
1.按照你的步骤执行了,但是首先在访问mod_cluster_manager的时候,网页提示访问不到,没有这个资源,这是为什么?你的图片也看不到
2.你说的取session确切点说就是去当前时间对吧?我用你的war包部署了,set.jsp看到的是当前时间, 同一地址get.jsp能看到刚才刷新的时候,这就是session复制成功了么?我有点不懂
3.我重启了一下jboss的node2,然后开启了httpd服务,没开node1,但是使用之前访问的地址就访问不到, 这样就达不到宕机保护了,难道在开启的时候还要两台都开启吗?httpd服务好像是提供外部访问的一个地址吧?httpd的配置里哪个是设置外部访问地址的?也没看见你在配置里添加node2的地址。
希望能得到博主的帮助,谢谢



问题1:你是否在配置文件中配置了mod_cluster_manager 请参考例子.
问题2:session复制的问题...类似两个节点,1节点用户登录进来.session已经保存.如果该节点挂掉,此时切换到2节点,如果用户不用登录还能正常访问能够取得登录信息的数据那说明session复制成功,具体请学习下session相关知识.
问题3:web服务我这个例子是在node1服务器上安装的
2 楼 582399232 2013-12-11  
博主能问几个问题吗?
1.按照你的步骤执行了,但是首先在访问mod_cluster_manager的时候,网页提示访问不到,没有这个资源,这是为什么?你的图片也看不到
2.你说的取session确切点说就是去当前时间对吧?我用你的war包部署了,set.jsp看到的是当前时间, 同一地址get.jsp能看到刚才刷新的时候,这就是session复制成功了么?我有点不懂
3.我重启了一下jboss的node2,然后开启了httpd服务,没开node1,但是使用之前访问的地址就访问不到, 这样就达不到宕机保护了,难道在开启的时候还要两台都开启吗?httpd服务好像是提供外部访问的一个地址吧?httpd的配置里哪个是设置外部访问地址的?也没看见你在配置里添加node2的地址。
希望能得到博主的帮助,谢谢
1 楼 582399232 2013-11-26  
你好楼主,我想问下jboss集群的几个问题,我的QQ:582399232 谢谢

相关推荐

    JBoss集群配置的Session复制

    JBoss集群配置的Session复制。

    JBoss集群配置的Session复制.docx

    配置集群服务的优秀资料,web开发工程师的必备资料,大家快来下啊。

    jboss7集群配置方案说明书

    1. Jboss7+apache集群 1 1.1 Jboss主从服务器设置: 1 1.2 apache相关的配置 3 2. Solr集群配置 3 2.1 solr分发设置 3 2.2 solr部署 4

    Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理

    Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理

    Apache2.2+JBOSS 5 集群配置

    Apache2.2+JBOSS 5 在LIUXN下的集群配置

    Jboss集群配置指南

    3.1. 配置Session复制 6 3.2. 配置Clustering services 6 3.3. 配置TreeCache cluster service 7 4. 设置run 参数 7 5. Web client 7 5.1. web.xml 7 5.2. jboss-web.xml 7 5.3. client调用ejb方法 8 6. EJB 8 6.1. ...

    jboss session 复制

    jboss session 复制,虽然能转发,不能session复制的原因!

    jboss 4.0.2 集群 配置

    这个是转载Bromon原创的重量级:jboss 4.0.2 集群 配置

    jboss session 复制二

    jboss session 复制二,网络资料,大家共同参考

    JBOSS7集群配置说明.doc

    JBOSS中文文档很少 项目本身的版本更新又频繁 因此初学者不易掌握 容易走入误区 请根据本文的写作顺序 并下载指定的程序版本 确保程序版本匹配 调试环境除httpd+mod cluster和jboss7独立模式 standalone 可以在...

    Jboss6+mod_jk+apache2.2集群实现session的复制

    实现两个节点之间的无缝负载均衡,实时session复制,当一台机子的jboss的服务跨掉以后,自动会切换到另外一台服务器上面,对于用户的使用没有丝毫的影响。

    jboss 集群配置

    JBOSS的HTTP cluster实现了两项任务:会话状态复制(Session state replication)和负载平衡(Load-balance of incoming invocations)。 会话状态复制用来复制集群中不同节点上客户端的连接状态,以实现当集群中的...

    快速配置JBoss集群

    在default目录下快速配置JBoss集群(Web方面) 说起JBoss集群好像很高深的样子,其实一点也不恐怖,建立一个集群很简单,难的是怎么针对具体的应用优化服务器和实现负载均衡(学习中^o^)。本文将带领大家在JBoss的...

    Jboss7 +apache 2.2.25+mod_jk 配置集群

    Jboss7 +apache 2.2.25+mod_jk 的配置集群 Jboss7 在windows下还没有看到有这块的文档 所以把写好的放上去和大家一志分享

    apache+jboss集群参考

    apache+jboss集群参考,参考介绍集群实现办法

Global site tag (gtag.js) - Google Analytics