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 主注册服务配置
IceGrid.InstanceName=IceGridRDDataSource # 1
# 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
IceGrid.Registry.Trace.Node=3 #17
IceGrid.Registry.Trace.Replica=3 #18
IceGrid.Node.Endpoints=default #20
IceGrid.Node.CollocateRegistry=1 #22
#IceGrid.Node.Output=node_1 #23
#IceGrid.Node.RedirectErrToOut=1 #24
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
# 2 注册服务的端点信息(主注册服务和所有的从注册服务),节点注册时要用到
# 5 内部访问端点信息,通常是default,节点用这个端口和注册服务通信
# 7 设定防火墙安全代理,从而控制客户端访问注册表时可用的权限
# 9 设定SSL安全代理,从而设定客户端访问注册表时的SSL安全访问机制
# 10 设定SSL安全代理,从而设定注册表管理者的SSL安全访问机制
# 11 指定Ice对象序列化的机制,如果不设置,默认用Freeze机制
#17 指定主注册服务跟踪节点信息的级别(0~3),默认为0
#18 指定主/从热备注册服务的跟踪级别(0~3),默认为0
# 20 节点被访问的端口信息,注册服务使用这个端点和节点通信,通常设为default
# 22 定义节点是否和注册服务并置在一起,设为1时并置,设为0时不并置
# 23 节点标准输出信息重定向蹈的目录路径,会自动生成输出文件
# 26 对象适配器跟踪级别,通常有0,1,2,3级,默认是0
2.1.2 从注册服务配置
# 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
IceGrid.Registry.Trace.Node=3 #17
IceGrid.Registry.Trace.Replica=3 #18
IceGrid.Node.Endpoints=default #20
IceGrid.Node.CollocateRegistry=1 #22
#IceGrid.Node.Output=node_2 #23
#IceGrid.Node.RedirectErrToOut=1 #24
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
2. 多了第6行,IceGrid.Registry.ReplicaName=slave_1,指定从注册服务的名称
其它的基本就没有差别了,大部分属性项在config_master.grid里面都有定义,为了方便阅读,下面也将用到的各项给出说明:
# 1 注册服务的端点信息(主注册服务和所有的从注册服务),节点注册时要用到
#4 内部访问端点信息,通常是default,节点用这个端口和注册服务通信
# 7 设定防火墙安全代理,从而控制客户端访问注册表时可用的权限
# 9 设定SSL安全代理,从而设定客户端访问注册表时的SSL安全访问机制
#10 设定SSL安全代理,从而设定注册表管理者的SSL安全访问机制
# 11 指定Ice对象序列化的机制,如果不设置,默认用Freeze机制
#17 指定从注册服务跟踪节点信息的级别(0~3),默认为0
#18 指定主/从热备注册服务的跟踪级别(0~3),默认为0
# 20 节点被访问的端口信息,注册服务使用这个端点和节点通信,通常设为default
# 22 定义节点是否和注册服务并置在一起,设为1时并置,设为0时不并置
# 23 节点标准输出信息重定向蹈的目录路径,会自动生成输出文件
# 26 对象适配器跟踪级别,通常有0,1,2,3级,默认是0
2.1.3 应用部署配置
2 <application name="RTDSSystem">
3 <server-template id="RTDSSystemServer">
5 <server id="RTDSSystemServer-${index}"exe="java" activation="on-demand">
6 <adapter name="RTDataSysytem" endpoints="tcp" replica-group="ReplicatedRTDataSysytemAdp"/>
8 <option>ServerApp.jar</option>
12 <replica-group id="ReplicatedRTDataSysytemAdp">
13 <load-balancing type="round-robin"/>
14 <object identity="RTDataSource" type="::RTDataSystem::RTDataSource"/>
18 <server-instance template="RTDSSystemServer" index="1"/>
19 <server-instance template="RTDSSystemServer" index="11"/>
20 <server-instance template="RTDSSystemServer" index="111"/>
23 <server-instance template="RTDSSystemServer" index="2"/>
24 <!--server-instancetemplate="RTDSSystemServer" index="22"/-->
25 <!--server-instancetemplate="RTDSSystemServer" index="222"/-->
28 <server-instance template="RTDSSystemServer" index="3"/>
29 <!--server-instancetemplate="RTDSSystemServer" index="33"/-->
30 <!--server-instancetemplate="RTDSSystemServer" index="333"/-->
1. 应用标签(application),name属性定义这个应用的名字
replica-group属性标示该适配器是个可复制组集群,并指定这个可复制组的名称;
register-process属性定义了是否这个节点是否可以被icegrid关闭;
5. 可复制组(replica-group),一组对象适配器的集合。
load-balancing子项中type属性指定负载均衡策略,icegrid提供了四种负载均衡策略: Random (随机方式)
object子项定义适配器绑定的服务对象信息。其中identity属性指定对象的标识,type属性指定了对象的层次结构类型。这两个属性都可以唯一的标识一个服务对象。
6. 服务模板(server-temple),服务模板是对服务的一个抽象,避免了重复定义。这样,在节点中描述服务时只需要实例化它的服务模板就可以了。
parameter子项定义服务模板的参数,可包含多个,主要实例化服务时用;
另外还有一些特殊的服务模板,比如:icebox服务模板,它的定义和通用的服务模板的定义不太一样。
第2行,标识应用的名称为RTDSSystem,这个名称是唯一的;
第3~10行,定义了一个服务模板RTDSSystemServer,并有一个参数index;
其中5~9定义了这个模板包含的服务定义,第6行是这个服务包含的对象适配器
第12~15行,是对可复制组的定义,包括服务对象的定义和负载均衡策略;
第17~21行,是对节点node_1的定义,指定了节点的名称,包含的服务(3个服务);
最后两行是闭合标签,至此一个icegrid的分布式部署配置文件就完成了。
2.1.4 节点配置
IceGrid.Node.Endpoints=default #3
IceGrid.Node.RedirectErrToOut=1 #6
IceGrid.Node.Trace.Activator=1 #7
#IceGrid.Node.Trace.Adapter=2 #8
#IceGrid.Node.Trace.Server=3 #9
事实上,这个文件里面的配置项,在config_slave.grid中都有描述,但这里也列出来,方便阅读。
#1 注册服务的端点信息(主注册服务和所有的从注册服务),节点注册时要用到
#3 节点被访问的端口信息,注册服务使用这个端点和节点通信,通常设为default
2.2 客户端配置
3. 结果验证
3.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的部署。
1. 高级应用配置
4.1 集成IceBox
4.1.1 IceBox服务程序编写
public class ServerService implements IceBox.Service {
* @param communicator对象,由IceBox.ServiceManager负责创建和销毁。
* 可能同时被其他服务共享使用(由配置文件决定),object Adapter的名
public void start(String name,Ice.Communicator communicator,
Adapter =communicator.createObjectAdapter(
StringRTDataSourceIdentity = communicator.getProperties().
getProperty("RTDataSource.Identity");
DataSourceobjDataSrc = new DataSource("dataSource");
communicator.stringToIdentity(RTDataSourceIdentity));
private Ice.ObjectAdapter Adapter;
4.1.2 IceGrid集成IceBox服务
为了能更清楚的描述这个集成配置的过程,在IceGrid配置的基础上,添加IceBox服务。具体目标如下:
3. 这些IceBox服务中分布的多个服务(service)和之前已经存在的服务(server)一起通过IceGrid实现负载均衡
为了实现上述的功能,需要添加IceBox服务的相关配置,首先看一下此时app.xml的变化,变化和添加部分用浅灰阴影标出。
<?xml version="1.0"encoding="UTF-8" ?>
<applicationname="RTDSSystem">
<server-templateid="RTDSSystemServer">
<server id="RTDSSystemServer-${index}" exe="java"activation="on-demand">
<adapter name="RTDataSysytem"endpoints="tcp"
replica-group="RTDataSystemGroup"/>
<option>ServerApp.jar</option>
1 <service-templateid="RTDSystemService">
3 <service name="${name}" entry="ServerService">
4 <description>A simple service named after ${name}</description>
6 <property name="RTDataSource.Identity" value="RTDataSource"/>
8 <adapter name="RTDataSystem-${name}" endpoints="tcp"
id="RTDataSystem-${name}" replica-group="RTDataSystemGroup"
<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"/>
<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>
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"/>
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"/>
<!— end IceBox服务配置 IceBox-Node1-->
<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>
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"/>
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"/>
<!— begin IceBox服务配置 IceBox-Node2-->
<server-instancetemplate="RTDSSystemServer" index="3"/>
可以对比一下servertemplate的定义,两者基本上没有什么区别,最大的不同是
Server template中server是指定一个可执行的程序,而service中指定的是动态加载
第1行指定定义模板的id,唯一标志一个服务模板,第12是闭合标签;
第3~11行定义了模板中使用的服务(service),并在该service中指定了名称、
第5~7行,是属性定义列表,这里定义了一个属性RTDataSource.Identity,并
第8行,定义了一个对象适配器,指定了其name、endpoints、id、replica-group
等属性信息,这个基本上和server中adapter的定义没有什么区别
icebox服务的定义被包含在分布的服务器节点中,主要包括三部分的信息:
第1~3行,指定了IceBox服务的名称,启动方式,启动执行程序等
第4~8行,指定了IceBox服务的属性配置列表,这里定义了IceBox服务的实
至此,一个包含了5个serverservice服务的IceBox服务被集成在node1中。
同IceBox服务(IceBox-Node1)中描述,只是具体value有所不同,这里不再解释。
4.1.3 测试验证
验证方式同第3章,这里不再赘述。部署完成后,就可以通过IceGridGUI.jar程序来进行管理
IceGrid应用 配置手册相关推荐
- VS code 插件配置手册
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 VS code 插件配置手册 C/C++ Tools插件---C/ ...
- 03-2 BGP专有命令--BGP命令与配置手册
Technorati 标签: BGP,配置,CCIE,CCNP,实验 该文档涉及的命令有: bgp fast-external-fallover bgp cluster-ID x.x.x.x/xxxx ...
- F5负载均衡配置手册-实操后的
这是可以使用的F5 配置手册对于小白十分好用 转载于:https://blog.51cto.com/huagongxiaodi/1878088
- CISCO路由器产品配置手册
CISCO路由器产品配置手册 第一章 路由器配置基础2 一.基本设置方式2 二.命令状态2 三.设置对话过程3 四.常用命令5 五.配置IP寻址6 六.配置静态路由8 第二章 广域网协议设置10 一. ...
- cisco3550交换机配置手册
cisco3550交换机配置手册 说明 本手册只包括日常使用的有关命令及特性,其它未涉及的命令及特性请参考英文的详细配置手册. 产品特性 3550EMI是支持二层.三层功能(EMI)的交换机 支持VL ...
- F5 配置手册 -F5 BIG-IP 10.1-2-配置-基本参数
F5 配置手册 F5 BIG-IP 10.1-2-配置 -基本参数 统一沟通(中国)有限公司 2012-01-31 前言: 有人给我说,激活了接下来要做什么? 那么我们现在开始做激活后的事务. 但是请 ...
- JIRA配置手册 (3):字段和界面
作者:Misha 来源:原力注入 在前面我们简单介绍了问题类型和工作流的配置方法,今天我们来聊一聊字段和界面这两个互相依赖的家伙. 界面即Issue展示给用户可见的表单页面,分为创建界面.查看界面和编 ...
- Juniper 防火墙简明配置手册
Juniper SRX防火墙简明配置手册 SRX系列防火墙是Juniper公司基于JUNOS操作系统的安全系列产品,JUNOS集成了路由.交换.安全性和一系列丰富的网络服务.目前Juniper公司的 ...
- Oracle 共享磁盘阵列 双机热备 实战 配置教程 配置手册
Oracle 11g共享存储双机热备配置手册 本文介绍 通过ServHA Cluster配置Oracle共享磁盘阵列双机容错集群. 集群软件下载地址:http://www.microcolor.net ...
- 引用 vsftpd配置手册(实用)
引用 xyz 的 vsftpd配置手册(实用) 作者: 木頭 来源: PHPChina 开源社区门户 1.vsftpd配置参数详细整理 #接受匿名用户 anonymous_enable=YES ...
最新文章
- 谁是中国大学理科的王者?
- 解決 Tomcat 5.0.x % include file ... % 的中文亂碼問題
- 即将上线的flume服务器面临的一系列填坑笔记
- 初学__Python——Python 最简单的函数—用 lambda 声明函数
- LM3S1138驱动函数SysCtlPeripheralEnable解析
- c++和python先学哪个?
- CodeCraft-20 (Div. 2) D. Nash Matrix 构造 + dfs
- wcf 返回图片_wcf http 返回图片
- LeetCode--88.合并两个有序数组(插入法,排序法)
- python鞋子_python
- sql server 统计_看SQL Server 2016中的新实时查询统计信息
- opencv中java的dmatch_关于OpenCV的那些事——ORB的brief描述子(256bit)的match心得
- java连接mysql数据库 R,java连接MySql数据库!
- python复制csv数据_如何使用Python将CSV数据复制到现有xlsx文件
- jfinal中Interceptor拦截器的使用
- 《WF本质论》第一章OpenSesame我的实现
- Kylo 0.8.3 安装
- 用FFmpeg保存JPEG图片
- CET4翻译之“无主句”
- 第六届中国软件开源创新大赛——飞桨赛题新鲜出炉,速来pick!
热门文章
- 服装进销存软件排名前十名,最新门店进销存测评现已出排行榜
- php smarty安装,Smarty安装
- html嵌入百度播放器
- 如何从零起步开发一款App
- 水晶报表for java_水晶报表(crystal reports)--java
- 史上最全的互联网思维精髓总结
- rHadoop分布式安装与配置
- Java版通用身份证验证
- dcs系统和串口服务器通信,DCS系统组态流程和方法
- 计算机控制的行业规模,2019年中国DCS控制系统行业市场现状及竞争格局分析,内资“两家独大”「图」...