azure-service-fabric - 差异化包装

标签 azure-service-fabric

升级应用程序时,Test-ServiceFabricApplicationPackage命令会为版本号未更改的每个代码包抛出错误(即内容已更改,即使代码未更改)。我知道有一个功能可以创建部分包,但我无法使用它。我的问题是:

  • 如何检查代码包的内容是否有变化?二进制比较?
  • 如何构建部分包(VS构建包后删除Code目录?编辑ServiceManifest.xml文件?)
  • 如何运行 Test-ServiceFabricApplicationPackage (图像存储 URL 是什么?如何将该参数传递给标准部署脚本?)

  • 我很感激一个彻底的例子。

    最佳答案

    如果你想做部分升级,我就是这样做的:

    给定的

    app1 1.0.0
      service1 1.0.0
        code 1.0.0
        config 1.0.0
      service2 1.0.0
        code 1.0.0
        config 1.0.0
    

    并且您只想将服务 1 更新到版本 1.0.1,如下所示:
    app1 1.0.1
      service1 1.0.1
        code 1.0.1
        config 1.0.1
      service2 1.0.0
        code 1.0.0
        config 1.0.0
    

    在您的 Service1 中,更新 ServiceManifest.xml 以获得正确的版本号(服务本身和您要升级的不同包)。
    然后,在您的 service2 文件夹中,删除除 ServiceManifest.xml 之外的所有内容。

    在您的 ApplicationManifest.xml 中,您应该将 Service2 的 ServiceManifestImport 保持在 1.0.0 版。还要更新 Service1 的 ServiceManifestImport 的版本号。

    完成后,您应该能够执行以下操作:
    Test-ServiceFabricApplicationPackage $packagePath -ImageStoreConnectionString $ImageStoreConnectionString
    

    验证包是否有效。它的作用(据我所知)是它使用本地包和当前部署的包,然后这两个组合应该等于一个有效的完整包。

    所以,基本上,唯一改变的是:
  • 您删除了包裹中不需要的东西(但您保留
    ServiceManifest.xml)
  • 您更新已更改的服务中的版本号
  • 您更新应用程序 list 中的应用程序和更改的服务的版本号。

  • 另外,请参阅此文档:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-application-upgrade-advanced/#upgrade-with-a-diff-package

    关于让图像存储用于 Test-ServiceFabricApplicationPackage 调用(您可以通过查看默认部署脚本找到所有内容,但这是您需要的):
    Open powershell
    Connect to your cluster (Connect-ServiceFabricCluster ...)
    Execute the following commands:
    
    $ClusterManifestRaw = Get-ServiceFabricClusterManifest
    $ClusterManifestXml = [xml]$ClusterManifestRaw
    $ManagementSection = $ClusterManifestXml.ClusterManifest.FabricSettings.Section | ? { $_.Name -eq "Management" }
    $ImageStoreConnectionString = $ManagementSection .ChildNodes | ? { $_.Name -eq "ImageStoreConnectionString" } | Select-Object -Expand Value
    

    关于azure-service-fabric - 差异化包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34873891/

    相关文章:

    azure - 在服务之间共享 Azure Service Fabric 可靠队列

    powershell - 由于 Test-ServiceFabricClusterConnection,发布到 Service Fabric 群集失败

    c# - 如何在 C# 中实现一个 token 系统来限制处理器/IO 繁重的多线程任务的并发性?

    azure - 本地集群不允许本地 Service Fabric 集群中具有不同版本的相同应用程序类型

    Azure Fabric SDK webapi 无法访问

    c# - 外部客户端无法访问 Azure Service Fabric 上的 WCF 通信监听器

    c# - 服务错误 Service Fabric 缺少代码

    azure - Azure Service Fabric 应用程序中的地理冗余

    azure-service-fabric - 影响应用程序版本历史记录

    azure-service-fabric - 从结构外部使用 Service Fabric CommunicationClient 和 servicePartitionClient?