创建应用程序实例(在 Service Fabric Cluster Explorer 中)忽略本地计算机上的实例数

Create app instance (in service fabric cluster explorer) ignores number of instances on local machine

  1. 使用 5.1.163 版本的 service fabric 运行 次。
  2. 使用一个无状态 Web api 创建了一个服务结构应用程序(即使用 owin 通信侦听器)。
  3. 修改了生成的代码,以便侦听端点包含分区 id/instance id/new_guid(就像有状态服务的情况一样)。这应该允许我创建另一个应用程序实例,以便我可以在应用程序级别拥有多租户。
  4. 默认情况下,Local.xml 文件为此服务设置为 1 个实例。
  5. 已按 F5 将其部署到本地计算机。已验证它仅部署到一个实例。
  6. 已验证服务工作正常。
  7. 导航到本地服务架构资源管理器并单击 Cluster/Application/AppType 节点。单击 'Create app instance'。
  8. 它成功创建了第二个应用程序实例。
  9. 但是在这个新实例中,服务部署到所有 5 个节点。

我原以为它只将服务实例部署在一个节点上。这是一个错误吗?但只在这个版本的服务结构中?

当您使用 Visual Studio(或从 PowerShell)部署 Service Fabric 应用程序时,您使用为您的应用程序生成并在 SF 项目下的 /scripts 中找到的 Deploy-FabricApplication.ps1。这个脚本做了两件事(主要):

  1. Create/update 申请类型
  2. 创建应用程序类型的 new/upgrade 现有实例

第二部分类似于您在 SF Explorer 中所做的,除了这一部分还考虑了您提供的发布者配置文件。 PS-脚本实际上读取您的发布者资料 xml 文件并将其中的任何参数提取到哈希集(字典)并将其作为参数传递到步骤 2.

您可以使用 PS cmdlet 创建 SF 应用程序类型的实例(或者您可以使用 FabricClient)。以下命令执行此操作:New-ServiceFabricApplication。在这里,您有机会提供自己的应用程序参数,包括 instance count 用于新应用程序实例中的服务(如果您的应用程序清单中有动态参数)。

因此,当您使用 SF 资源管理器创建新的应用程序实例时,您无法控制该实例的创建方式,它始终使用直接在 ApplicationManifest.xml 中指定的默认参数值,而不是您拥有的值在您的发布者配置文件(local1、local5、cloud 等)中指定。

为了控制创建,运行 New-ServiceFabricApplication 将您的参数作为哈希集。