JBOSS7集群配置说明

JBOSS7集群配置说明

第一节      前言

JBOSS7具有独立模式(standalone)和域模式(domain)两种运行方式。独立模式(standalone)是单机器单进程方式,配置布署简单,适用于一般单服务器项目。域模式(domain)是多机器多进程方式,配置稍复杂,适用于大型分布式项目。如果要集群布署项目,最简单的方式就是使用域模式(domain)。

当使用域模式(domain)时,一台机器上的一个JBOSS7应用(host)可以开启多个Web Server,将一个JBOSS7应用(host)作为主控制服务器,就能控制管理其它机器上的JBOSS7应用(host),这样理论上通过增加机器,我们就可以获得无限个Web Server。把我们的JAVA项目通过主控制服务器布署到这些Web Server上,再通过httpd+mod_cluster,就能获得集群功能。

mod_cluster是JBOSS开发的专门用于集群的httpd模块,JBOSS7应该已内置有mod_cluster模块并已配置好,JBOSS官网也提供了配置好mod_cluster的httpd项目,我们只需下载使用即可。

注意:JBOSS中文文档很少,项目本身的版本更新又频繁,因此初学者不易掌握,容易走入误区。请根据本文的写作顺序,并下载指定的程序版本,确保程序版本匹配。调试环境除httpd+mod_cluster和jboss7独立模式(standalone)可以在windows系统下以外,jboss7域模式(domain)一定要用linux环境,否则无法调试通过

第二节      httpd+ mod_cluster安装、配置、运行

作为初学者,最好先把httpd+mod_cluster调试成功后再往后进行,网上的资料多是针对熟悉linux、jboss、httpd的读者,因此有不同程度的内容缺失,请按本文的介绍操作。

一   下载、安装、运行httpd+mod_cluster

访问http://www.jboss.org/mod_cluster/downloads/1-2-0-Final下载mod_cluster-1.2.0.Final-linux2-x64-ssl.tar.gz(windows下是mod_cluster-1.2.0.Final-windows-x86-ssl)。注意版本是1.2.0.Final,因为我们后面用的是jboss-as-7.1.1.Final,它内置的是mod_cluster-1.2.0.Final版本。还要注意这里下载的是httpd+mod_cluster,也就是包含了httpd的程序,所以文件大小应该是8-9M,而不是只有几百K,只包含几个so文件的程序。网上一般介绍的是下载只包含几个so文件的程序,然后修改linux自带的httpd配置,但是根据测试发现linux自带的httpd版本和我们需要的mod_cluster不匹配,无法配置成功。所以我们要下载包含完全httpd程序的mod_cluster文件。

在linux命令行下输入tar –zxvf mod_cluster-1.2.0.Final-windows-x86-ssl解压文件包,解压后第一件事就是进入opt/jboss/httpd/sbin目录输入./installhome.sh(windows下是httpd-2.2\bin\installconf.bat),生成默认配置。注意这一步不能缺,如果不先生成默认配置,我们后面就没法根据需要修改配置文件。

接着修改opt/jboss/httpd/httpd/conf/httpd.conf文件内容(可以用SSH Secure File Transfer Client把文件下载下来修改保存后再上传上去):

Listen 8000改成

Listen 192.168.1.204:80

#ServerName localhost:8000 改成

ServerName 192.168.1.204:80

文件最下面的

<IfModule manager_module>

Listen 127.0.0.1:6666

ManagerBalancerName mycluster

<VirtualHost 127.0.0.1:6666>

<Location />

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Location>

KeepAliveTimeout 300

MaxKeepAliveRequests 0

#ServerAdvertise on http://127.0.0.1:6666

AdvertiseFrequency 5

#AdvertiseSecurityKey secret

#AdvertiseGroup 224.0.1.105:23364

EnableMCPMReceive

<Location /mod_cluster_manager>

SetHandler mod_cluster-manager

Order deny,allow

Deny from all

Allow from 127.0.0

</Location>

</VirtualHost>

</IfModule>

改成

<IfModule manager_module>

Listen 192.168.1.204:6666

ManagerBalancerName mycluster

<VirtualHost *:6666>

<Location />

Order deny,allow

Deny from all

Allow from all

</Location>

KeepAliveTimeout 300

MaxKeepAliveRequests 0

#ServerAdvertise on http://127.0.0.1:6666

AdvertiseFrequency 5

AdvertiseSecurityKey1234567890

#AdvertiseGroup 224.0.1.105:23364

EnableMCPMReceive

AllowDisplay On

<Location /mod_cluster_manager>

SetHandler mod_cluster-manager

Order deny,allow

Deny from all

Allow from all

</Location>

</VirtualHost>

</IfModule>

