转
在这里,我将建立一个拥有一个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
从窗口上能看出来建立的IceGrid使用的Ice版本为3.2。
在这里输入node list可以看到目前注册了的结点:node1和node2。
实施完以上步骤,我们的简单IceGrid就建立好了。当你在运行有node2的计算机上使用IceGridAdmin进要求输入用户名和密码,这个东西在IceGrid的配置文件的最后面。
Update 2007-07-18: 今天遇到的怪事是一直用node ping NAME命令ping不到除本地运行的结点以外的其它结点,搞了半天才找到罪魁:WINDOWS自带的防火墙。虽然不影响注册,但影响应用程序的部署,害 我早上发现在分布在3台PC机上的4个结点上部署应用程序需要84秒。这下问题解决了。成事不足败事有余的WINDOWS防火墙,我关!