我需要在Service Fabric上同时运行多个版本的应用程序。
1.0 1.1 ....
我需要将它们保持在线状态,而不是更新和替换版本。
有可能吗?
谢谢!
答案 0 :(得分:5)
正如Matt Thalman所说,可以在Service Fabric集群中运行相同应用程序的不同版本。
我已使用示例应用WordCount(http://aka.ms/servicefabric-wordcountapp)进行了测试。要详细了解如何下载应用并进行部署,请参阅https://azure.microsoft.com/en-us/documentation/articles/service-fabric-get-started-with-a-local-cluster/
我已将WordCount复制为WordCountV1和WordCountV2。
然后我更改了 /ApplicationManifest.xml ,使每个包上都有不同的ApplicationTypeVersion。在Cluster Manager中显示应用程序的当前版本是必要的,因为两个应用程序都按ApplicationTypeName分组显示。
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="WordCount" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="WordCount" ApplicationTypeVersion="2.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
然而,我已将 /WordCountWebServicePkg/Code/wwwroot/index.html 文件更改为在两个包上都有不同的内容。
必须指定不同的端点,因此我更改了两个包中的文件 /WordCountWebServicePkg/ServiceManifest.xml 以响应不同的端口
<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8081" />
<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8082" />
最后一步是使用不同的ApplicationName来发布包:
Publish-NewServiceFabricApplication -ApplicationPackagePath c:\ServiceFabric\WordCountV1.sfpkg -App
licationName "fabric:/WordCountV1"
Publish-NewServiceFabricApplication -ApplicationPackagePath c:\ServiceFabric\WordCountV2.sfpkg -App
licationName "fabric:/WordCountV2"
这两个应用程序是并排发布的,我们可以通过它更好地控制版本更新。
希望它有所帮助!
PS:Azure Service Fabric文档团队,这个主题可以很好地在公共文档中
答案 1 :(得分:1)
是的,只要您有不同的应用程序名称,就可以执行此操作。应用程序名称在Service Fabric应用程序(.sfproj)项目的应用程序参数文件中指定。当Visual Studio调用Service Fabric的New-ServiceFabricApplication
PowerShell cmdlet时,将使用该应用程序名称值。这意味着只要具有不同的应用程序名称,您就可以在具有相同应用程序类型和版本的群集中运行两个应用程序。或者,如果您愿意,可以使用不同版本的应用程序类型。只要它们具有不同的应用程序名称,就没关系;它们被视为独特的应用程序。