基本上改动的就是把127.0.0.1换成本机局域网IP,Listen192.168.1.204:80是监听IP和端口,这样httpd才会处理访问访问这个IP端口的请求,ServerName 192.168.1.204:80是对外的访问地址,当服务器有DNS功能时,可以改成ServerName www.example.com:80,由DNS来解析域名的IP。注意,本机必须处在一个局域网内并分配有IP,否则可能调试不过。必须启用AdvertiseSecurityKey并设置好密码,没有密码jboss7.1.1.Final无法连接mod_cluster,这是网上多数资料没有讲到的。AllowDisplayOn是显示详细内容,开启后才能看出有没有连接成功的消息。

进入opt/jboss/httpd目录运行./sbin/apachectl start(windows直接运行bin/httpd),注意不要直接进入sbin目录再运行./apachectl start,因为这会运行linux自带的httpd程序,而不是我们这里的httpd(很奇怪的问题)。命令功能运行后应该没有任何输出就直接结束,如果有输入信息,就可能表示有问题。成功启动后,通过浏览器访问http://192.168.1.204,正常情况下页面上会显示It works!文字,如果显示的是apache的介绍页面,则说明你启动的可能是红帽linux自带的apache程序,而不是我们这里使用的httpd程序。再访问http://192.168.1.204:6666/mod_cluster_manager,注意是mod_cluster_manager而不是mod_cluster-manager,“_”和“-”的区别。出现这个画面表示运行正常:

二   用jboss7独立模式(standalone)来检验mod_cluster的配置结果

访问https://www.jboss.org/jbossas/downloads.html下载jboss-as-7.1.1.Final,

解压缩后进入standalone\configuration目录,删除standalone.xml文件,将standalone-full-ha.xml重命名为standalone.xml文件,因为mod_cluster缺省配置都在standalone-full-ha.xml中,现在我们要使用standalone-full-ha.xml内的配置来运行jboss7。修改文件内容:

<serverxmlns="urn:jboss:domain:1.2">

改为

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

<mod-cluster-configadvertise-socket="modcluster">

改为

<mod-cluster-configadvertise-socket="modcluster" advertise-security-key="1234567890">

<subsystemxmlns="urn:jboss:domain:web:1.1"default-virtual-server="default-host" native="false">

改为

<subsystemxmlns="urn:jboss:domain:web:1.1"default-virtual-server="default-host" native="false" instance-id="${jboss.node.name}">

<interfaces>

<interfacename="management">

<inet-addressvalue="${jboss.bind.address.management:127.0.0.1}"/>

</interface>

<interfacename="public">

<inet-addressvalue="${jboss.bind.address:127.0.0.1}"/>

</interface>

<interfacename="unsecure">

<inet-addressvalue="${jboss.bind.address.unsecure: 127.0.0.1}"/>

</interface>

</interfaces>

改为

<interfaces>

<interfacename="management">

<inet-addressvalue="${jboss.bind.address.management:192.168.1.204}"/>

</interface>

<interfacename="public">

<inet-addressvalue="${jboss.bind.address:192.168.1.204}"/>

</interface>

<interfacename="unsecure">

<inet-addressvalue="${jboss.bind.address.unsecure:192.168.1.204}"/>

</interface>

</interfaces>

name="standalone-node1"是添加Server名称,advertise-security-key="1234567890"是在httpd配置中定义的AdvertiseSecurityKey,没有这个则连接不上httpd+mod_cluster,instance-id="${jboss.node.name}"是JBOSS7.1.1.Final的bug,如果不添加此项,则mod_cluster无法找到Node节点名称。

配置完成后,进入bin目录,运行./standalone.sh, 启动后通过浏览器访问http://192.168.1.204:6666/mod_cluster_manager,依然和刚才一样并无变化。接下来要在服务器上布署项目才能看得出变化。先停止jboss7。

https://github.com/liweinan/cluster-demo下载cluster-demo-master.zip,解压后将里面的内容手工打包为cluster.war文件,cluster.war文件是一个很简单的web项目,唯一不同的是项目内的web.xml文件中多了一行<distributable/>,这个标记会开启jboss cluster功能。将cluster.war拷贝到standalone\deployments目录中,再启动./standalone.sh。

注意观察命令行,如果jboss7正常启动mod_cluster功能,会出现如下信息:

18:58:34,855 INFO [org.jboss.modcluster.ModClusterService] (MSC service thread 1-1)Initializing mod_cluster 1.2.0.Final

这里可以看出启动了mod_cluster,且版本是1.2.0.Finals

18:58:36,449 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876:Starting deployment of "cluster.war"

18:58:36,949 INFO  [stdout](pool-14-thread-1)

18:58:36,964 INFO  [stdout](pool-14-thread-1)-------------------------------------------------------------------

18:58:36,964 INFO  [stdout](pool-14-thread-1) GMS: address=standalone-node1/web, cluster=web, physicaladdress=192.168.1.204:55200

