http://migege.com/archives/how-to-implement-a-simple-icegrid.html

在这里,我将建立一个拥有一个registry和两个node的IceGrid,其中node1与registry运行在同一台计算机上(但不同进 程,IP为192.168.3.95),node2运行在另一台计算机上(IP为192.168.3.68)。环境均为XP SP2+Ice 3.2.0。

首先在D盘(可以任意)下建立目录MyIceGrid,再建立子目录db及db\registry和db\node1,以存放registry和node1的数据。

将以下MyIceGrid的配置信息另存为config.grid:

IceGrid.InstanceName=MyIceGrid

#
# The IceGrid locator proxy.
#
Ice.Default.Locator=MyIceGrid/Locator:default -h 192.168.3.95 -p 12000

#
# IceGrid registry configuration.
#
IceGrid.Registry.Client.Endpoints=default -p 12000
IceGrid.Registry.Server.Endpoints=default
IceGrid.Registry.Internal.Endpoints=default
IceGrid.Registry.Data=D:\MyIceGrid\db\registry
IceGrid.Registry.PermissionsVerifier=MyIceGrid/NullPermissionsVerifier
IceGrid.Registry.AdminPermissionsVerifier=MyIceGrid/NullPermissionsVerifier
IceGrid.Registry.SSLPermissionsVerifier=MyIceGrid/NullSSLPermissionsVerifier
IceGrid.Registry.AdminSSLPermissionsVerifier=MyIceGrid/NullSSLPermissionsVerifier

#
# IceGrid node configuration.
#
IceGrid.Node.Name=node1
IceGrid.Node.Endpoints=default
IceGrid.Node.Data=D:\MyIceGrid\db\node
IceGrid.Node.CollocateRegistry=1
#IceGrid.Node.Output=db
#IceGrid.Node.RedirectErrToOut=1

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

#
# Dummy username and password for icegridadmin.
#
IceGridAdmin.Username=foo
IceGridAdmin.Password=bar

再将node1的配置另存为config.node文件:

#
# Sample configuration file for the IceGrid node daemon
#

#
# Proxy to the IceGrid registry
#
#Ice.Default.Locator=MyIceGrid/Locator:tcp -h 192.168.3.95 -p 4061
#Ice.Default.Locator=MyIceGrid/Locator:ssl -h localhost -p 4062
Ice.Default.Locator=MyIceGrid/Locator:tcp -h 192.168.3.95 -p 12000

#
# The name of this node; must be unique within an IceGrid deployment
#
IceGrid.Node.Name=node1

#
# The node object adapter listens on all interface using an OS-
# assigned port
#
IceGrid.Node.Endpoints=tcp

#
# The directory where the IceGrid node maintains its data
# (server configuration files etc.)
# This directory must exist when icegridnode starts
#
# Under Vista we recommend using:
#
# C:\Users\Local Service\AppData\Local\ZeroC\icegrid\node1
#
IceGrid.Node.Data=D:\MyIceGrid\db\node1

#
# Redirect server stdout and stderr to files in this directory:
#
# Under Vista we recommend using:
#
# C:\Users\Local Service\AppData\Local\ZeroC\icegrid\node1
#
IceGrid.Node.Output=D:\MyIceGrid\db\node1
#IceGrid.Node.RedirectErrToOut=1

#
# Trace properties. Uncomment the other trace properties and
# select a suitable tracing level if you are having problems
# with activating servers.
#
IceGrid.Node.Trace.Replica=2
#IceGrid.Node.Trace.Activator=3
#IceGrid.Node.Trace.Adapter=3
#IceGrid.Node.Trace.Server=3

有了这些配置信息,我们已经可以建立拥有registry和node1的grid了,启动命令如下:
#启动registry
icegridregistry –Ice.Config=D:\MyIceGrid\config.grid
#启动node1
icegridnode –Ice.Config=D:\MyIceGrid\config.node

如果需要将它们运行为Windows的服务,可以使用–install参数安装,并设置服务的登录帐户为LocalService,然后在服务管理中启动。需要注意的是,如果配置文件发生了改动,那么必须重新启动它们才会生效。

现在把另台计算机上的node2启动并注册吧,相应的配置文件与node1非常类似,只需要把node1的东西改为node2就可以了,记得端口等信息要与registry一致。启动方法也与上面一样,就不再多说了。

怎么样看node1和node2是否已经注册呢?
输入以下命令启动IceGridAdmin:
icegridadmin –Ice.config=D:\MyIceGrid\config.grid
IceGridAdmin
从窗口上能看出来建立的IceGrid使用的Ice版本为3.2。
在这里输入node list可以看到目前注册了的结点:node1和node2。
Node List

实施完以上步骤,我们的简单IceGrid就建立好了。当你在运行有node2的计算机上使用IceGridAdmin进要求输入用户名和密码,这个东西在IceGrid的配置文件的最后面。

Update 2007-07-18: 今天遇到的怪事是一直用node ping NAME命令ping不到除本地运行的结点以外的其它结点,搞了半天才找到罪魁:WINDOWS自带的防火墙。虽然不影响注册,但影响应用程序的部署,害 我早上发现在分布在3台PC机上的4个结点上部署应用程序需要84秒。这下问题解决了。成事不足败事有余的WINDOWS防火墙,我关!

posted on 2011-03-14 15:44  芝麻开门  阅读(4251)  评论(0编辑  收藏  举报