意义:利用IcePatch2来实现文件的传输 服务器端: 在需要传输文件所在的目录首先运行 icepath2calc . 该操作用于将文件所在的目录下将所有非控文件压缩,并生成校验码,这样既可以保证传输速度又可以保证可靠传输。 然后可以运行 icepatch2server --IcePatch2.Endpoints=”tcp –h 10.5.0.174 –p 10032” . tcp表示使用TCP/IP协议;–h 10.5.0.174是本机的IP地址;–p 10032表示使用10032端口;.表示本级目录。等到客户端文件传输完成之后可以结束该进程。 客户端 直接运行icepatch2client –t --IcePatch2.Endpoints=”tcp –h 10.5.0.174 –p 10032” -t表示完全打补丁。 【IcePatch2使用】 --自动升级工具 icepatch2server:IcePatch服务器 icepatch2client:IcePatch客户端 icepatch2calc:压缩文件并计算校验和的工具,会创建一个 IcePatch2.sum 校验和文件 服务器端属性 IcePatch2.Directory:指定升级文件所在目录,服务器读取 IcePatch2.Endpoints:指定服务器的端点 客户端属性 IcePatch2.Endpoints:指定服务器的端点 IcePatch2.Remove=0:指示升级时不删除客户端目录下的本地文件(服务器上没有) IcePatch2.ChunkSize:指示客户端每次请求传输大小,Default=100kb 客户端第一次运行会提示是否做一次全面的升级,选择 yes ,然后客户端会遍历本地升级保存目录,创建一个 IcePatch2.sum 校验和文件, 接着, 客户端从服务器获取校验和的一个相关列表,再和自己在本地创建的校验和列表相比较,按照如下规则处理: 1、删除出现在本地校验和文件中但不出现在服务器校验和文件中的文件; 2、下载出现在服务器校验和文件中但不出现在本地校验和文件中的文件; 3、下载两边校验和不相同的服务器端的文件; 【注意】首次升级时,客户端升级保存目录中的任何文件都会被自动删除。 icepatch2calc ./bin //对bin目录中文件进行压缩处理并计算校验和,bin目录即为升级文件所在目录 icepatch2server --Ice.Config=config.patch icepatch2client --IcePatch2.Endpoints="tcp -p 20000" -t . //重新做一次全面升级 icepatch2client --IcePatch2.Endpoints="tcp -h 192.168.0.239 -p 8762" --IcePatch2.InstanceName="ZBPlatForm.IcePatch2" . 操作步骤: 每次升级时,将待升级文件放入服务器的升级目录中,然后使用 icepatch2calc 重新构建校验和文件,再重启 icepatch2server, 然后再用 icepatch2client 进行升级检查; ----------------------------------------------------------------------------------------- 【将IcePatch2集成进IceGrid】 1、icegridnode 同时也充当 icepatch2client 的角色; ==================部署一个 IcePatch2 服务器========================== (1)和应用程序一起部署; (2)应该部署成 on-demand 启动模式; (3)IcePatch2 模板在 config/templates.xml 中,可以复制过来; (4)把 icepatch2server 放到应用程序所在目录中; 2、Distribution Descriptor --- <distrib> ... </distrib> 向节点 icegridnode 提供了升级所需要的细节,如升级服务器icepatch2server端点位置以及指定下载升级目录中的某个子目录; 缺省端点为${application}.IcePatch2/server。<distrib> 中不指定任何子目录的话,节点默认会下载升级文件目录下的全部内容。 <distrib>有两种级别:application级别,server级别 ================================================================================= 配置过程: 1、修改application.xml,加入 <!-- IcePatch2 Server Template --> <server-template id="IcePatch2"> <parameter name="instance-name" default="${application}.IcePatch2"/> <parameter name="endpoints" default="default"/> <parameter name="directory"/> <server id="${instance-name}" exe="icepatch2server" application-distrib="false" activation="on-demand"> <adapter name="IcePatch2" endpoints="${endpoints}"> <object identity="${instance-name}/server" type="::IcePatch2::FileServer"/> </adapter> <properties> <property name="IcePatch2.InstanceName" value="${instance-name}"/> <property name="IcePatch2.Directory" value="${directory}"/> </properties> </server> </server-template> <!-- IcePatch2 Server Template --> ... ... <distrib/> <node name="node1"> <server-instance template="IcePatch2" directory="/tmp/icepatch"/> <server-instance template="EventMngSvr" index="1"/> <server-instance template="DevMngSvr" index="1"/> </node> <node name="node2"> <server-instance template="EventMngSvr" index="2"/> <server-instance template="DevMngSvr" index="2"/> </node> 2、执行 icegridadmin --Ice.Config=config.grid -e "application update ''application.xml''" 3、将待升级的程序放在 IcePatch2.Directory 指定的目录中,依次执行如下操作: icegridadmin中 server disable <appname>.IcePatch2 #禁用 icepatch2server ,防止自动重启 server stop <appname>.IcePatch2 #等价于关闭 icepatch2server 运行 icepatch2calc #重新计算校验和 server enable <appname>.IcePatch2 #等价于重启 icepatch2server server patch -f <servername> #等价于运行 icepatch2client ============================================================================= 升级后,会自动将最新程序保存在节点属性IceGrid.Node.Data指定的目录下的对应子目录下,如果是application 级别的distrib,则下载到 当前目录下的distrib目录中,如果是server 级别的distrib,则下载到servers目录下的<svrname>/distrib目录下。 |
|