zoukankan      html  css  js  c++  java
  • IceGrid应用 配置手册

    1.  概述

    1.1 配置目标

    本文档是描述Ice中间件中的IceGrid服务的应用配置,通过使用IceGrid服务来实现:

    1.  服务器端服务分布式部署。

    2.  服务器端服务按需激活。

    3.  服务器端服务多节点负载均衡。

    4.  注册服务主/从热备(Master/Slaves)

    5.  集成IceBox服务

    1.2 实验环境

    1.  硬件:hp服务器,3台

    2.  操作环境:Red Hat 5

    3.  服务器程序:ServerApp.jar

    4.  说明:实际应用中,服务器节点可任意扩充、操作系统可被更换、服务器程序可用实际项目的服务程序替换,本文档所描述的配置方式具有通用性,适用但不局限于当前实验环境。

    1.3 局限

    本文档不详细描述IceGrid服务的运行机制和实现原理,不详细介绍服务器端和客户端程序的实现,主要描述IceGrid服务应用的配置步骤、主要配置项及验证配置结果等。

    2.  配置过程

    2.1  服务器端配置

    配置步骤:

    1.  创建主注册服务(Master)的配置文件config_master.grid,文件名称可以任意

    2.  创建从注册服务(Slave)的配置文件 config_slave.grid, 文件名称可以任意

    3.  创建各节点服务的配置文件config.node,文件名称可以任意

    4.  创建分布式应用配置文件app.xml,文件名称可以任意,但格式最好定义成xml

    5.  运行Ice提供的工具,启动我们的分布式应用,主要有如下两个工具:icegridnode和icegridadmin。详细启动过程如下:

    1) icegridnode--Ice.Config=config_master.grid  启动主注册服务

    2) icegridnode--Ice.Config=config_slave.grid  启动从注册服务

    3) icegridadmin--Ice.Config= config_master.grid -e "application add app.xml"   部署分布式服务

    icegridadmin --Ice.Config= config_master.grid-e "application update app.xml"  重新部署分布式服务

    4) icegridnode--Ice.Config=config.node  将各节点注册到注册服务的注册表中

    配置文件清单:

    假设有n个节点(n > 0), 其中从注册服务有x个,(x > 0)

       config_master.grid   ---------- 主注册服务配置文件 ---------  1份

       config_slave.grid   ----------- 从注册服务配置文件 ---------  x份

       config.node  ----------------- 节点配置文件  --------------  n份

       app.xml ---------------------- 部署配置文件  --------------  1份

    通常情况下,由于注册服务占用资源很少,所以一般都会和一个节点集成在一起,并且可以和节点服务在一个进程中运行。因此,如果假设服务部署到n个服务器,通常情况下配置文件清单如下:

    config_master.grid-- 主注册服务配置文件 -- 1份  -- 主注册服务信息+节点信息

    config_slave.grid--- 从注册服务配置文件 -- x份  -- 从注册服务信息+节点信息

    config.node--------- 节点配置文件 ---- n-1-x份  -- 节点信息

    app.xml------------- 部署配置文件 -------- 1份  -- 部署信息

    其中app.xml要和config_master.grid放在一台服务器上,下面的各章节将详细介绍各配置文件。

    2.1.1  主注册服务配置

    config_master.grid的内容:

    #

    # The IceGrid InstanceName

    #

    IceGrid.InstanceName=IceGridRDDataSource    # 1

    #

    # The IceGridlocator proxy.

    #

    Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.5.201 -p 12000:default -h 10.0.5.202-p 12000         #2

    #

    # IceGridregistry configuration.

    #

    IceGrid.Registry.Client.Endpoints=default-p 12000   #3

    IceGrid.Registry.Server.Endpoints=default    #4

    IceGrid.Registry.Internal.Endpoints=default   #5

    IceGrid.Registry.Data=master      #6

    IceGrid.Registry.PermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier     #7

    IceGrid.Registry.AdminPermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier#8

    IceGrid.Registry.SSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier#9

    IceGrid.Registry.AdminSSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier    #10

    #

    # IceGrid SQLconfiguration if using SQL database.

    #

    #Ice.Plugin.DB=IceGridSqlDB:createSqlDB     #11

    #IceGrid.SQL.DatabaseType=QSQLITE      #12

    #IceGrid.SQL.DatabaseName=register/Registry.db       #13

    #

    #

    #Ice Error andStandard output Set

    #

    #Ice.StdErr=master/stderr.txt                  #14

    #Ice.StdOut= master/stdout.txt    #15

    #

    #Trace Registryproperties

    #

    Ice.ProgramName=Master     #16

    IceGrid.Registry.Trace.Node=3        #17

    IceGrid.Registry.Trace.Replica=3    #18

    #

    # IceGrid nodeconfiguration.

    #

    IceGrid.Node.Name=node_1                              #19      

    IceGrid.Node.Endpoints=default                         #20

    IceGrid.Node.Data=node_1               #21

    IceGrid.Node.CollocateRegistry=1                      #22

    #IceGrid.Node.Output=node_1            #23

    #IceGrid.Node.RedirectErrToOut=1         #24

    # Traceproperties.

    #

    IceGrid.Node.Trace.Activator=1             #25

    #IceGrid.Node.Trace.Adapter=2             #26

    #IceGrid.Node.Trace.Server=3              #27

    #

    # Dummy usernameand password for icegridadmin.

    #

    IceGridAdmin.Username=mygrid           #28

    IceGridAdmin.Password=mygrid            #29

    配置项说明:

       #1 为这个应用实例指定一个唯一的标识

       # 2  注册服务的端点信息(主注册服务和所有的从注册服务),节点注册时要用到

       # 3  客户端访问注册服务器的端点信息

       # 4  服务访问注册服务器的端点信息,通常是default

       # 5  内部访问端点信息,通常是default,节点用这个端口和注册服务通信

       # 6  注册服务的数据目录的路径

       # 7  设定防火墙安全代理,从而控制客户端访问注册表时可用的权限

       # 8  设定防火墙安全代理,从而控制注册表管理者可用的权限

       # 9  设定SSL安全代理,从而设定客户端访问注册表时的SSL安全访问机制

       # 10  设定SSL安全代理,从而设定注册表管理者的SSL安全访问机制

       # 11  指定Ice对象序列化的机制,如果不设置,默认用Freeze机制

       # 12  指定使用数据库的类型

       #13  指定使用数据库的名称

       #14  指定标准错误输出文件

       #15  指定标准输出文件

       #16  指定主注册服务的名称

       #17  指定主注册服务跟踪节点信息的级别(0~3),默认为0

       #18  指定主/从热备注册服务的跟踪级别(0~3),默认为0

       # 19  定义节点的名称,必须唯一

       # 20 节点被访问的端口信息,注册服务使用这个端点和节点通信,通常设为default

       # 21  节点的数据目录的路径

       # 22  定义节点是否和注册服务并置在一起,设为1时并置,设为0时不并置

       # 23  节点标准输出信息重定向蹈的目录路径,会自动生成输出文件

       # 24  节点上的服务程序的标准错误重定向到标准输出

       # 25  激活器跟踪级别,通常有0,1,2,3级,默认是0

       # 26  对象适配器跟踪级别,通常有0,1,2,3级,默认是0

       # 27  服务跟踪级别,通常有0,1,2,3级,默认是0

       # 28  IceGrid管理器登录该应用的用户名

       # 29  IceGrid管理器登录该应用的密码

       未涉及的属性还有一些,如果需要请参考官方文档。

    2.1.2  从注册服务配置

    config_slave.grid的内容:

    #

    # The IceGridlocator proxy.

    #

    Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000         #1

    #

    # IceGridregistry configuration.

    #

    IceGrid.Registry.Client.Endpoints=default-p 12000   #2

    IceGrid.Registry.Server.Endpoints=default    #3

    IceGrid.Registry.Internal.Endpoints=default   #4

    IceGrid.Registry.Data=slave_1        #5

    IceGrid.Registry.ReplicaName=slave_1   #6

    IceGrid.Registry.PermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier     #7

    IceGrid.Registry.AdminPermissionsVerifier=IceGridRDDataSource/NullPermissionsVerifier#8

    IceGrid.Registry.SSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier#9

    IceGrid.Registry.AdminSSLPermissionsVerifier=IceGridRDDataSource/NullSSLPermissionsVerifier    #10

    #

    # IceGrid SQLconfiguration if using SQL database.

    #

    #Ice.Plugin.DB=IceGridSqlDB:createSqlDB     #11

    #IceGrid.SQL.DatabaseType=QSQLITE      #12

    #IceGrid.SQL.DatabaseName=register/Registry.db       #13

    #

    #

    #Ice Error andStandard output Set

    #

    #Ice.StdErr=slave_1/stderr.txt                 #14

    #Ice.StdOut=slave_1/stdout.txt     #15

    #

    #Trace Registryproperties

    #

    Ice.ProgramName=Slave_1     #16

    IceGrid.Registry.Trace.Node=3        #17

    IceGrid.Registry.Trace.Replica=3    #18

    #

    # IceGrid nodeconfiguration.

    #

    IceGrid.Node.Name=node_2                              #19      

    IceGrid.Node.Endpoints=default                         #20

    IceGrid.Node.Data=node_2               #21

    IceGrid.Node.CollocateRegistry=1                      #22

    #IceGrid.Node.Output=node_2            #23

    #IceGrid.Node.RedirectErrToOut=1         #24

    # Traceproperties.

    #

    IceGrid.Node.Trace.Activator=1             #25

    #IceGrid.Node.Trace.Adapter=2             #26

    #IceGrid.Node.Trace.Server=3              #27

    #

    # Dummy usernameand password for icegridadmin.

    #

    IceGridAdmin.Username=mygrid           #28

    IceGridAdmin.Password=mygrid            #29

    配置项说明:

    其实这个文件和主注册配置文件基本一样,差别只有一点:

    1.       没有指定应用实例名,因为在主注册服务中已经有了定义

    2.       多了第6行,IceGrid.Registry.ReplicaName=slave_1,指定从注册服务的名称

    其它的基本就没有差别了,大部分属性项在config_master.grid里面都有定义,为了方便阅读,下面也将用到的各项给出说明:

       # 1  注册服务的端点信息(主注册服务和所有的从注册服务),节点注册时要用到

       # 2  客户端访问注册服务器的端点信息

       # 3  服务访问注册服务器的端点信息,通常是default

       #4  内部访问端点信息,通常是default,节点用这个端口和注册服务通信

       # 5  注册服务的数据目录的路径

       # 6  指定从注册服务的名称

       # 7  设定防火墙安全代理,从而控制客户端访问注册表时可用的权限

       #8  设定防火墙安全代理,从而控制注册表管理者可用的权限

       # 9  设定SSL安全代理,从而设定客户端访问注册表时的SSL安全访问机制

       #10  设定SSL安全代理,从而设定注册表管理者的SSL安全访问机制

       # 11  指定Ice对象序列化的机制,如果不设置,默认用Freeze机制

       # 12  指定使用数据库的类型

       #13  指定使用数据库的名称

       #14  指定标准错误输出文件

       #15  指定标准输出文件

       #16  指定从注册服务运行时程序名称

       #17  指定从注册服务跟踪节点信息的级别(0~3),默认为0

       #18  指定主/从热备注册服务的跟踪级别(0~3),默认为0

       # 19  定义节点的名称,必须唯一

       # 20  节点被访问的端口信息,注册服务使用这个端点和节点通信,通常设为default

       # 21  节点的数据目录的路径

       # 22  定义节点是否和注册服务并置在一起,设为1时并置,设为0时不并置

       # 23  节点标准输出信息重定向蹈的目录路径,会自动生成输出文件

       # 24  节点上的服务程序的标准错误重定向到标准输出

       # 25  激活器跟踪级别,通常有0,1,2,3级,默认是0

       # 26  对象适配器跟踪级别,通常有0,1,2,3级,默认是0

       # 27  服务跟踪级别,通常有0,1,2,3级,默认是0

       # 28  IceGrid管理器登录该应用的用户名

       # 29  IceGrid管理器登录该应用的密码

    2.1.3  应用部署配置

    app.xml配置文件内容:

    1<icegrid>

    2  <application name="RTDSSystem">

    3    <server-template id="RTDSSystemServer">

    4      <parameter name="index"/>

    5      <server id="RTDSSystemServer-${index}"exe="java"                                          activation="on-demand">

    6        <adapter name="RTDataSysytem" endpoints="tcp"                                          replica-group="ReplicatedRTDataSysytemAdp"/>

    7        <option>-jar</option>

    8        <option>ServerApp.jar</option>

    9      </server>

    10    </server-template>

    11

    12    <replica-group id="ReplicatedRTDataSysytemAdp">

    13      <load-balancing type="round-robin"/>

    14      <object identity="RTDataSource"                                                      type="::RTDataSystem::RTDataSource"/>

    15    </replica-group>

    16

    17    <node name="node_1">

    18      <server-instance template="RTDSSystemServer" index="1"/>

    19      <server-instance template="RTDSSystemServer" index="11"/>

    20      <server-instance template="RTDSSystemServer" index="111"/>

    21    </node>

    22    <node name="node_2">

    23      <server-instance template="RTDSSystemServer" index="2"/>

    24      <!--server-instancetemplate="RTDSSystemServer" index="22"/-->

    25      <!--server-instancetemplate="RTDSSystemServer" index="222"/-->

    26    </node>

    27    <node name="node_3">

    28      <server-instance template="RTDSSystemServer" index="3"/>

    29      <!--server-instancetemplate="RTDSSystemServer" index="33"/-->

    30      <!--server-instancetemplate="RTDSSystemServer" index="333"/-->

    31    </node>

    32  </application>

    33</icegrid>

     

    配置文件结构分析:

    IceGrid里,部署是一个在注册服务中表述一个应用(Application)的过程,而部署配置文件就是来描述这些配置信息的文件,这个配置文件是用xml标记性语言来描述的。通常一个部署应该包含如下信息:

    1.  应用标签(application),name属性定义这个应用的名字

    2.  服务(server), 一个逻辑上的服务器,能够通过exe命令而启动的一个服务程序。activation属性,是设置服务的启动方式,on-demand是最常用的方式,另外还有always等启动方式;option标签是exe执行命令命令行的参数;

    3.  适配器(adpter),定义服务器端的适配器。

    name属性唯一标志这个适配器;

    endpoints属性指定端点信息;

    replica-group属性标示该适配器是个可复制组集群,并指定这个可复制组的名称;

    register-process属性定义了是否这个节点是否可以被icegrid关闭;

    4.  节点(node),它应该代表了一个物理上的节点。

    name属性指定节点的名字,并且是唯一的。

    5.  可复制组(replica-group),一组对象适配器的集合。

    id属性唯一标识一个可复制组;

    load-balancing子项中type属性指定负载均衡策略,icegrid提供了四种负载均衡策略: Random (随机方式)

           Adaptive(适配方式)

           Round Robin(最近最少使用)

           Ordered(顺序方式)

    object子项定义适配器绑定的服务对象信息。其中identity属性指定对象的标识,type属性指定了对象的层次结构类型。这两个属性都可以唯一的标识一个服务对象。

    6.  服务模板(server-temple),服务模板是对服务的一个抽象,避免了重复定义。这样,在节点中描述服务时只需要实例化它的服务模板就可以了。

    id属性唯一标识一个服务模板;

    parameter子项定义服务模板的参数,可包含多个,主要实例化服务时用;

    server子项就是上面2中的服务定义;

    另外还有一些特殊的服务模板,比如:icebox服务模板,它的定义和通用的服务模板的定义不太一样。

     

    解析app.xml文件:

    通过对配置文件结构的分析,来解析一下app.xml。

    第1行,标识这是一个icegrid的配置文件;

    第2行,标识应用的名称为RTDSSystem,这个名称是唯一的;

    第3~10行,定义了一个服务模板RTDSSystemServer,并有一个参数index;

              其中5~9定义了这个模板包含的服务定义,第6行是这个服务包含的对象适配器

              的定义;

    第12~15行,是对可复制组的定义,包括服务对象的定义和负载均衡策略;

    第17~21行,是对节点node_1的定义,指定了节点的名称,包含的服务(3个服务);

    第22~26行,是对节点node_2的定义

    第27~31行,是对节点node_3的定义

    最后两行是闭合标签,至此一个icegrid的分布式部署配置文件就完成了。

     

    部署配置文件的扩展:

    app.xml中对服务模板、适配器、服务对象等的配置都是一个,事实上这些可以在文件中定义多个,比如可以有多个服务模板,一个服务里可以有多个适配器,可以有多个可复制组,一个节点里可以有多个不同类型的服务等。

    另外,app.xml可以包含其它的xml。

    2.1.4  节点配置

    config.grid文件的内容:

    #

    # The IceGridlocator proxy.

    #

    Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000         #1

    #

    # IceGrid nodeconfiguration.

    #

    IceGrid.Node.Name=node_2                  #2

    IceGrid.Node.Endpoints=default              #3

    IceGrid.Node.Data=node_2                       #4

    IceGrid.Node.Output=node_2             #5

    IceGrid.Node.RedirectErrToOut=1           #6

    # Trace properties.

    #

    IceGrid.Node.Trace.Activator=1             #7

    #IceGrid.Node.Trace.Adapter=2             #8

    #IceGrid.Node.Trace.Server=3              #9

    配置项说明:

    事实上,这个文件里面的配置项,在config_slave.grid中都有描述,但这里也列出来,方便阅读。

    #1   注册服务的端点信息(主注册服务和所有的从注册服务),节点注册时要用到

    #2   定义节点的名称,必须唯一

    #3   节点被访问的端口信息,注册服务使用这个端点和节点通信,通常设为default

    #4   节点的数据目录的路径

    #5   节点标准输出信息重定向的目录路径,会自动生成输出文件

    #6 节点上的服务程序的标准错误重定向到标准输出

    #7   激活器跟踪级别,通常有0,1,2,3级,默认是0

    #8   对象适配器跟踪级别,通常有0,1,2,3级,默认是0

    #9   服务跟踪级别,通常有0,1,2,3级,默认是0

    2.2     客户端配置

    客户端的配置很简单,和分布式相关的配置就一项,添加如下:

    #

    # The IceGridlocator proxy.

    #

    Ice.Default.Locator=IceGridRDDataSource/Locator:default-h 10.0.2.241 -p 12000:default -h 10.0.2.242-p 12000 #注册服务的端点信息(主注册服务和所有的从注册服务),用于定位

    3. 结果验证

    3.1  程序方式

    1. 启动服务器

    1) icegridnode--Ice.Config=config_master.grid  启动主注册服务和节点1

    2) icegridnode--Ice.Config=config_slave.grid   启动从注册服务和节点2

    3) icegridadmin--Ice.Config=config_master.grid -e "application add app.xml"   部署分布式服务

    4) icegridnode--Ice.Config=config.node 启动节点3

    2. 启动客户端,进行多次远程调用,根据执行情况就可以判断服务器端是否配置成功。

    3.2  工具方式

    用Ice官方提供的可视化管理工具IceGridGUI.jar来验证和管理icegrid的部署。

    打开dos窗口,在命令行下进入C:Program FileseroCIce-3.4.1in目录下,然后运行“java –jar IceGridGUI.jar”,弹出IceGrid Admin的主界面


    1. 高级应用配置

    4.1  集成IceBox

    在文档《IceBox开发和配置》(当前是1.0版)中,介绍了一个IceBox服务程序的开发方法和单独应用中配置和管理的过程。在实际的应用中,IceBox服务通常集成到IceGrid中,并通过IceGrid进行激活和部署。

    本章节中IceBox服务是集成在IceGrid中,并通过IceGrid进行部署,所以IceBox服务的配置信息不再同《IceBox开发和配置》中一样在config.icebox中描述,而是直接配置在部署文件app.xml中。那也就是说,IceGrid集成IceBox服务,只需要在app.xml文件中添加Icebox服务相关的配置信息就可以了。事实上,有关Ice所有的配置信息(除IceGrid自身的配置信息),都可以添加到app.xml中,并通过icegrid部署后生效。

    下面各节详细描述IceBox服务的集成过程。

    4.1.1  IceBox服务程序编写

    请参考文档《IceBox开发和配置》,这里不再详述。由于IceBox服务相关的配置信息都放在了app.xml中,并且服务是通过IceGrid按需激活的,因此这里程序代码略有调整。下面列出IceBox服务的实现代码:

    文件名:ServerService.java

    import main.java.DataSource;

    import IceBox.Service;

     

    public class ServerService implements IceBox.Service {

        /**

        * @param name 配置文件中的service名称

        * @param communicator对象,IceBox.ServiceManager负责创建和销毁。

        *          可能同时被其他服务共享使用(由配置文件决定),object Adapter的名

        *          称必须是唯一的;

        * @param args  配置文件中的参数列表

        * @Override

         **/

        public void start(String name,Ice.Communicator communicator,

                          String[] args){

           //创建objectAdapter,名称有配置文件决定

           Adapter =communicator.createObjectAdapter(

                                "RTDataSystem-"+name);

          

           //创建servant

           StringRTDataSourceIdentity = communicator.getProperties().

                                      getProperty("RTDataSource.Identity");

           DataSourceobjDataSrc = new DataSource("dataSource");

            Adapter.add(objDataSrc,

               communicator.stringToIdentity(RTDataSourceIdentity));

          

            Adapter.activate();

        }

     

        /**

         *

        * @param args

        * @Override

         *

        **/

        public void stop()

        {

           Adapter.destroy();

        }

       

        private Ice.ObjectAdapter Adapter;

    }

    4.1.2  IceGrid集成IceBox服务

    IceGrid集成IceBox只和部署文件(app.xml)有关,IceBox服务(service)的粒度和普通的server是一样的,因此IceBoxservice的部署和普通的server非常类似,它同样有模板、服务(service)和实例化的概念,可以将IceBox service理解为一个特殊的server。

    为了能更清楚的描述这个集成配置的过程,在IceGrid配置的基础上,添加IceBox服务。具体目标如下:

    1.      集成ServerService服务(service),并且ServerService服务(service)使用的服务对象和之前server的服务对象使用同一个(type--::RTDataSystem::RTDataSource)

    2.      在节点1(node_1)上添加IceBox服务功能(IceBox-Node1),这个IceBox服务包含了5个ServerService服务;同样的在节点2(node_2)上也添加一个IceBox服务功能(IceBox-Node2),也包含了5个ServerService服务

    3.      这些IceBox服务中分布的多个服务(service)和之前已经存在的服务(server)一起通过IceGrid实现负载均衡

    为了实现上述的功能,需要添加IceBox服务的相关配置,首先看一下此时app.xml的变化,变化和添加部分用浅灰阴影标出。

    app.xml

    <?xml version="1.0"encoding="UTF-8" ?>

    <icegrid>

      <applicationname="RTDSSystem">

        <server-templateid="RTDSSystemServer">

          <parameter name="index"/>

          <server id="RTDSSystemServer-${index}" exe="java"activation="on-demand">

            <adapter name="RTDataSysytem"endpoints="tcp"

                                         replica-group="RTDataSystemGroup"/>

            <option>-jar</option>

            <option>ServerApp.jar</option>

        </server>

        </server-template>

    <!— begin服务模板定义-->

    1   <service-templateid="RTDSystemService">

    2       <parameter name="name"/>

    3       <service name="${name}" entry="ServerService">

    4           <description>A simple service named after ${name}</description>

    5           <properties>

    6             <property name="RTDataSource.Identity" value="RTDataSource"/>

    7           </properties>

    8           <adapter name="RTDataSystem-${name}" endpoints="tcp"

                                                   id="RTDataSystem-${name}" replica-group="RTDataSystemGroup"

                                                   server-lifetime="false"/>

    11      </service>

    12  </service-template>

    <!-- end服务模板定义-->

       

        <replica-groupid="RTDataSystemGroup">

          <load-balancingtype="round-robin"/>

          <!--load-balancingtype="ordered" /-->

          <!--load-balancingtype="adaptive" /-->

          <!--load-balancingtype="random" n-replicas="0"/-->

          <object identity="RTDataSource" type="::RTDataSystem::RTDataSource"/>

        </replica-group>

       

        <node name="node_1">

          <server-instancetemplate="RTDSSystemServer" index="1"/>

          <server-instancetemplate="RTDSSystemServer" index="11"/>

          <server-instancetemplate="RTDSSystemServer" index="111"/>

    <!— begin IceBox服务配置 IceBox-Node1-->

    1     <icebox id="IceBox-Node1" activation="on-demand"exe="java">

    2        <description>Asample IceBox server IceBox-Node1</description>

    3        <option>IceBox.Server</option>

    4        <properties>

    5           <property name="IceBox.InstanceName" value="${server}"/>

    6           <property name="Ice.Admin.Endpoints" value="tcp -h 10.0.2.241"/>

    7           <property name="IceBox.Trace.ServiceObserver" value="1"/>

    8        </properties>

    9        <service-instance template="RTDSystemService" name="one"/>

    10       <service-instancetemplate="RTDSystemService" name="two"/>

    11       <service-instancetemplate="RTDSystemService" name="three"/>

    12       <service-instancetemplate="RTDSystemService" name="four"/>

    13       <service-instancetemplate="RTDSystemService" name="five"/>

    14     </icebox>

    <!— end IceBox服务配置 IceBox-Node1-->

        </node>

        <node name="node_2">

          <server-instancetemplate="RTDSSystemServer" index="2"/>

          <server-instancetemplate="RTDSSystemServer" index="22"/>

          <server-instancetemplate="RTDSSystemServer" index="222"/>

    <!— begin IceBox服务配置 IceBox-Node2-->

    1     <icebox id="IceBox-Node2" activation="on-demand"exe="java">

    2        <description>Asample IceBox server IceBox-Node2</description>

    3        <option>IceBox.Server</option>

    4        <properties>

    5           <property name="IceBox.InstanceName" value="${server}"/>

    6           <property name="Ice.Admin.Endpoints" value="tcp -h 10.0.2.242"/>

    7           <property name="IceBox.Trace.ServiceObserver" value="1"/>

    8        </properties>

    9        <service-instancetemplate="RTDSystemService" name="2-one"/>

    10       <service-instancetemplate="RTDSystemService" name="2-two"/>

    11       <service-instancetemplate="RTDSystemService" name="2-three"/>

    12       <service-instancetemplate="RTDSystemService" name="2-four"/>

    13       <service-instancetemplate="RTDSystemService" name="2-five"/>

    14     </icebox>

    <!— begin IceBox服务配置 IceBox-Node2-->

        </node>

        <node name="node_3">

          <server-instancetemplate="RTDSSystemServer" index="3"/>

        </node>

      </application>

    </icegrid>

    app.xml中增加的IceBox服务相关的配置部分如下:

    服务摸板(Service Template):

          可以对比一下servertemplate的定义,两者基本上没有什么区别,最大的不同是

       Server template中server是指定一个可执行的程序,而service中指定的是动态加载

       的组件入口。以下解释上述配置中的服务模板的定义:

           第1行指定定义模板的id,唯一标志一个服务模板,第12是闭合标签;

           第2行定义了一个参数name,默认值是“name”;

           第3~11行定义了模板中使用的服务(service),并在该service中指定了名称、 

           入口、描述信息、配置属性,定义了一个对象适配器;

           第4行,是该服务的描述信息;

           第5~7行,是属性定义列表,这里定义了一个属性RTDataSource.Identity,并

           指定其值为RTDataSource;

           第8行,定义了一个对象适配器,指定了其name、endpoints、id、replica-group

           等属性信息,这个基本上和server中adapter的定义没有什么区别

          

           以上内容就是service模板的定义。

    IceBox服务(IceBox-Node1):

                     icebox服务的定义被包含在分布的服务器节点中,主要包括三部分的信息:

    1.      IceBox服务的启动配置信息

    2.      IceBox的属性配置信息

    3.      Service服务实例化列表

             下面解释这块内容:

              第1~3行,指定了IceBox服务的名称,启动方式,启动执行程序等

              第4~8行,指定了IceBox服务的属性配置列表,这里定义了IceBox服务的实

              例名称、管理器访问端点以及service被跟踪的级别

              第9~13行,实例化了5个service服务

            至此,一个包含了5个serverservice服务的IceBox服务被集成在node1中。

    IceBox服务(IceBox-Node2)

    同IceBox服务(IceBox-Node1)中描述,只是具体value有所不同,这里不再解释。

      4.1.3  测试验证

    验证方式同第3章,这里不再赘述。部署完成后,就可以通过IceGridGUI.jar程序来进行管理


  • 相关阅读:
    Bridge Design Pattern
    终于写了个自己的简单MVC框架!
    c 第1章的习题 列表 ! :)
    如何创建 linux 下的计划任务运行 php 文件?
    c 的开篇(自学 c 语言)
    一连串问题,都和.net framework有关
    信号与信号量的区别[转]
    永久设置SecureCRT的背景色和文字颜色方案[转]
    do...while(0)的妙用 【转】
    给Ubuntu软件升级命令 [转]
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318883.html
Copyright © 2011-2022 走看看