有关 Service Fabric 网格的常见问题

重要

Azure Service Fabric 网格的预览版已停用。 不允许再通过 Service Fabric 网格 API 进行新的部署。 对现有部署的支持将会持续到 2021 年 4 月 28 日。

有关详细信息,请参阅 Azure Service Fabric 网格预览版停用

Azure Service Fabric 网格是一个完全托管的服务,由此开发者可部署微服务应用程序,而无需管理虚拟机、存储或网络。 本文提供常见问题的解答。

如何报告问题或提问?

service-fabric-mesh-preview GitHub 存储库中询问问题、从 Microsoft 工程师处获得解答、报告问题。

配额和成本

参与预览版的成本是多少?

当前,将应用程序或容器部署到网格预览版不收取任何费用。 请注意 5 月的更新,可能会开始收费。 但是,我们鼓励将所部署的资源删除,不必一直保持运行,除非正在主动测试。

内核和 RAM 的数量是否有配额限制?

是的。 每个订阅的配额是:

  • 应用程序的数量:5 个
  • 每个应用程序的内核数:12 个
  • 每个应用程序的总 RAM:48 GB
  • 网络和 Ingress 终结点:5 个
  • 可以附加的 Azure 卷数:10 个
  • 服务副本的数量:3 个
  • 可以部署的最大容器限制为 4 个内核,16GB RAM。
  • 可以将部分核心以 0.5 个核心的增量分配给容器(最多 6 个核心)。

可以将已部署应用程序保留多长时间?

当前,我们将应用程序的生存期限制为两天。 这是为了充分利用分配给预览版的空闲核心。 因此,仅允许你将给定的部署持续运行 48 小时,经过该时间量后,就会关闭该部署。

如果看到此情况发生,可以通过在 Azure CLI 中运行 az mesh app show 命令来验证系统是否已将其关闭。 检查是否返回了 "status": "Failed", "statusDetails": "Stopped resource due to max lifetime policies for an application during preview. Delete the resource to continue."

例如:

az mesh app show --resource-group myResourceGroup --name helloWorldApp
{
  "debugParams": null,
  "description": "Service Fabric Mesh HelloWorld Application!",
  "diagnostics": null,
  "healthState": "Ok",
  "id": "/subscriptions/1134234-b756-4979-84re-09d671c0c345/resourcegroups/myResourceGroup/providers/Microsoft.ServiceFabricMesh/applications/helloWorldApp",
  "location": "eastus",
  "name": "helloWorldApp",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "serviceNames": [
    "helloWorldService"
  ],
  "services": null,
  "status": "Failed",
  "statusDetails": "Stopped resource due to max lifetime policies for an application during preview. Delete the resource to continue.",
  "tags": {},
  "type": "Microsoft.ServiceFabricMesh/applications",
  "unhealthyEvaluation": null
}

若要删除资源组,请使用 az group delete <nameOfResourceGroup> 命令。

部署

支持哪些容器映像?

如果是在 Windows Fall Creators Update(版本 1709)计算机上进行开发,则只能使用 Windows 1709 版本的 Docker 映像。

如果是在 Windows 10 April 2018 Update(版本 1803)计算机上进行开发,则可以使用 Windows 1709 或 Windows 1803 版本的 Docker 映像。

以下容器 OS 映像可以用来部署服务:

  • Windows - windowsservercore 和 nanoserver
    • Windows Server 1709
    • Windows Server 1803
    • Windows Server 1809
    • Windows Server 2019 LTSC
  • Linux
    • 无已知限制

注意

适用于网格的 Visual Studio 工具尚不支持部署到 Windows Server 2019 和 1809 容器。

可以部署哪些类型的应用程序?

可以部署在容器中运行、符合应用程序资源对应限制条件的任何应用程序(请参阅上文有关配额的详细信息)。 如果检测到正在使用网格来运行非法工作负载或滥用系统(即挖掘),我们将保留终止部署并将订阅加入阻止列表,禁止其在服务上运行的权利。 如果对运行特定工作负载有任何疑问,请与我们联系。

开发人员体验问题

来自容器的 DNS 解析不起作用

在某些情况下,从容器到 Service Fabric DNS 服务的传出 DNS 查询可能会失败。 正在调查此问题。 缓解措施:

  • 使用 Windows Fall Creators 更新(版本 1709)或更高版本作为基容器映像。
  • 如果单独的服务名称无效,请尝试完全限定的名称:ServiceName.ApplicationName。
  • 在服务的 Docker 文件中添加 EXPOSE <port>,其中的端口是在其上公开服务的端口。 例如:
EXPOSE 80

DNS 的工作方式不同于 Service Fabric 开发群集的以及网格中的工作方式

可能需要在本地开发群集和 Azure 网格中以不同的方式引用服务。

在本地开发群集中,请使用 {serviceName}.{applicationName}。 在 Azure Service Fabric 网格中,请使用 {servicename}

Azure 网格目前不支持跨应用程序进行 DNS 解析。

有关在 Windows 10 上运行 Service Fabric 开发群集的其他已知 DNS 问题,请参阅:调试 Windows 容器已知 DNS 问题

网络

在本地计算机上运行应用时,ServiceFabric 网络 NAT 可能会消失。 若要诊断是否发生了这种情况,请从命令提示符处运行以下命令:

docker network ls,然后注意 servicefabric_nat 是否已列出。 如果没有列出,则请运行以下命令:docker network create -d=nat --subnet 10.128.0.0/24 --gateway 10.128.0.1 servicefabric_nat

这样就可以解决问题,即使应用已部署到本地且处于不正常状态。

运行多个应用的问题

可能会遇到需要跨所有应用程序解决的 CPU 可用性和限制问题。 缓解措施:

  • 创建一个五节点群集。
  • 在已部署应用中,减少服务的 CPU 使用量。 例如,在服务的 service.yaml 文件中,将 cpu: 1.0 更改为 cpu: 0.5

不能将多个应用程序部署到一个单节点群集。 缓解措施:

  • 将多个应用部署到一个本地群集时,请使用一个五节点群集。
  • 删除当前未测试的应用。

VS 工具对 Windows 容器的支持有限

Visual Studio 工具目前仅支持使用 Windows Server 1709 和 1803 的基本操作系统版本来部署 Windows 容器。

功能差距和其他已知问题

部署应用程序后,与其相关联的网络资源没有 IP 地址

有一个已知的问题,即 IP 地址不会立即变得可用。 几分钟后检查网络资源的状态,查看相关的 IP 地址。

应用程序无法访问正确的网络/卷资源

在应用程序模型中,请使用网络和卷的完整资源 ID 来访问相关资源。 下面是快速入门示例中的一个示例:

"networkRefs": [
    {
    "name":  "[resourceId('Microsoft.ServiceFabric/networks', 'SbzVotingNetwork')]" 
    }
]

向外扩展时,所有的容器都受到影响,包括正在运行的容器

这是一个 Bug,目前我们正在实现一个修复程序。

后续步骤

若要详细了解 Service Fabric 网格,请阅读概述