AS 7一个重要的特性是,能够从单个的控制点管理多个 AS 的实例。这样的一组Server作为一个 "domain"的成员,由Domain Controller进程统一管理。Domain可以跨越多个物理或虚拟主机,一台机器上的所有 AS 实例由 Host Controller 进程负责控制。Host Controller和 Domain Controller 进行交互来控制该机器上的 AS 进程,并且协助Domain Controller对它们进行管理。
当你将JBoss AS启动为 "domain mode"(通过domain.sh或者domain.bat),你实际上启动了一个 Domain Controller,一个 Host Controller以及通常至少一个 AS 实例。
关于如何运行'domian mode' 的更多的内容,可以访问以下的大约20分钟的在线视频(分成了两段):
http://www.youtube.com/watch?v=phV3QiKQf2E
http://www.youtube.com/watch?v=gCeQ2KIO0qc
许多用户案例中,并不需要domain mode下的集中化的管理能力,对于这些情况,AS能够运行在 "standalone mode",这种模式下,每一个 AS 实例运行在独立的进程,和AS 3,4,5 和 6一样。Standalone 的Server实例可以通过 standalone.sh 或者 standalone.bat 脚本来运行。
如果运行了不止一个 standalone 实例并且需要管理多台服务器,那么就需要用户自行来协调管理这多台服务器。
一个 server 实例不能在 domain mode 和 standalone mode之间进行转换,例如,你不能运行 domain.sh,停止domain,然后运行 standalone.sh,并且希望和运行domain mode 时有任何关联。两种 mode 的配置文件是分开的。在未来的发布中,我们也许会包含某个工具来简化将一个服务的配置文件从domain mode 转换成 standalone mode的工作。
决定使用Domain Model 还是Standalone Mode
什么用户案例适合使用Domain Model,而哪些又更适合Standalone Mode呢?Domain mode用于统一协调管理多个服务器,通过JBoss AS提供的中心控制点,能够管理多台服务器,并具有丰富的功能以维持所有服务器配置文件的一致性以及将对配置文件的修改(包括部署的应用)统一应用到所有的服务器中。
理解Domain Mode和 Standalone Mode只是与如何管理你的服务器有关这一点很重要,并不会影响响应最终用户请求的能力。这个差别会在高可用集群到来时特别重要。当前的AS 7 beta1版本并不支持 HA 功能,然而有必要理解一点HA 功能在今后的版本被添加之后,Domain Mode 和 Standalone Mode 就会有些功能的交叉。也就是说,可以从HA集群配置成一群以Standalone Mode运行的服务器。总之,Domain 和 Standalone Mode决定服务器如何被管理,而不是它们能提供的功能。
那么,我们给出结论:
-
- 如果单个Server不需要从Domain Mode中获得任何东西,那么standalone mode是更好的选择。
- 对于多Server的产品环境,选择Domain Mode还是Standalone Mode归结为用户是否想要使用Domain Mode提供的中心管理能力。一些企业已经开发他们自己的经过考验的多Server管理能力并且能够舒服的统一对多个JBoss AS 实例做修改,对于这些企业,一个有单个standalone mode AS 实例组成的多server架构仍然是一个好的选择。
- 在开发阶段,Standalone Mode 会更合适。通常,对于embedding JBoss AS没有Domain Mode;比如:运行在Arquillian-based 的测试套件过程中。在 Domain Mode中能够完成的任何单个Server的配置同样也能在Standalone Mode中配完成,所以,即使正在开发的应用最终要运行在Domain Mode下,大多数的开发工作仍能在Standalone Mode下完成。
Domain mode在一些高级开发场景下会有用;比如:对于那些需要在多个AS实例之间进行交互的操作。开发人员可能会发现将多个server设置成domain的成员是一个有效的方法来启动多server集群。
以下是仅与domain mode相关的目录内容.
configuration -- Domain、Host Controller以及跑在这个安装上的所有Servers的配置文件。如果我们已经做得足够好,这些配置文件是最终用户唯一需要修改的配置文件(除了用户自己部署的应用的描述文件)。更多关于其中的文件的内容,下面会讲到。
content -- 一个给Host Controller的内部工作空间,用于存储部署的内容。这个目录不应该被最终用户操作。
log -- 用于Process Controller和Host Controller写日志文件的目录。
servers -- 每一个AS实例用于写的空间。每一个AS实例都有自己的子目录,在第一次启动的时候会创建该目录。在一个Server的子目录下,会包含以下子目录:
data -- Server用于写需要在重启是回复的数据。
log -- Server的日志文件
temp -- Server用于写临时文件的目录
"standalone"目录下的内容
仅与使用standalone mode 相关。
configuration -- 运行Standalone Server是的配置文件。如果我们已经做得足够好,这些配置文件是最终用户唯一需要修改的配置文件(除了用户自己部署的应用的描述文件)。更多关于其中的文件的内容,下面会讲到。
data -- Server存储的信息,为了重启在重启时恢复数据。
deployments --如果希望Server在运行时能自动检查和部署,可以把要部署的文件放在该目录下。Server management API暴露了其它的方法来将部署文件,使用API是更好的部署方法。然后我们意识到,在AS 7开发的早期阶段,围绕deployment API的工具还不完善,很多用户愿意使用deployment directory来部署文件。注意:"domain mode" 不支持基于文件系统扫描来部署文件。
log --Server的日志文件
tmp -- Server存储临时文件的地方
"Domain Mode" 配置文件
位于 domain/configuration 目录.
domain.xml -- domain的主要配置文件,包括各种给AS instance 的 "profile" 配置文件。一个 profile配置包括各种子系统(subsystem)的配置(比如: embedded JBoss Web instance 是一个子系统,JBoss TS transaction manager 是一个 subsystem, 等等)。包括 子系统要打开的socket group的定义,以及"server groups"的定义,对于一个profile,会映射一组socket定义以及0到多个deployment。每一个单独的Server会被映射(在 host.xml中,下面会讲到)到一个server group;Sever group的配置最大可能的定义了单个server的配置。
一个 domain.xml 文件必须位于安装目录的 domain/configuration 下,如果不运行 domain controller,不需要有这个文件;比如:仅仅配置了了 Host Controller用于连接 remote Domain Controller时,此时 domain.xml 会被忽略。
用户可以看一下 AS 7 configuration schema, 从 <domain> 元素开始,来学习更多关于 Domain Contoller的内容。
host.xml -- Host Controller的配置文件。每一个安装必须有host.xml文件,包含了 Host Controller的配置信息,主要有:
- 运行的AS Server instance的名称列表,以及他们所属的server group。
- 配置Host Controller怎么联系 Domain Controller以便注册自己并访问domain配置。既可能配置为如果查找和联系一个remote Domain Controller,也可能配置为告诉Host Controller自己作为 Domain Controller.
- 本地安装的一些特别的配置项。比如,domain.xml中定义named interface能够在host.xm中l映射到一个实际的特定机器的IP地址
用户可以看一下 AS 7 configuration schema, 从 <host> 元素开始,来学习更多关于 Host Contoller的内容。
logging.properties -- 包含Host Controller和 Process Controller的日志配置。也定义每个AS instance初始启动的日志配置配置。一旦Server启动到这个配置生效,启动日志配置会被domain.xml中日志配置所覆盖。
"Standalone Mode" 配置文件
位于 standalone/configuration 目录.
standalone.xml -- AS instance的主要配置文件。除此之外,包含了AS instance 运行的"profile"的配置。一个 profile配置包括各种子系统(subsystem)的配置(比如: embedded JBoss Web instance 是一个子系统,JBoss TS transaction manager 是一个 subsystem, 等等)。也包括subsystem可能打开的socket的定义。
用户可以看一下 AS 7 configuration schema, 从 <server> 元素开始,来学习更多关于 standalone AS instance的内容。
logging.properties -- 包含了启动时初始化的日志配置信息。在Server启动过程进行到standalone.xml中的日志配置信息可用时,启动日志配置会被standalone.xml文件中的日志配置覆盖。