IcePatch2学习使用

来源:互联网 发布:淘宝网吉他 编辑:程序博客网 时间:2024/05/24 05:21

【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目录下。