18:58:36,964 INFO  [stdout](pool-14-thread-1)-------------------------------------------------------------------

这里可以看出web server启动mod_cluster功能,如果没有,说明mod_cluster没启动。

上述信息只会在有java应用程序布署到jboss7后才会出现,也只有jboss7中的web server节点布署了java应用程序后才能促使jboss7启动mod_cluster功能。

布署后再次访问http://192.168.1.204:6666/mod_cluster_manager,应该会在原来的内容下有如下显示:

如果有,则表示httpd+mod_cluster配置无误,可以接着往下进入域模式的配置管理了。如果没有,说明httpd+mod_cluster或jboss配置有误,二者没能成功建立起联系,需要检查配置并修改重试,直到有上述显示为止,才能说明httpd+mod_cluster是配置成功的。

第三节      JBOSS7域模式的配置、布署、运行

一   准备

  • 两台具有不同IP的linux服务器:主机master,IP:192.168.1.204,从机slave,IP:192.168.1.206,确保在一个局域网内可互相访问
  • 下载jboss-as-7.1.1.Final.zip,分别解下缩布署到主机和从机上,命名为master和slave

二   账号权限设置

  • master服务器端

i.         进入bin目录,运行./add-user.sh,添加admin账号

ii.         再次运行bin/add-user.bat,添加slave账号

请注意,用户名必须等于slave的host的名字。这意味着对于每个额外的host需要一个用户。

三   修改master服务器缺省配置

  • 修改domain/configuration/host.xml

  • 修改domain/configuration/domain.xml

四   修改slave服务器缺省配置

  • 修改domain/configuration/host.xml

添加server-identities到security-realm,用于从机尝试连接到主机时的身份验证。因为slave服务名设置为‘slave‘,所以我们应该用‘slave‘用户的密码。加密值属性中的‘MTIzMTIz =‘,是‘123123’的Base64编码。可以通过使用base64计算器来获得 http://www.webutils.pl/index.php?idx=base64。在域控制器部分中<domain-controller>,我们还需要添加安全领域属性security-realm="ManagementRealm"

五   试运行

现在一切都是为两个主机设置在域模式下运行。试着在两个主机上分别运行./domain.sh。如果一切都好,我们可以看到master上的日志显示:

这表明master和slave都启动成功,且相互已经建立了联系。

六   布署测试程序

  • 通过浏览器访问http://192.168.1.204:9990,使用前名创建的账号:admin,密码:123123。192.168.1.204是主控制端host所在地址,我们用这个host来控制其他的host。进入后可以看到master和slave都有三个server,分别是

我们要把cluster.war布署在server-three上,因为这个server属于other-server-group,在domain.xml中可以看到other-server-group用的profile是“full-ha”,是专用于mod_cluster的配置。

进入“Manage Deployments”页面,点击“Add Content”在右上角。然后我们应该选择cluster.war文件,遵循指令将其添加到我们的内容库。现在我们可以看到cluster.war已经添加。接下来,我们点击“添加组”按钮,并添加cluster.war到“other-server-group”,然后单击“保存”。

注意,在Server Active启动的状态下,是无法布署war项目的,因此布署前确保server-three处于关闭状态。

接下来,启动master和slave的server-three,观察命令行,会出现如下信息:

18:58:34,855 INFO  [org.jboss.modcluster.ModClusterService](MSC service thread 1-1) Initializing mod_cluster 1.2.0.Final

……

18:58:36,449 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876:Starting deployment of "cluster.war"

18:58:36,949 INFO  [stdout](pool-14-thread-1)

18:58:36,964 INFO  [stdout](pool-14-thread-1)-------------------------------------------------------------------

18:58:36,964 INFO  [stdout] (pool-14-thread-1)GMS: address=master /web, cluster=web, physical address=192.168.1.204:55200

18:58:36,964 INFO  [stdout](pool-14-thread-1)-------------------------------------------------------------------

这里可以看出web server启动mod_cluster功能,如果没有,说明mod_cluster没启动。

启动后再访问http://192.168.1.204:6666/mod_cluster_manager,应该会在原来的内容下有类似如下内容

这表明httpd+cluster和master,slave成功建产了联系,再访问http://192.168.1.204/cluster/,应该会看到httpd+mod_cluster自动将请求转发至master或slave其中一台服务器上,会显示如下内容

一切顺利的话,我们可以测试一下,把master或slave不管哪一个host停掉,http://192.168.1.204/cluster/依然会继续运行,httpd+mod_cluster会自动将请求转发至仍然运行的host服务器上,并能转移session会话(我试过slave断了,session能转发到master,但master断了,session无法转发到slave,仍有待解决,但不是大问题)。

最后,可以修改host.xml文件,将<servername="server-three" group="other-server-group"auto-start="false">

