【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中配置对象标识,客户端可以从配置文件中读取相应对象标识,这样对象标识就不需要硬编码在程序中了。

IceGrid负载均衡部署 z的更多相关文章

  1. linux下nginx负载均衡部署

    nginx负载均衡部署 Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 server,也是一个 IMAP/POP3/SMTP 代理server. Ngi ...

  2. [转]Nginx反向代理和负载均衡部署指南

    Nginx反向代理和负载均衡部署指南   1.        安装 1)         从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最 ...

  3. LVS负载均衡部署

    一.lvs-nat模式 1.1.环境介绍 本实验用三台虚拟机完成,一台虚拟机模拟lvs调度器,两块网卡,一块模拟公网一块模拟私网,公网地址192.168.0.201/24,私网地址192.168.4. ...

  4. Nginx反向代理和负载均衡部署指南

    1.        安装 1)         从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本(目前是1.5.13版本)安装包: ...

  5. [docker swarm] 从单容器走向负载均衡部署

    背景 之前写过<<docker-compose真香>> 和<docker-compose.docker stack前世今生>两篇博客, 回顾一下思路: ① dock ...

  6. 负载均衡部署BBS

    目录 一:部署后端服务(web服务器) 二:部署Python(web) 三:部署Django和uwsgi 四:配置并启动 五:部署负载均衡(lb01) 六:(web服务器 lb服务器) 1.测试 2. ...

  7. [SaltStack] Salt高可用和负载均衡部署

    Saltstack HA部署 Salt官网是有HA/Rebalance/failover解决方案的, 但版本必须是2014.7, 目前该版本还没有release, 从官网下载的源码包安装使用测试起来一 ...

  8. 【OF框架】框架Cache/Session在负载均衡部署时,切换Memory/Redis测试

    一.切换Memory/Redis 第一步:安装运行Redis服务,获得连接参数. 第二步:在appsettings.json中配置 EnableRedisCache 和 Redisconnection ...

  9. 阿里云SLB双机IIS多站点负载均衡部署笔记

    首先SLB是通过局域网与ECS链接 ECS1服务器 test文件夹增加index.html test1文件夹增加index.html 设置ECS1服务器(130)IIS test站点 设置test主机 ...

随机推荐

  1. 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!

    转--http://www.2cto.com/kf/201402/277535.html 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版! 2014-02-11     ...

  2. Code First 约定

    Code First 约定 借助 Code First,可通过使用 C# 或 Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Fi ...

  3. OpenJudge计算概论-计算书费

    /*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...

  4. ES6 中的 Set、Map 和 WeakMap

    Set 是 ES6 新增的有序列表集合,它不会包含重复项. Set 支持 add(item) 方法,用来向 Set 添加任意类型的元素,如果已经添加过则自动忽略: has(item) 方法用来检测 S ...

  5. Javascript 错误捕获

    一.一般写JS代码很少捕获异常,建议捕获异常,具体代码如下: 1.写法一: try { //具体代码 } catch(error) { alert("Error:" + error ...

  6. MyBatis SQL xml处理小于号与大于号

    MyBatis SQL xml处理小于号与大于号 当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台 ...

  7. smarty模板基础

    将前台后台隔离,前台控制显示,后台控制逻辑/内容,与cms类似 原理: 用户访问text.php页面,后台调用类smarty.class.php显示静态模板;

  8. windows 系统中打开一个数字证书所经历的过程

         今天在使用Outlook express调试CSP程序时,发现数字证书总是加载不上(提示该数字证书已经被破坏),使用断点进去跟踪一下,发现在CSP程序中调用CPVerifySignature ...

  9. encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)

    encodeURIComponent编码后java后台的解码 (AJAX中文解决方案) 同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题. 原来 ...

  10. phpize的安装

    一直想装VLD却一直没装上,因为需要用到phpize,但这个工具大部分机子都没有装,上网搜了一下大部分都是讲phpize的应用没有讲怎么安装. 今天终于搜到了,不过是要在linux机器上,有yum命令 ...