【问题标题】:Control the services in Azure SF application控制 Azure SF 应用程序中的服务
【发布时间】:2017-04-21 15:29:45
【问题描述】:

我的 azure SF 应用程序有两个服务。当我将应用部署到本地集群时,是否可以只部署其中一项服务,而不是同时部署两项(服务)?

【问题讨论】:

  • 基本上,我想动态控制应该与应用程序一起部署的服务,就像程序的运行时参数一样。
  • 我建议您通过点击底部的编辑将该信息添加到您的问题中

标签: azure microservices azure-service-fabric


【解决方案1】:

是的,您可以非常明确地控制它。

在您的 ApplicationManifest 中,您添加了许多 DefaultServices,这些是从添加到您的应用程序中的服务自动生成的。从 Visual Studio(或 VSTS)部署时,您(隐式)使用自动添加到应用程序项目的 Deploy-FabricApplication.ps1 脚本。这个脚本同时做很多事情。即:

  1. 读取并解析发布者配置文件以获取所选目标(例如 Cloud、Local1Node、Local2Node 等)的参数值

  2. 将具有新版本号的 ApplicationType 的新映像版本上传到集群映像存储。

  3. 根据新镜像和新版本创建或升级应用实例,并为ApplicationManifest中的每个DefaultService创建或升级实例

现在,您可以自己完成所有这些步骤,具体来说,您可以选择为哪些服务启动实例。

您可以使用PowerShell (or CLI) cmdlets 或通过.NET 代码使用FabricClient

您需要做的是(对于 PowerShell,但对于 FabricClient 类似)是:

尽管这比仅使用提供的 Deploy-FabricApplication.ps1 需要(很多)工作,但它可以让您完全控制服务的部署方式和时间。也有必要这样做,例如,如果您想在同一个集群上为同一个应用程序运行多个租户,或者在同一个集群上运行同一个应用程序的多个版本/环境(例如,在同一个集群上运行开发和测试集群)

【讨论】:

  • 感谢您提供详细的步骤和链接!因此,在创建实例时,我想知道是否可以在发布配置文件中将服务的实例计数保持为“0”(将其他服务的实例计数保持为 1),以便不部署一个特定的服务,即使它存在于 VS 应用程序项目中。
  • 我不确定这是否可行,可能有一个检查可以阻止它,尽管我没有特别尝试过。但是,有一项检查会阻止您创建比节点更多的实例,因此也可能有一个用于此目的的检查……但是,您将无法对有状态服务使用相同的方法,因为您需要确定分区在部署时计算服务。您不应尝试在部署后更改它,因为它会更改该服务的状态在现有分区中的持久化方式。
  • 您也可以在没有默认服务的情况下部署您的应用程序,这需要您在创建应用程序后显式创建服务。看这个例子:azure.microsoft.com/en-us/resources/samples/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多