`

Ice服务详解及应用_IceGrid(01)IceGrid负载均衡部署

    博客分类:
  • Ice
阅读更多

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【IceGrid负载均衡部署步骤】
1、环境
主机1:IP=192.168.0.239,上面部署注册表服务器registry和节点node1,registry和node1运行在同一进程中;
主机2:IP=192.168.0.25,上面部署节点node2;
其中每个节点中包含一个服务程序,服务程序均在节点启动时启动。

2、主机1配置
(1)服务程序部署XML:app_rep.xml,内容如下
<icegrid>
  <application name="Simple"> #分布式系统名称
    
    <server-template id="SimpleServer">  #服务器模板
      <parameter name="index"/> #自定义参数index
      <server id="SimpleServer-${index}" exe="./server" activation="always"> #服务器id,程序路径,启动方式
        <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> #对象适配器配置
        <property name="Identity" value="hello"/> #服务器中自定义属性Identity
      </server>
    </server-template>

    <replica-group id="ReplicatedHelloAdapter">  
      <load-balancing type="round-robin"/>  #负载均衡配置,使用轮询调度方式(最近最少使用算法)
      <object identity="hello" type="::Demo::Hello"/> #该replica-group中的对象,客户端根据该对象标识或类型定位请求
    </replica-group>

    <node name="node1">  #节点1,对应于服务程序实例SimpleServer-1
      <server-instance template="SimpleServer" index="1"/>
    </node>

    <node name="node2">  #节点2,对应于服务程序实例SimpleServer-2
      <server-instance template="SimpleServer" index="2"/>
    </node>

  </application>

</icegrid>

--------------------------------------------------------
(2)registry和node1的配置文件config.grid,内容如下
#
# The IceGrid instance name.
#
IceGrid.InstanceName=DemoIceGrid    

#
# The IceGrid locator proxy.
#
Ice.Default.Locator=DemoIceGrid/Locator:default -p 12345    #注册表服务器的端点信息

#
# IceGrid registry configuration.
#
IceGrid.Registry.Client.Endpoints=default -p 12345
IceGrid.Registry.Server.Endpoints=default
IceGrid.Registry.Internal.Endpoints=default
IceGrid.Registry.Data=db/registry        #注册表服务器使用到的目录
IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
IceGrid.Registry.SSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier
IceGrid.Registry.AdminSSLPermissionsVerifier=DemoIceGrid/NullSSLPermissionsVerifier

#
# IceGrid SQL configuration if using SQL database.
#
#Ice.Plugin.DB=IceGridSqlDB:createSqlDB
#IceGrid.SQL.DatabaseType=QSQLITE

#
# IceGrid node configuration.
#
IceGrid.Node.Name=node1            #节点1,对应于app_rep.xml中node1
IceGrid.Node.Endpoints=default
IceGrid.Node.Data=db/node        #节点1用到的目录
IceGrid.Node.CollocateRegistry=1
#IceGrid.Node.Output=db            #将节点上的服务程序的标准输出重定向到目录db下,会自动生成输出文件
#IceGrid.Node.RedirectErrToOut=1    #将节点上的服务程序的标准错误重定向到标准输出

#
# Trace properties.
#
IceGrid.Node.Trace.Activator=1
#IceGrid.Node.Trace.Adapter=2
#IceGrid.Node.Trace.Server=3

#
# Dummy username and password for icegridadmin.
#
IceGridAdmin.Username=foo
IceGridAdmin.Password=bar
----------------------------------------------------------------
3、主机2配置
主机2上只需要配置node2的配置文件config.node即可,内容如下
#
# The IceGrid locator proxy.
#
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.0.239 -p 12345 #注册表服务器的端点信息

#
# IceGrid node configuration.
#
IceGrid.Node.Name=node2 #节点2,对应于app_rep.xml中node2
IceGrid.Node.Endpoints=default
IceGrid.Node.Data=db/node2
IceGrid.Node.Output=db/node2    #将节点上的服务程序的标准输出重定向到db/node2目录下,会自动生成输出文件
IceGrid.Node.RedirectErrToOut=1

#
# Trace properties.
#
IceGrid.Node.Trace.Activator=1
---------------------------------------------------------------
4、客户端配置
配置文件:config.client,内容如下:
#
# The IceGrid locator proxy.
#
Ice.Default.Locator=DemoIceGrid/Locator:default -h 192.168.0.239 -p 12345    #只需有注册表服务器的端点信息即可

5、启动服务程序
(1)主机1上先启动注册表和节点1,执行:icegridnode --Ice.Config=config.grid
(2)主机1上部署服务(只需部署一次,除非修改过app_rep.xml),执行:
icegridadmin --Ice.Config=config.grid -e "application add app_rep.xml"
若要重新部署,执行:icegridadmin --Ice.Config=config.grid -e "application update app_rep.xml"
(3)主机2上启动节点2,执行:icegridnode --Ice.Config=config.node,此时因为服务配置为随节点启动,所以服务自动激活;

6、打开客户端
执行./client,客户端自动连接注册表服务器,接下来便可向服务器发起访问请求。
    
7、关于程序编码调整
IceGrid的使用会导致客户端、服务器的配置文件发生变动,而代码也只需做极少的改动。主要是客户端可能会由直接代理换成间接代理。
使用了IceGrid定位服务功能后,客户端无需知道服务器上对象适配器端点,只需要对象标识或对象适配器标识或replica-group标识
便可以访问到服务器上的对象。
服务器端可以在xml中配置对象标识,客户端可以从配置文件中读取相应对象标识,这样对象标识就不需要硬编码在程序中了。    
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

分享到:
评论

相关推荐

    将研发文档中的01 项目部署到IceGrid中.rar

    在IT行业中,部署是开发流程中的重要环节,尤其是在大型企业级应用中,集群部署和负载均衡更是不可或缺。这里我们关注的是“将研发文档中的01 项目部署到IceGrid中”,这涉及到两个主要知识点:IceGrid和C# ICE。 ...

    IceGrid应用配置手册

    5. **启动工具:** 使用Ice提供的工具如 `icegridnode` 和 `icegridadmin` 来启动服务、部署应用等。 **具体步骤示例:** 1. **创建主注册服务配置文件:** - 文件名可以自定义,但本例中命名为 `config_master.grid...

    Demo_ice.zip_DEMO_Demo_ice_ICE_ICE demo_ice mysql

    ICE提供了一套完整的框架,包括远程方法调用(RPC)、数据序列化、对象透明代理以及负载均衡等功能,极大地简化了分布式应用的开发。 在这个Demo中,我们主要关注如何利用ICE接口来操作MySQL数据库。MySQL是世界上...

    ice.rar_ICE_ICE 开发_ICE CORBA_corba_ice接口

    它类似于CORBA(Common Object Request Broker Architecture),但设计得更加简洁、高效,易于开发和部署。ICE提供了丰富的语言绑定,包括C++、Java、Python等,使得跨语言的通信变得简单。 ICE的核心概念包括代理...

    ICE.rar_ICE_ice debug_多核系统

    2. **性能分析**:ICE可以提供详细的性能数据,帮助优化代码,确保多核间的负载均衡。 3. **错误检测**:在仿真环境中,可以设置断点、查看内存状态、追踪指令执行,以识别和定位错误。 4. **软件验证**:在多核...

    Ice.zip_ICE_ICE C++

    【标题】"Ice.zip_ICE_ICE C++" 指的是一个压缩包,其中包含与ICE(Internet Communication Engine)相关的C++程序代码。ICE是一个跨平台的中间件,用于构建分布式应用程序,它提供了多种语言的接口,包括C++。 ...

    ice.fig.rar_ ice.fig_ice.fig_ice函数_matlab ice_matlab ice函数

    matlab ice.fig 函数源代码

    ICE中间件技术详细教程_ICE_中间件_

    6. **负载均衡和故障恢复**: ICE支持自动负载均衡和故障切换,增强了系统的可用性。 **ICE中间件功能** 1. **透明的分布式计算**: 通过ICE,开发者可以像调用本地对象一样调用远程对象,降低了分布式系统的复杂性...

    ICE.rar_ICE_ice lin_linux i

    ICE.rar_ICE_ice lin_linux i 这个压缩包文件主要关注的是ICE内核在Linux环境下的配置和编译过程,适用于对ICE环境进行搭配和内核修改的场景。ICE,通常代表某个特定的软件或技术,可能是操作系统的一个组件或者一个...

    ice.rar_ice matlab_ice.m matlab_matlab ice_matlab ice_matlab i

    《冈萨雷斯数字图像处理MATLAB版源码:ICE源码解析》 在计算机科学领域,数字图像处理是一项至关重要的技术,广泛应用于医学影像、遥感、机器视觉等多个领域。MATLAB作为强大的数学计算和数据分析工具,是进行图像...

    552404 ZeroC Ice权威指南_ZeroCI_

    6. **负载均衡与容错**:ICE提供了自动的负载均衡和故障恢复机制,增强了系统的健壮性和可用性。 7. **代理模式**:ICE的代理模式允许开发者在不修改原有代码的情况下,实现远程方法调用,增强了系统的灵活性。 8....

    ARM-code.rar_ARM ICE_ICE_multi ice_multi-i_multi-ice

    标题中的"ARM-code.rar_ARM ICE_ICE_multi ice_multi-i_multi-ice"暗示了这是一个与ARM架构微处理器相关的项目,特别是涉及到ARM ICE(Integrated Circuit Emulation)工具,这是一类用于调试和开发ARM芯片的硬件...

    multi-ice.rar_ICE_multi ice_multi-ice

    标题中的"multi-ice.rar_ICE_multi ice_multi-ice"似乎是一个压缩文件的名称,它包含了一系列与"ICE"(可能是指集成计算环境或者是一种特定的技术)和"multi-ice"相关的项目或软件。"multi-ice"可能是某种软件、框架...

    ICE_MAP.zip_ICE_ICE曲线_matlab 万有特性_matlab 发动机_万有特性

    在IT领域,特别是汽车工程和控制系统的仿真与分析中,"ICE"通常指的是Internal Combustion Engine(内燃机)。本文将围绕标题“ICE_MAP.zip_ICE_ICE曲线_matlab 万有特性_matlab 发动机_万有特性”展开,详细讲解...

    IceGrid配置手册

    ### IceGrid配置手册知识点 ...通过以上知识点的学习,我们可以了解到IceGrid配置的核心要点以及如何通过配置文件来实现服务的分布式部署、负载均衡等功能。这对于构建高效、稳定的分布式系统至关重要。

    Ice_install.rar_ICE_ISCE install_ice lin_ice linux

    在IT领域,ICE(Integrated Computing Environment)是一种广泛使用的软件框架,尤其在地球科学、遥感以及图像处理等专业领域。ICE通常与ISCE(Integrated System for Circular SAR Processing)结合使用,提供了一...

    ICE_1.rar_ICE_ICE 并发

    在IT行业中,ICE(Internet Communication Engine)是一种高性能的中间件框架,主要用于构建分布式系统和实时通信应用。"ICE_1.rar_ICE_ICE 并发"这个标题表明我们即将探讨的是ICE框架中的并发处理机制,这涉及到多...

    Melt_Ice_Model_ICE_融冰_melting_直流融冰_全桥整流_

    标题中的"Melt_Ice_Model_ICE_融冰_melting_直流融冰_全桥整流_"暗示了我们讨论的核心内容是利用直流电流对输电线进行融冰的模拟模型。在这个模型中,"ICE"可能代表了冰的物理状态或者是一种特定的融冰控制系统。接...

Global site tag (gtag.js) - Google Analytics