我试图设置 JBoss AS7 中新增的域控制器功能。当服务器和主机控制器从 JBoss 的同一个文件夹运行时,域控制器在运行 domain.bat 时启动。但是如果我有一些服务器需要在其他物理机上运行,那么域控制器将如何当域控制器启动时启动这些服务器。由于 host.xml 知道控制器的地址,但域不知道不同机器中的不同主机控制器。是不是意味着不同机器中的主机控制器需要在域控制器之前启动?如果是怎么办?
1 回答
该过程是一个有趣的过程,JBoss 社区通过以下链接很好地记录了该过程。
https://docs.jboss.org/author/display/AS7/Admin+Guide#AdminGuide-ManagedDomain
https://docs.jboss.org/author/display/AS7/Domain+Setup
总之,当您启动域脚本时,主机控制器将变为活动状态。这个控制器的作用是简单地管理归属于它的服务器实例。其中一台主机将被配置为充当域控制器,这由host.xml
文件中的一个简单元素指示。
<domain-controller>
<local/>
</domain-controller>
在同一个文件下是作为域控制器的主机需要配置的两个部分,正如您可以想象的那样,它们是其他主机与之通信的接口和端口。
<management-interfaces>
<native-interface interface="management" port="9999" />
<http-interface interface="management" port="9990" />
</management-interfaces>
<interfaces>
<interface name="management">
<inet-address value="192.168.0.12"/>
</interface>
</interfaces>
这已经设置了域控制器,因此将本机接口(它需要通信)和 http 接口(包括管理控制台)的端口声明解析为相关接口“管理”。接口声明又将其解析为 IP 地址192.168.0.12
。域控制器的工作将是管理其他主机控制器。但他们需要知道如何解决自己。
为此,我们需要做一些事情。我们需要一个主机控制器的名称来调用自己以区别于其他控制器,并且我们需要向域控制器公开一个接口,以及知道域控制器向自己公开的接口。这些仍然在host.xml
每个安装的相应文件中完成(如果您精通的话,您可以在 CLI 中编写脚本)。
这是唯一的名称:
<host xmlns="urn:jboss:domain:1.0"
name="staging">
[...]
</host>
这是从属主机将端口声明为相对名称,以及该相对名称解析为:
<management-interfaces>
<native-interface interface="management" port="9999" />
</management-interfaces>
<interfaces>
<interface name="management">
<inet-address value="192.168.0.101"/>
</interface>
</interfaces>
这就是我们告诉主机控制器在哪里找到域控制器的地方。这样它就可以自己注册,这应该可以回答您关于域控制器如何“知道”哪些主机可用的问题。
<domain-controller>
<remote host="192.168.0.12" port="9999"/>
所以总而言之......主机的每个实例都有一个唯一的名称,知道在哪里敲击肩膀上的头部,以及向它公开什么接口。作为回报,head honcho 公开了一个管理接口本身,它在其中侦听要推送的实例(包括它们的名称、它们的接口和服务器组)。