改为

<server name="server-three"group="other-server-group" auto-start="true">

使server-three自动启动。

本文内容参考:https://docs.jboss.org/author/display/AS71/AS7+Cluster+Howto

时间: 2024-09-29 09:52:56

JBOSS7集群配置说明的相关文章

Kafka集群配置说明

#kafka数据的存放地址,多个地址的话用逗号分 log.dirs=/tmp/kafka-logs #broker server服务端口 port=9092 #这个参数会在日志segment没有达到log.segment.bytes设置的大小,也会强制新建一个segment会被 topic创建时的指定参数覆盖 log.roll.hours=24 #是否允许控制器关闭broker ,若是设置为true,会关闭所有在这个broker上的leader,并转移到其他broker controlled.s

JBOSS-EAP-6.2集群部署

1 概述 应用的合理部署即能提高系统的可靠性和稳定性,又能提高系统的可维护性和扩展性.本文档详细阐述基于Apache负载均衡和JBOSS7集群的应用系统部署方案和配置步骤.内容涉及部署方案.环境配置.方案特性. 2 安装步骤 介绍支持以上设计方案所需的各个相关软件的版本信息及针对以上方案在实施时的详细配置过程. 2.1 安装准备 2.1.1 版本列表 功能模块 版本 下载 JAVA jdk-6u45-linux-x64.bin (注:64位)   负载均衡 Apache2.2.25 (依赖:ap

JBoss7.1.1 Final+mod_cluster-1.2.0.Final集群配置

项目需求,需要JBoss在windows下集群,记录一下以备后查 JDK:1.7 服务器环境:个人电脑windows xp jboss版本:7.1.1 Final mode_cluster:1.2.0 Final 1.配置mode_cluster 下载mode_cluster 1.2.0 Final windows 32位版本(测试电脑为32位,生产环境依据服务器而定)和Jboss7.1.1 Final 解压mode_cluster 压缩包到目录D:\mySoftware\httpd_mod_c

Nginx实现集群的负载均衡配置过程详解

Nginx实现集群的负载均衡配置过程详解 Nginx 的负载均衡功能,其实实际上和 nginx 的代理是同一个功能,只是把代理一台机器改为多台机器而已. Nginx 的负载均衡和 lvs 相比,nginx属于更高级的应用层,不牵扯到 ip 和内核的修改,它只是单纯地把用户的请求转发到后面的机器上.这就意味着,后端的 RS 不需要配置公网. 一.实验环境 Nginx 调度器 (public 172.16.254.200 privite 192.168.0.48)RS1只有内网IP (192.168

mysql cluster (mysql 集群)安装配置方案(转)

一.准备 1.准备服务器 计划建立有5个节点的MySQL CLuster体系,需要用到5台服务器,但是我们做实验时没有这么多机器,可以只用2台,我就是一台本机,一台虚拟机搭建了有5个节点的MySQL CLuster体系,将一个SQL节点一个数据节点一个SQL节点放在了一台服务器上(192.168.1.252),将另一个SQL节点和一个数据节点放在了另外一台服务器上(192.168.1.52). 节点配置说明 节点 对应的IP和端口 管理节点(1个) 192.168.1.252 SQL节点 (2个

HA集群配置

HA(high available)即高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有两台机器A 和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务.常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能. 下面我们使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务. 一.准备工作  两个机器操作系统都是centos6.5,网卡eth0 ip分别为: master  192.1

Apache整合Tomcat、集群

1.1     使用mod_proxy整合 使用mod_proxy整合Tomcat需要我们开启Apache的代理功能,代理功能的开启可以通过在Apache的conf/httpd.conf文件中将如下内容前的“#”号去除,这样Apache就能在运行的时候加载mod_proxy模块了,从而开启了Apache的代理功能. #LoadModule proxy_module modules/mod_proxy.so 开启了mod_proxy之后我们还需要选择一个协议来作为Apache代理Tomcat的协议

LANP+KEEPALIVED集群(一)

lanp+keepalived集群 1.nginx模块与工作原理 (1)结构上分 基础模块:HTTP Access模块.HTTP FastCGI模块.HTTP Proxy模块和HTTP Rewrite 核心模块:HTTP模块.EVENT模块和MAIL模块 第三方模块:HTTP Upstream Request Hase模块.Notice模块和HTTP Access Key模块 (2)功能上分 Handlers(处理器模块):主要进行输出内容和修改headers信息等,此模块一般只有一个. Fil

Nginx详解-服务器集群

Nginx是什么 代理服务器:一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端.应用比如:GoAgent,FQ神器.  一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接.或者获得目标服务器的指定资源. Web代理(proxy)服务器是网络的中间实体. 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色.HTTP的代理服务器即是Web服务器又是Web客户端. 代理服务器是介于