JBOSS EAP 6 系列五 Managed domains 管理域最主要的功能是“统一部署,统一配置”

摘要

    本文首先介绍Managed Domain的概念,管理域最主要的功能是“统一部署,统一配置”。接下来通过一个实例在“统一配置”部分实现一个双机配置起来的域,最后在“统一部署”部分,我们将一个war包部署到域组的所有成员当中并测试部署效果。



一、 Managed domains的概念

    管理域组织各物理机上的虚拟服务为服务组,使得所有服务器在一个地方统一配置、统一部署。配置为同一服务组内的机器可以自动扩展,也可以在一台主机上根据不同的端口绑定来设置多个实例。Managed Domain要区别与Cluster,Cluster的主要功能是负载均衡、容灾,而Managed domain的目的主要在于统一管理



二、Managed domains的统一配置


2.1 实验原理

    此配置的主要内容是6台虚拟机,分别在两台物理主机上。两台主机分别取名为Master(192.168.0.115)和Server2(192.168.0.116)。由Master来负责整个Domain的统一配置和统一部署。


2.2 创建用户

    首先需要在master中创建两个用户:用户1:admin用于进入web console进行统一配置和部署。用户2:server2用于使server2能接入master获取master中的配置信息。

2.2.1 创建domain管理用户admin

    在$JBOSS_HOME/bin下有一个add-user命令用于创建用户:



2.2.2 创建lishehe接入master的用户lishehe


2.3 配置接入权限给lishehe

进入主机lishehe,编辑$JBOSS_HOME/domain/configuration/host.xml,添加粗体部分,


<span style="font-size:18px;"><?xml version='1.0' encoding='UTF-8'?>  
<host <strong>name="server2"</strong> xmlns="urn:jboss:domain:1.5">  
    <management>  
        <security-realms>  
            <security-realm name="ManagementRealm">  
               <strong><server-identities>  
                   <secret value="IWxpc2hlaGUxMjM0NTY="/>  
             </server-identities></strong> </span>


2.4 指明domain控制器

    server2的host.xml的<management>标签后加入<domain-controller>标签,如下,

<span style="font-size:18px;"><domain-controller>  
   <!-- Alternative remote domain controller configuration with a host and port -->  
   <remote host="<strong>192.168.*.*</strong>" port="<strong>9999</strong>" security-realm="<strong>ManagementRealm</strong>"/>  
</domain-controller> </span>
remote标签中的host属性指明master的IP,9999端口是默认的native-interface指向的端口,security-realm指明上一节2.3中的名称ManagementRealm。


2.5 设置对外访问IP

配置Master的host.xml,找到interfaces标签,将其中的127.0.0.1修改为本机IP(192.168.0.115),使得外界能够访问到jboss在本机上的服务。

<span style="font-size:18px;"><interfaces>  
    <interface name="management">  
        <inet-address value="${jboss.bind.address.management:192.168.0.115}"/>  
    </interface>  
    <interface name="public">  
       <inet-address value="${jboss.bind.address:192.168.0.115}"/>  
    </interface>  
    <interface name="unsecure">  
        <!-- Used for IIOP sockets in the standard configuration.  
             To secure JacORB you need to setup SSL -->  
        <inet-address value="${jboss.bind.address.unsecure:192.168.0.115}"/>  
    </interface>  
</interfaces></span>


配置Server2的host.xml,找到interfaces标签,将其中的127.0.0.1修改为本机IP(192.168.0.116),使得外界能够访问到jboss在本机上的服务。

<span style="font-size:18px;"><interfaces>  
    <interface name="management">  
        <inet-address value="${jboss.bind.address.management:192.168.0.116}"/>  
    </interface>  
    <interface name="public">  
       <inet-address value="${jboss.bind.address:192.168.0.116}"/>  
    </interface>  
    <interface name="unsecure">  
        <!-- Used for IIOP sockets in the standard configuration.  
             To secure JacORB you need to setup SSL -->  
        <inet-address value="${jboss.bind.address.unsecure:192.168.0.116}"/>  
    </interface>  
</interfaces></span>

2.6 设置管理组

配置Master的host.xml,找到servers标签,做如下修改。


<span style="font-size:18px;"><servers>  
    <!-- server name="server-one" group="main-server-group" -->  
    <server name="server-one" group="other-server-group">  
        <!-- Remote JPDA debugging for a specific server  
        <jvm name="default">  
          <jvm-options>  
            <option value="-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"/>  
          </jvm-options>  
       </jvm>  
       -->  
    </server>  
    <server name="server-two" group="other-server-group" auto-start="true">  
        <!-- server-two avoids port conflicts by incrementing the ports in  
             the default socket-group declared in the server-group -->  
        <socket-bindings port-offset="150"/>  
    </server>  
    <server name="server-three" group="other-server-group" auto-start="true">  
        <!-- server-three avoids port conflicts by incrementing the ports in  
             the default socket-group declared in the server-group -->  
        <socket-bindings port-offset="250"/>  
    </server>  
</servers> </span>

可以看到其中有三个<server>标签,每一个都对应一台虚拟机,每个<server>标签中又都有一个group用来设置管理组。名字相同的虚拟机由域中的一个管理组统一管理,统一部署。如上,我们设置server-one为一个管理组main-server-group,server-two和server-three属于同一个管理组other-server-group。


