- 浏览: 168795 次
- 性别:
- 来自: 北京
最新评论
-
ddnzero:
...
在JBoss AS7中进行项目部署 -
vivianivy:
请问这个集群方案能不能实现文件同步?
AS7群集配置 -
ndzj981479673:
jboss-admin.sh在哪里啊?我的bin目录下没有啊1 ...
JBoss AS7中的新概念-域 -
阿男bluedash:
582399232 写道我在启动域的master后启动slav ...
AS7群集配置 -
582399232:
我在启动域的master后启动slave,结果slave由于连 ...
AS7群集配置
JBoss AS7新加入了域(domain)的概念并实现了相关功能。域的提出及实现,其目的是使得多台JBoss AS服务器的配置可以集中于一点,统一配置、统一部署,从而在管理多台JBoss AS服务器时,实现集中管理。本文详细介绍如何使用AS7的这一新特性。
域(Domain)的概念及其与群集(Cluster)的区别
对于使用过JBoss AS过往版本的用户,可能对AS所提供的群集功能已经很熟悉了,在理解域的时候可能会遇到困难。那么域和群集有什么区别,用处上有什么不同呢?
总的来讲,JBoss的群集的目的是提供:
* 负载平衡(Load Balance)
* 高可用(High Availablity)
而域的目的则是将多台服务器组成一个服务器组(Server Group),并为一个服务器组内的多台主机(Host)提供:
* 单点集中配置(通过一个域控制器,即Domain Controller,实现组内主机的统一配置)
* 单点统一部署,通过域控制器将项目一次部署至组内全部主机。
简单来讲,群集的目标是让多台服务器分摊压力,当一台或多台服务器当机时,服务可以继续保持运转;而域的目标则是提供集中配置和管理多台服务器的能力。
在没有域的概念时,要想让群集内的多台服务器或几组服务器保持统一的配置,一个一个分别的去手工维护,是非常麻烦的事情,而域的引入解决了这一问题。
我们可以理解域和群集的相互关系是"正交(orthogonal)"的:通过一横一竖这两条轴,JBoss AS为我们在运维方面提供了强大的可扩展能力。
实验
熟悉了AS7中Domain的设计理念,接下来动手实际做个实验,看看Domain是如何在AS7中工作的。
*准备工作*
使用两台电脑做为实验器材,两台电脑的IP分别为10.0.1.3及10.0.1.18,分别运行JBoss AS7,并组成一个服务器组(Server Group)。其中,使用10.0.1.3这台机器做为域控制器(Domain Controller):
如上图所示,两台主机分别被命名为”master“及”slave“。通过配置,将master与slave组成一个服务器组,名为'main-server-group',其中master将做为这个服务器组的域控制器。
需要说明一点的是,服务器组(Server Group)可以由多台服务器(Host)组成,并不一定只有两台,所以不要被master及slave这样的名字给迷惑了,以为一个服务器组仅支持一主一从两台hosts。
本文中因为只使用两台服务器做为实验器材,因此出于方便角度将它们分别命名为master及slave。
此外,在一个服务器组中,只有一台域控制器,在本实验中我们将使用master这台机器做为domain controller。
*配置*
AS7由于经过了重新设计,因此在目录结构与配置文件上面与前一版本有了很大不同,对于熟悉了对AS6的配置和的人来讲,使用AS7会接触不少新概念和新思路。为了清楚表达,我会将一些与AS6及以前版本不同的地方做出必要的说明。
首先是bin目录中的内容:
在AS7以前版本中,用来启动JBoss服务的run.sh不见了,取而代之的是standalone.sh(独立运行模式)及domain.sh(域运行模式)。我们稍后将使用domain.sh来运行JBoss AS7,但首先要将两台hosts配置好,接下来讲解两台服务器的配置:
AS7的目录结构和前一版本有很大不同,因为配置文件及其所在位置也有很大变动,下面是AS7的目录结构:
可以看到有一个名为"domain"的目录,看一下这个domain目录里面的内容:
这个目录中包含了AS7运行在domain模式下所需的配置及内容,其中名为“configuration”的目录里面含有我们所需要的配置文件:
其中domain.xml和host.xml是我们需要关注的内容。我们需要对master及slave上面的配置文件分别进行配置:
从上图中可以看到,master的JBoss AS中需要配置domain.xml及host.xml两个文件,其中domain.xml是做为域控制器必须配置的内容,host.xml则是master及slave各自的JBoss AS都需要配置的文件。我们先从master上面的配置看起:
*Master上面的配置*
* domain.xml
这个文件里面有几个部分是值得我们关注一下的:
# extensions - 这一部分定义了域中服务器在启动时需要加载的模块。AS7使用了全新设计的JBoss Modules来加载模块,大幅提高了服务器的启动。这一内容不是本文讲解重点,后续我会专门写一篇文章来介绍。目前了解到这一程度即可。
# profiles - profiles是domain中定义的一个核心概念,也是domain的核心组成部分。基于profiles,AS7便实现了域中各服务器的统一集中配置:用户可通过profile对各子系统(subsystem)进行配置,完成后将profile配置给某个或多个服务器组,各服务器组内的主机共用一份配置。
# server groups - 服务器组的概念已经在前面的介绍中一再提及,也是AS7的域的设计中一个核心组成部分。在这里,AS7默认定义了两个服务器组:main-server-group及other-server-group,它们分别使用'default' profile及'ha' profile。在本实验中,我们将使用main-server-group。
* host.xml
上面是一些host.xml中需要配置的关键内容,已经针对要做的测试做了一些配置上面的修改,以下是详细说明:
# host name按照我们的需要改成了"master"。
# management - management定义了服务器的管理端口,其中:9999端口是所谓"native"二进制端口,后面的jboss-admin.sh管理命令会使用这个端口;9990则提供基于WEB页面的管理端。我们等一下两种管理端口都会用到。
# domain controller - 定义本服务器所需连接的domain控制器所在地址,因为master本身就是domain controller,所以连接至本机localhost即可。
# interfaces - management及public接口服务所在的地址,我们要将其设为slave可以访问到的IP地址,保证slave可以连接至host
# servers - 一个物理主机实际上可以同时运行多台JBoss AS7的Server,而每一台Server都可以配置到不同的服务器组去。在本实验中,我们使用最简的情况,master上面只跑一个server-one,属于main-server-group,把其它AS7默认设定的server可以都删掉,只留server-one。
*Slave上面的配置*
* domain.xml
Slave这台机器不作为域控制器而存在,因此不需要管它,也可以将domain.xml删掉或改名。
* host.xml
上面的配置有几点需要说明:
* slave里面,host name指定为"slave"。
* domain-controller:指定为master的IP:10.0.1.3,通过9999管理端口进行通讯。
* slave上面,属于main-server-group的server也命名为"server-one",这会和master上面的server冲突吗?实际上不会,因为两台同样名字的server运行在不同的host当中。
AS 7.1 的补充说明
从JBoss AS 7.1 开始,对控制端口(9999及HTTP端的9990)的安全配置成为必须。因此需要补充下述安全配置方面的步骤:
首先要在master上面创建管理员的账号,在bin目录下有add-user工具可以帮我们创建账号密码并进行配置,我们创建一个管理员账号admin,密码为123123:
可以看到系统为我们分别在domain和standalone创建了mgmt-users.properties,我们是用域模式运行,因此查看domain/configuration/mgmt-users.properties这个文件的最后一行:
可以看到相关账号密码已经被创建。此时查看host.xml:
可以发现host.xml已经把安全配置应用起来了,使用ManagementRealm这个安全域进行认证。
同样地,我们需要在slave主机上进行一模一样的工作。
接下来,我们需要做一下slave对master的认证连接工作。slave要想和master建立域控关系,需要知道master的管理端账号密码。在域控这一块,AS7对认证有要求:需要在域控制器上以过来连接的主机host名为用户名添加账号。
我们在slave的host.xml文件中指定了slave的host名为slave:
因此,master做为域控制器,需要在上面添加名为slave的管理员账号,密码仍为123123:
这时再查看mgmt-users.properties,可以看到多了slave账号:
接下来,我们要在slave主机的的host.xml做下认证配置,使用这个账号与master进行认证通信:
上面的配置中有这些值得注意:
我们在认证域ManagementRealm中配置了server-identities,这个认证域用在与域控制器master的连接方面。其中secret value是domain上对应slave主机名的那个账号的密码,用base64加密。我们在master上面配置的slave账号的密码为123123,MTIzMTIz=则是123123的base64加密后的文字。这个配置用在连接domain-controller时进行认证:
有关更多的AS7的安全配置的信息,可查看官方文档:
关于host.xml的详细配置方法,也可参考as7目录下自带的xsd文档:
*部署*
配置完成后,接下来便到了实际部署的阶段,我们将master和slave上面的AS7分别用domain.sh启动起来。
启动成功的话,应该可以在master上面看到上面的日志,slave被成功的注册进来。
完成启动后,我们需要将待使用的virtual-host启动起来,当AS7以domain的方式启动时,默认是不启动任何virtual server的(在我目前使用的7.0.0 CR1 White Rabbit版本中是这样),我们可以在domain.xml中配置默认加载virtual-host,也可以在服务器运行起来后,使用管理端命令动态的加载,在这里我准备使用后一种方式,从而讲解AS7管理端的使用方法。
在AS7的bin目录下面有一个jboss-admin.sh, 这是AS7提供的全新的管理工具,我们使用这个工具,连接至master:
可以看到,我们已经连接到了master的9999管理端口。接下来可以查看"default"这个profile当中的web模块的运行情况:
可见http服务器已经启动,由于我们的"main-server-group"使用的是default这个profile,因此,服务器组中的两台host的web模块接受profile的统一配置,都是已启动的。继续看一下web模块中的细节:
注意到virtual-server的状态是未定义(undefined),我们要想将一个web项目部署进服务器组中的各个host,就必须加载一个待部署的virtual-server,因此我们使用命令来添加:
可以看到,我们之前在domain.xml中配置的 "other.com" 这个 virtual host被成功添加了。
接下来是部署WEB应用的环节,我们首先用maven制作一个最简单的web项目,仅包含一个欢迎页面:
生成的项目如下:
使用如下命令将项目打成WAR包:
得到war:
接下来是部署这个war包,对于本次实验来讲,关键的部分在于能否通过domain提供的server group管理功能,一次将一个项目部署进server group中的多台服务器。我们接下来就验证这点,顺便看下AS7提供的WEB管理功能,打开WEB浏览器,访问master的HTTP端口的管理地址:
可以看到,管理页识别出AS7正运行在domain模式之下,并且目前共有两台主机运行(左上角的列表分别列有master及slave)。我们要关注的是server-group:点击右上角的"Server Groups",进入服务器组的管理页面,然后点击左边的"Manage Deployments"页面,进入部署功能页面:
可以看到,目前还没有任何资源被加至服务器组,此时点击右边的"Add Content"功能,将my-webpp.war添加进Content Repository(域控制器用于保存待部署资源的目录)。
添加完成后如下图所示:
然后点击"Add To Group"将my-webapp.war添加至 "main-server-group",并将其enable,一切顺利的话结果如下所示:
此时我们预期的结果应该是my-webapp.war被同时部署至master及slave了,分别试着访问master及slave的http资源,看看是否都部署上my-webapp这个应用了:
结果如我们所预期的那样,两台服务器都可以访问到这个部署的资源。通过对一个点(Domain Controller)的配置与部署,我们实现了多AS7服务器的集中管理。
*小结*
通过域这个概念,实现了多服务器统一管理,统一配置,资源统一部署的目标。通过集中管理,我们可以在此基础上再进行群集的划分与部署,实现群集内多台服务器的单点配置与管理。可以说AS7的Domain概念的引入,与群集的概念组合在一起,通过一横一从两条轴,形成了完整的坐标系。
参考资料
[1] http://community.jboss.org/wiki/DomainRequirements
[2] http://community.jboss.org/wiki/DomainManagementModelDesign
[3] http://community.jboss.org/en/jbossas/as7_users?view=discussions
[4] http://community.jboss.org/en/jbossas/dev/jboss_as7_development?view=discussions
[5] https://docs.jboss.org/author/display/AS7/Admin+Guide
你好,我在添加一个virtual server时候提示了错误:
[domain@172.23.11.142:9999 /] /profile=default/subsystem=web/virtual-server=other.com:add
{
"outcome" => "success",
"result" => undefined,
"server-groups" => undefined
可以看到,我们之前在domain.xml中配置的 "other.com" 这个 virtual host被成功添加了
关于这句话,我没发现之前的domain.xml上有配置过other.com啊。
刚接触的新手,还希望路过的朋友帮个忙解答下,谢谢!
这篇是原创
域(Domain)的概念及其与群集(Cluster)的区别
对于使用过JBoss AS过往版本的用户,可能对AS所提供的群集功能已经很熟悉了,在理解域的时候可能会遇到困难。那么域和群集有什么区别,用处上有什么不同呢?
总的来讲,JBoss的群集的目的是提供:
* 负载平衡(Load Balance)
* 高可用(High Availablity)
而域的目的则是将多台服务器组成一个服务器组(Server Group),并为一个服务器组内的多台主机(Host)提供:
* 单点集中配置(通过一个域控制器,即Domain Controller,实现组内主机的统一配置)
* 单点统一部署,通过域控制器将项目一次部署至组内全部主机。
简单来讲,群集的目标是让多台服务器分摊压力,当一台或多台服务器当机时,服务可以继续保持运转;而域的目标则是提供集中配置和管理多台服务器的能力。
在没有域的概念时,要想让群集内的多台服务器或几组服务器保持统一的配置,一个一个分别的去手工维护,是非常麻烦的事情,而域的引入解决了这一问题。
我们可以理解域和群集的相互关系是"正交(orthogonal)"的:通过一横一竖这两条轴,JBoss AS为我们在运维方面提供了强大的可扩展能力。
实验
熟悉了AS7中Domain的设计理念,接下来动手实际做个实验,看看Domain是如何在AS7中工作的。
*准备工作*
使用两台电脑做为实验器材,两台电脑的IP分别为10.0.1.3及10.0.1.18,分别运行JBoss AS7,并组成一个服务器组(Server Group)。其中,使用10.0.1.3这台机器做为域控制器(Domain Controller):
如上图所示,两台主机分别被命名为”master“及”slave“。通过配置,将master与slave组成一个服务器组,名为'main-server-group',其中master将做为这个服务器组的域控制器。
需要说明一点的是,服务器组(Server Group)可以由多台服务器(Host)组成,并不一定只有两台,所以不要被master及slave这样的名字给迷惑了,以为一个服务器组仅支持一主一从两台hosts。
本文中因为只使用两台服务器做为实验器材,因此出于方便角度将它们分别命名为master及slave。
此外,在一个服务器组中,只有一台域控制器,在本实验中我们将使用master这台机器做为domain controller。
*配置*
AS7由于经过了重新设计,因此在目录结构与配置文件上面与前一版本有了很大不同,对于熟悉了对AS6的配置和的人来讲,使用AS7会接触不少新概念和新思路。为了清楚表达,我会将一些与AS6及以前版本不同的地方做出必要的说明。
首先是bin目录中的内容:
liweinan@mg:~/projs/jboss-7.0.0.CR1/bin$ ls domain.bat jboss-admin.bat standalone.conf wsconsume.sh domain.conf jboss-admin.sh standalone.conf.bat wsprovide.bat domain.conf.bat scripts standalone.sh wsprovide.sh domain.sh standalone.bat wsconsume.bat
在AS7以前版本中,用来启动JBoss服务的run.sh不见了,取而代之的是standalone.sh(独立运行模式)及domain.sh(域运行模式)。我们稍后将使用domain.sh来运行JBoss AS7,但首先要将两台hosts配置好,接下来讲解两台服务器的配置:
AS7的目录结构和前一版本有很大不同,因为配置文件及其所在位置也有很大变动,下面是AS7的目录结构:
bin docs jboss-modules.jar standalone bundles domain modules welcome-content
可以看到有一个名为"domain"的目录,看一下这个domain目录里面的内容:
configuration content lib log servers
这个目录中包含了AS7运行在domain模式下所需的配置及内容,其中名为“configuration”的目录里面含有我们所需要的配置文件:
liweinan@mba:~/projs/jboss-7.0.0.CR1/domain/configuration$ ls domain-preview.xml host.xml mgmt-users.properties domain.xml host_xml_history domain_xml_history logging.properties
其中domain.xml和host.xml是我们需要关注的内容。我们需要对master及slave上面的配置文件分别进行配置:
从上图中可以看到,master的JBoss AS中需要配置domain.xml及host.xml两个文件,其中domain.xml是做为域控制器必须配置的内容,host.xml则是master及slave各自的JBoss AS都需要配置的文件。我们先从master上面的配置看起:
*Master上面的配置*
* domain.xml
<domain xmlns="urn:jboss:domain:1.0"> <extensions>... <system-properties>... <profiles> <profile name="default">... <profile name="ha">... </profiles> <interfaces>... <socket-binding-groups>... <server-groups> <server-group name="main-server-group" profile="default">... <server-group name="other-server-group" profile="ha">... </server-groups> </domain>
这个文件里面有几个部分是值得我们关注一下的:
# extensions - 这一部分定义了域中服务器在启动时需要加载的模块。AS7使用了全新设计的JBoss Modules来加载模块,大幅提高了服务器的启动。这一内容不是本文讲解重点,后续我会专门写一篇文章来介绍。目前了解到这一程度即可。
# profiles - profiles是domain中定义的一个核心概念,也是domain的核心组成部分。基于profiles,AS7便实现了域中各服务器的统一集中配置:用户可通过profile对各子系统(subsystem)进行配置,完成后将profile配置给某个或多个服务器组,各服务器组内的主机共用一份配置。
# server groups - 服务器组的概念已经在前面的介绍中一再提及,也是AS7的域的设计中一个核心组成部分。在这里,AS7默认定义了两个服务器组:main-server-group及other-server-group,它们分别使用'default' profile及'ha' profile。在本实验中,我们将使用main-server-group。
* host.xml
<host xmlns="urn:jboss:domain:1.0" name="master"> <management> <security-realms>... <management-interfaces> <native-interface interface="management" port="9999" /> <http-interface interface="management" port="9990"/> </management-interfaces> </management> <domain-controller> <local/> </domain-controller> <interfaces> <interface name="management"> <inet-address value="10.0.1.3"/> </interface> <interface name="public"> <inet-address value="10.0.1.3"/> </interface> </interfaces> <jvms>... <servers> <server name="server-one" group="main-server-group">... </servers> </host>
上面是一些host.xml中需要配置的关键内容,已经针对要做的测试做了一些配置上面的修改,以下是详细说明:
# host name按照我们的需要改成了"master"。
# management - management定义了服务器的管理端口,其中:9999端口是所谓"native"二进制端口,后面的jboss-admin.sh管理命令会使用这个端口;9990则提供基于WEB页面的管理端。我们等一下两种管理端口都会用到。
# domain controller - 定义本服务器所需连接的domain控制器所在地址,因为master本身就是domain controller,所以连接至本机localhost即可。
# interfaces - management及public接口服务所在的地址,我们要将其设为slave可以访问到的IP地址,保证slave可以连接至host
# servers - 一个物理主机实际上可以同时运行多台JBoss AS7的Server,而每一台Server都可以配置到不同的服务器组去。在本实验中,我们使用最简的情况,master上面只跑一个server-one,属于main-server-group,把其它AS7默认设定的server可以都删掉,只留server-one。
*Slave上面的配置*
* domain.xml
Slave这台机器不作为域控制器而存在,因此不需要管它,也可以将domain.xml删掉或改名。
* host.xml
<host xmlns="urn:jboss:domain:1.0" name="slave"> <domain-controller> <remote host="10.0.1.3" port="9999"/> </domain-controller> <interfaces> <interface name="management"> <inet-address value="10.0.1.18"/> </interface> <interface name="public"> <inet-address value="10.0.1.18"/> </interface> </interfaces> <jvms>... <servers> <server name="server-one" group="main-server-group">... </servers> </host>
上面的配置有几点需要说明:
* slave里面,host name指定为"slave"。
* domain-controller:指定为master的IP:10.0.1.3,通过9999管理端口进行通讯。
* slave上面,属于main-server-group的server也命名为"server-one",这会和master上面的server冲突吗?实际上不会,因为两台同样名字的server运行在不同的host当中。
AS 7.1 的补充说明
从JBoss AS 7.1 开始,对控制端口(9999及HTTP端的9990)的安全配置成为必须。因此需要补充下述安全配置方面的步骤:
首先要在master上面创建管理员的账号,在bin目录下有add-user工具可以帮我们创建账号密码并进行配置,我们创建一个管理员账号admin,密码为123123:
master:~/projs/as7/710/bin$ ./add-user.sh Enter details of new user to add. Realm (ManagementRealm) : Username : admin Password : Re-enter Password : About to add user 'admin' for realm 'ManagementRealm' Is this correct yes/no? yes Added user 'admin' to file 'master/as7/710/standalone/configuration/mgmt-users.properties' Added user 'admin' to file 'master/as7/710/domain/configuration/mgmt-users.properties'
可以看到系统为我们分别在domain和standalone创建了mgmt-users.properties,我们是用域模式运行,因此查看domain/configuration/mgmt-users.properties这个文件的最后一行:
admin=95333971266d87fbfa7d9963dd5e89d6
可以看到相关账号密码已经被创建。此时查看host.xml:
<management> <security-realms> <security-realm name="ManagementRealm"> <authentication> <properties path="mgmt-users.properties" relative-to="jboss.domain.config.dir"/> </authentication> </security-realm> </security-realms> <management-interfaces> <native-interface security-realm="ManagementRealm">...</native-interface> <http-interface security-realm="ManagementRealm">...</http-interface> </management-interfaces> </management>
可以发现host.xml已经把安全配置应用起来了,使用ManagementRealm这个安全域进行认证。
同样地,我们需要在slave主机上进行一模一样的工作。
接下来,我们需要做一下slave对master的认证连接工作。slave要想和master建立域控关系,需要知道master的管理端账号密码。在域控这一块,AS7对认证有要求:需要在域控制器上以过来连接的主机host名为用户名添加账号。
我们在slave的host.xml文件中指定了slave的host名为slave:
<host xmlns="urn:jboss:domain:1.0" name="slave">
因此,master做为域控制器,需要在上面添加名为slave的管理员账号,密码仍为123123:
master:~/projs/as7/710/bin$ ./add-user.sh Enter details of new user to add. Realm (ManagementRealm) : Username : slave Password : Re-enter Password : About to add user 'admin' for realm 'ManagementRealm' Is this correct yes/no? yes Added user 'slave' to file 'master/as7/710/standalone/configuration/mgmt-users.properties' Added user 'slave' to file 'master/as7/710/domain/configuration/mgmt-users.properties'
这时再查看mgmt-users.properties,可以看到多了slave账号:
admin=95333971266d87fbfa7d9963dd5e89d6 slave=f469d84edde53032bdac0a42bdedd810
接下来,我们要在slave主机的的host.xml做下认证配置,使用这个账号与master进行认证通信:
<management> <security-realms> <security-realm name="ManagementRealm"> <server-identities> <secret value="MTIzMTIz="/> </server-identities> <authentication> <properties path="mgmt-users.properties" relative-to="jboss.domain.config.dir"/> </authentication> </security-realm> </security-realms> <management-interfaces> <native-interface security-realm="ManagementRealm"> <socket interface="management" port="9999"/> </native-interface> <http-interface security-realm="ManagementRealm"> <socket interface="management" port="9990"/> </http-interface> </management-interfaces> </management> <domain-controller> <remote host="10.0.2.1" port="9999" security-realm="ManagementRealm" /> <!-- Alternative remote domain controller configuration with a host and port --> <!-- <remote host="192.168.100.1" port="9999"/> --> </domain-controller>
上面的配置中有这些值得注意:
<server-identities> <secret value="MTIzMTIz="/> </server-identities>
我们在认证域ManagementRealm中配置了server-identities,这个认证域用在与域控制器master的连接方面。其中secret value是domain上对应slave主机名的那个账号的密码,用base64加密。我们在master上面配置的slave账号的密码为123123,MTIzMTIz=则是123123的base64加密后的文字。这个配置用在连接domain-controller时进行认证:
<domain-controller> <remote host="10.0.2.1" port="9999" security-realm="ManagementRealm" /> </domain-controller>
有关更多的AS7的安全配置的信息,可查看官方文档:
https://docs.jboss.org/author/display/AS7/Securing+the+Management+Interfaces
关于host.xml的详细配置方法,也可参考as7目录下自带的xsd文档:
docs/schema/jboss-as-config_1_1.xsd
*部署*
配置完成后,接下来便到了实际部署的阶段,我们将master和slave上面的AS7分别用domain.sh启动起来。
[Server:server-one] 21:17:14,491 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.0.CR1 "White Rabbit" started in 6029ms - Started 109 of 163 services (54 services are passive or on-demand) [Host Controller] 21:18:02,635 INFO [org.jboss.domain] (pool-3-thread-1) Registered remote slave host slave
启动成功的话,应该可以在master上面看到上面的日志,slave被成功的注册进来。
完成启动后,我们需要将待使用的virtual-host启动起来,当AS7以domain的方式启动时,默认是不启动任何virtual server的(在我目前使用的7.0.0 CR1 White Rabbit版本中是这样),我们可以在domain.xml中配置默认加载virtual-host,也可以在服务器运行起来后,使用管理端命令动态的加载,在这里我准备使用后一种方式,从而讲解AS7管理端的使用方法。
在AS7的bin目录下面有一个jboss-admin.sh, 这是AS7提供的全新的管理工具,我们使用这个工具,连接至master:
./jboss-admin.sh You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands. [disconnected /] connect 10.0.1.3 Connected to domain controller at 10.0.1.3:9999
可以看到,我们已经连接到了master的9999管理端口。接下来可以查看"default"这个profile当中的web模块的运行情况:
[domain@10.0.1.3:9999 /] /profile=default/subsystem=web:read-children-names(child-type=connector) { "outcome" => "success", "result" => ["http"] }
可见http服务器已经启动,由于我们的"main-server-group"使用的是default这个profile,因此,服务器组中的两台host的web模块接受profile的统一配置,都是已启动的。继续看一下web模块中的细节:
[domain@10.0.1.3:9999 /] /profile=default/subsystem=web/connector=http:read-resource(recursive=true) { "outcome" => "success", "result" => { "protocol" => "HTTP/1.1", "scheme" => "http", "socket-binding" => "http", "ssl" => undefined, "virtual-server" => undefined } }
注意到virtual-server的状态是未定义(undefined),我们要想将一个web项目部署进服务器组中的各个host,就必须加载一个待部署的virtual-server,因此我们使用命令来添加:
[domain@10.0.1.3:9999 /] /profile=default/subsystem=web/virtual-server=other.com:add { "outcome" => "success", "result" => {"server-groups" => [("main-server-group" => { "master" => { "host" => "master", "response" => {"outcome" => "success"} }, "slave" => { "host" => "slave", "response" => { "outcome" => "success", "result" => undefined } } })]} }
可以看到,我们之前在domain.xml中配置的 "other.com" 这个 virtual host被成功添加了。
接下来是部署WEB应用的环节,我们首先用maven制作一个最简单的web项目,仅包含一个欢迎页面:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
生成的项目如下:
. |-- pom.xml `-- src `-- main |-- resources `-- webapp |-- WEB-INF | `-- web.xml `-- index.jsp
使用如下命令将项目打成WAR包:
mvn package
得到war:
target `-- my-webapp.war
接下来是部署这个war包,对于本次实验来讲,关键的部分在于能否通过domain提供的server group管理功能,一次将一个项目部署进server group中的多台服务器。我们接下来就验证这点,顺便看下AS7提供的WEB管理功能,打开WEB浏览器,访问master的HTTP端口的管理地址:
http://10.0.1.3:9990/console/App.html
可以看到,管理页识别出AS7正运行在domain模式之下,并且目前共有两台主机运行(左上角的列表分别列有master及slave)。我们要关注的是server-group:点击右上角的"Server Groups",进入服务器组的管理页面,然后点击左边的"Manage Deployments"页面,进入部署功能页面:
可以看到,目前还没有任何资源被加至服务器组,此时点击右边的"Add Content"功能,将my-webpp.war添加进Content Repository(域控制器用于保存待部署资源的目录)。
添加完成后如下图所示:
然后点击"Add To Group"将my-webapp.war添加至 "main-server-group",并将其enable,一切顺利的话结果如下所示:
此时我们预期的结果应该是my-webapp.war被同时部署至master及slave了,分别试着访问master及slave的http资源,看看是否都部署上my-webapp这个应用了:
结果如我们所预期的那样,两台服务器都可以访问到这个部署的资源。通过对一个点(Domain Controller)的配置与部署,我们实现了多AS7服务器的集中管理。
*小结*
通过域这个概念,实现了多服务器统一管理,统一配置,资源统一部署的目标。通过集中管理,我们可以在此基础上再进行群集的划分与部署,实现群集内多台服务器的单点配置与管理。可以说AS7的Domain概念的引入,与群集的概念组合在一起,通过一横一从两条轴,形成了完整的坐标系。
参考资料
[1] http://community.jboss.org/wiki/DomainRequirements
[2] http://community.jboss.org/wiki/DomainManagementModelDesign
[3] http://community.jboss.org/en/jbossas/as7_users?view=discussions
[4] http://community.jboss.org/en/jbossas/dev/jboss_as7_development?view=discussions
[5] https://docs.jboss.org/author/display/AS7/Admin+Guide
评论
5 楼
ndzj981479673
2014-02-19
jboss-admin.sh在哪里啊?我的bin目录下没有啊
123123的base64加密是MTIzMTIz吧,那个MTIzMTIz=,等于号是啥?
最后我的slave没能连到master上
123123的base64加密是MTIzMTIz吧,那个MTIzMTIz=,等于号是啥?
最后我的slave没能连到master上
4 楼
yoyoyuye
2012-08-11
你好,我在添加一个virtual server时候提示了错误:
[domain@172.23.11.142:9999 /] /profile=default/subsystem=web/virtual-server=other.com:add
{
"outcome" => "success",
"result" => undefined,
"server-groups" => undefined
可以看到,我们之前在domain.xml中配置的 "other.com" 这个 virtual host被成功添加了
关于这句话,我没发现之前的domain.xml上有配置过other.com啊。
刚接触的新手,还希望路过的朋友帮个忙解答下,谢谢!
3 楼
阿男bluedash
2011-11-28
准备在iteye上都放原创
2 楼
阿男bluedash
2011-11-28
潜心修炼 写道
恩,翻译是件有意义的事情
这篇是原创
1 楼
潜心修炼
2011-11-28
恩,翻译是件有意义的事情
发表评论
-
AS7群集配置
2012-01-28 23:56 5901这篇文档已经和最新版的JBoss EAP6和WildFly有出 ... -
为JBoss AS7添加新模块
2011-12-27 13:41 2499注:文本的内容主要探讨JBoss AS7的实现细节,涉及AS7 ... -
Java Annotation介绍
2011-12-08 23:08 2877Java Annotation是Sun公司自J ... -
使用Snowdrop在JBoss中部署Spring工程
2011-12-08 21:46 2183向JBoss中集成Spring一直 ... -
JBoss AS 7 快速上手
2011-12-04 13:01 2190(注:本文撰写时7.0.0.CR1是最新版本,目前已经有7.1 ... -
JBoss Tattletale 简介
2011-12-03 15:39 2832Tattletale[1]可以帮助你分析你的项目中组件之间的依 ... -
在JBoss AS7中进行项目部署
2011-11-29 00:34 4698AS7的项目部署方式与原 ... -
JBoss Module介绍
2011-11-27 01:47 2976从JBoss AS7开始,Classloader这块开始使用全 ... -
Java中的多线程竞争与CountDownLatch的应用
2011-11-25 01:33 2404线程间的竞争叫做Racing,正如这篇文章的图片一样,不同 ... -
JBoss AS7 - 部署
2011-11-23 23:01 1673首先是启动AS7[1],然后进入管理终端: % ./j ...
相关推荐
- **5.3.3 管理资源**:介绍了如何管理和配置JBoss AS7中的资源。 - 如数据源、JMS队列和主题、安全领域等。 ##### 5.4 管理任务 - **5.4.1 接口和端口**:讲解了如何配置网络接口和端口。 - 涉及HTTP/HTTPS监听...
#### 三、JBoss AS 7中的新概念——域 - **域的概念及其与群集的区别**: - **域**是指一个由多个JBoss实例组成的逻辑单元,这些实例可以位于同一台物理机器上或分布在不同的服务器上。域允许管理员集中管理一组...
3. JBoss AS7中的新概念-域 10 3.1. 域(Domain)的概念及其与群集(Cluster)的区别 10 3.2. 实验 11 1.1.1. 准备工作 11 1.1.2. 配置 12 3.2.1.1. Master上面的配置 14 3.2.1.1.1. domain.xml 14 3.2.1.1.2. host.xml...
本文将重点介绍JBoss7.1.1的核心特性和管理员需要了解的关键概念,包括JBoss的主要版本特性、JBoss AS7的新特性、域(Domain)和群集(Cluster)的概念、JBoss7的配置方法、安全性配置、管理接口、JVM设置、命令行...
管理域模式是JBoss AS 7的一个重要创新,它引入了一个中心管理点,允许管理员通过单一接口管理多个JBoss服务器实例。这种模式非常适合需要集中管理和大规模部署的应用环境。 #### 2.2.1 域结构 管理域由Domain ...
Jboss AS的虚拟主机配置主要在`standalone.xml`或`domain.xml`(取决于你是在独立模式还是域模式下运行Jboss)中进行。你需要找到`<subsystem xmlns="urn:jboss:domain:web:1.1">`或更高版本的子系统配置,并在其中...
- **在 JBoss AS 上运行示例**:这是最直接的方式之一,可以快速验证环境配置是否正确,并且熟悉 Seam 在 JBoss AS 上的运行方式。 - **在 Tomcat 服务器上运行示例**:如果开发者已经熟悉了 Tomcat,那么这种方式...
在JBoss 7中,群集可以在域模式或独立模式下实现。 3. 配置实验 - 主机(Master)配置:包括`domain.xml`和`host.xml`两个核心配置文件。`domain.xml`定义全局配置,而`host.xml`则用于特定主机的设置。 - 从属...
- **下载与解压**:从官方网站获取最新版本的JBoss AS或WildFly(JBoss的新版本),解压缩到指定目录。 - **配置环境变量**:设置JAVA_HOME指向JDK安装路径,将JBoss的bin目录添加到PATH环境变量中。 - **启动与...
- AS 7.1.1加强了安全机制,包括用户认证、角色授权、SSL/TLS加密等,用户需要在相应的XML配置文件中定义安全域和角色。 5. **部署** - JBoss 7.1.1支持多种部署方式,如WAR、EAR包、目录结构部署,支持热部署,...
核心管理概念章节介绍了JBoss AS 7.1的操作模式(Operating modes),这些操作模式包括了域模式(Domain mode)和独立模式(Standalone mode)。这些模式决定了服务器的管理和运行方式,以及相关的配置文件格式。 ...
JBoss AS(Application Server)是一款开源的Java EE应用服务器,提供了全面的企业级服务,包括EJB容器、Web容器、JMS服务、集群与负载均衡等功能。它支持最新的Java EE标准,并且完全免费,因此在企业级开发中得到...
1. **在JBoss AS上运行示例**:首先需要安装配置JBoss AS服务器,然后导入Seam项目到服务器中进行部署。 2. **在Tomcat服务器上运行示例**:Tomcat作为轻量级的应用服务器,可以快速部署简单的Seam应用,便于学习和...
- **对话和WebSocket支持**:涵盖了WebSockets的配置和部署,包括与JBoss AS7.1.2及以上版本的集成以及遵循JSR-356标准的WebSocket支持。 - **WebSocket安全**:讲解了WebSocket通信的安全机制。 - **总线生命周期...
- 它可以集成现有的安全框架,如Spring Security或JBoss AS的安全组件。 ##### 2.5 JBoss jBPM Job执行器 - **Job执行器** 用于调度和执行异步任务,例如定时任务或外部系统调用。 - 它支持多种类型的作业,并且...
1.1.1. 在JBoss AS 上运行示例..................................................................................................................................14 1.1.2. 在Tomcat 服务器上运行示例..........