配置server2的domain.xml,找到servers标签,做如下修改。

<span style="font-size:18px;"><span style="font-size:12px;">    <servers>  
        <server name="server-four" group="main-server-group">  
            <!-- Remote JPDA debugging for a specific server  
            <jvm name="default">  
              <jvm-options>  
                <option value="-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"/>  
              </jvm-options>  
           </jvm>  
           -->  
        </server>  
        <server name="server-five" group="main-server-group" auto-start="true">  
            <!-- server-two avoids port conflicts by incrementing the ports in  
                 the default socket-group declared in the server-group -->  
            <socket-bindings port-offset="150"/>  
        </server>  
        <server name="server-six" group="other-server-group" auto-start="true">  
            <!-- server-three avoids port conflicts by incrementing the ports in  
                 the default socket-group declared in the server-group -->  
            <socket-bindings port-offset="250"/>  
        </server>  
    </servers></span> </span>

从配置中可以看出,server2中也配置了3台虚拟机,server-four、server-five与master的server-one同属于main-server-group管理组。而server-six和server-two、server-three同属于一个管理组other-server-group。


*注:socket-bindings port-offset指明的是端口偏移量,如<socket-bindings port-offset="150"/>则该虚拟机上的所有端口在统一偏移150,如8080为默认的http访问端口,则偏移过后访问端口为:8080+150 = 8230,后面3.4测试的时候我们会看到。


2.7 启动

    跟名或者删除server2中$JBOSS_HOME/domain/configuration中的domain.xml文件

分别在master和server2的$JBOSS_HOME/bin中使用domain.sh启动jboss:

启动后能从master的console中看到如下日志表明成功启动各个虚拟机,

同时如果server2启动好之后,master的log中会出现一条记录如下:

<span style="font-size:18px;">[Host Controller] 04:29:46,373 INFO  [org.jboss.as.domain] (slave-request-threads - 1) JBAS010918: Registered remote slave host "server2", JBoss EAP 6.2.0.GA (AS 7.3.0.Final-redhat-14) </span>

2.8 统一配置

    有了如上的2.1到2.7的步骤,一个包含两台物理机,6台虚拟机的Managed Domain就配置好了。这一小节主要介绍统一配置。整个域统一配置的地方在master的$JBOSS_HOME/domain/configuration/domain.xml文件中。

  我们倒着往上看domain.xml这个文件:

    <server-groups>用于配置管理组各组对应的主要配置profile。

<span style="font-size:18px;">    <server-groups>  
        <server-group name="main-server-group" profile="full">  
            <jvm name="default">  
                <heap size="1303m" max-size="1303m"/>  
                <permgen max-size="256m"/>  
            </jvm>  
            <socket-binding-group ref="full-sockets"/>  
        </server-group>  
        <server-group name="other-server-group" profile="full-ha">  
            <jvm name="default">  
                <heap size="64m" max-size="512m"/>  
                <permgen max-size="124m"/>  
            </jvm>  
            <socket-binding-group ref="full-ha-sockets"/>  
        </server-group>  
    </server-groups>  </span>

如上main-server-gourp配置的profile为full,other-server-group配置的profile为full-ha。<server-group>中有两个配置项,<jvm>为每组指明其中的虚拟机的jvm配置信息。<socket-binding-group>指明各组的默认访问端口main-server-group使用full-sockets,other-server-group使用full-ha-sockets。

再往上是</socket-binding-groups>,其中可以有多个<socket-binding-group>标签,指明访问端口。

<span style="font-size:18px;">    <socket-binding-group name="full-ha-sockets" default-interface="public">  
        <socket-binding name="ajp" port="8009"/>  
        <socket-binding name="http" port="8080"/>  
        <socket-binding name="https" port="8443"/>  
        <socket-binding name="jacorb" interface="unsecure" port="3528"/>  
        <socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>  
        <socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:192.168.0.110}" multicast-port="10001"/>  
        <socket-binding name="jgroups-tcp" port="7600"/>  
        <socket-binding name="jgroups-tcp-fd" port="57600"/>  
        <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>  
        <socket-binding name="jgroups-udp-fd" port="54200"/>  
        <socket-binding name="messaging" port="5445"/>  
        <socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>  
        <socket-binding name="messaging-throughput" port="5455"/>  
        <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>  
        <socket-binding name="remoting" port="4447"/>  
        <socket-binding name="txn-recovery-environment" port="4712"/>  
        <socket-binding name="txn-status-manager" port="4713"/>  
        <outbound-socket-binding name="mail-smtp">  
            <remote-destination host="localhost" port="25"/>  
        </outbound-socket-binding>  
    </socket-binding-group>  </span>

 其中default-interface用于指明虚拟机IP,这在2.5中有设置。


    再往上是<interfaces>这个在host.xml中各自单独设置。


    再往上是<profiles>标签,用于具体组件的申明和配置。配制方法与单机的standalone.xml一样,在此就不过多赘述。到此为止整个域就基本配置好了。进入下一博客查看统一部署部分,介绍查看Managed Domain以及统一部署实验。


posted on 2015-01-28 08:15  哼哼唧唧  阅读(165)  评论(0编辑  收藏  举报

导航