在 Windows 开发人员计算机上通过 WSL2 设置 Linux Service Fabric 群集

本文档介绍如何在 Windows 开发计算机上通过 WSL2 设置本地 Linux Service Fabric 群集。 设置本地 Linux 群集有助于快速测试在 Windows 计算机上开发的面向 Linux 群集的应用程序。

先决条件

基于 Linux 的 Service Fabric 群集不会直接在 Windows 上运行,但为了启用跨平台原型制作,我们提供了一种方法,通过 Windows 的 WSL2(适用于 Linux 的 Windows 子系统)在 Linux 分发版中部署 Service Fabric 群集。

准备事项:

  • WSL2 在 Windows 中设置,并确保 WSL 2 作为默认版本
  • 设置 WSL2 时,从 Microsoft Store 设置 Ubuntu 18.04 Linux 分发版

提示

若要在 Windows 计算机上安装 WSL2,请按 WSL2 文档中的步骤操作。 安装后,请确保安装 Ubuntu-18.04,使其成为默认分发版,并且应启动并运行。

在 Linux 分发版中设置 Service Fabric SDK

无法像在标准 Linux OS 中那样在 WSL2 Linux 分发版中完成 Service Fabric 设置。 因为 systemd as PID1 不在 VM 内部运行,而 systemd as PID1 是 SF SDK 成功运行的先决条件。 若要启用 systemd as PID1,systemd-genie 用作解决方法。 有关 systemd-genie 的更多详细信息,请参阅 systemd genie 安装脚本安装和手动安装步骤,包括安装 systemd-genie 和 Service Fabric sdk。

脚本安装

为方便起见,我们提供了一个脚本用于连同 sfctl CLI 一起安装 Service Fabric 通用 SDK。 运行该脚本即认为你同意所要安装的所有软件的许可条款。 也可运行下一部分的手动安装步骤,这会显示关联的许可证以及要安装的组件。

成功运行脚本后,可以跳转到设置本地群集

sudo curl -s https://raw.githubusercontent.com/Azure/service-fabric-scripts-and-templates/master/scripts/SetupServiceFabric/SetupServiceFabric.sh | sudo bash

手动安装

有关手动安装 Service Fabric 运行时和通用 SDK,请遵照本指南的余下部分操作。

  1. 打开终端。

  2. 登录到 WSL2 Linux 分发版

  3. 设置 systemd-genie,如 systemd genie 设置 中所述,(如果 systemd-genie 已设置,则可以跳转到下一步)

  4. 使用 genie -s 进入 Genie 命名空间

  5. 在 Genie 命名空间中,还可以按照脚本安装或手动安装步骤中的“设置 Linux 本地群集”中所述安装 SF SDK

  6. 通过在 /etc/sudoers 中制作一个条目 <USERNAME> ALL = (ALL) NOPASSWD:ALL 来为当前用户提供 sudo 权限

设置本地群集

建议从主机窗口管理 WSL2 VM 内的 Service Fabric

  1. 在 Windows 主机中安装 Service Fabric SDK(6.0 或更高版本)

  2. 在 Windows中,可以使用作为 SF SDK 的一部分提供的 ServiceFabricLocalClusterManager 工具来管理群集

  3. 仅当 a 时启用用于管理 Linux 本地群集的选项。 WSL2 VM 正在运行,b。 Systemd-genie、servicefabricruntime 和 servicefabricsdkcommon 包在 VM 和 c 中正确安装。 Systemd-genie 处于运行状态。 可以从此工具设置或切换到 Linux 本地群集。

  4. 设置 Linux 群集的另一种方法是使用作为 SF SDK 一部分提供的群集设置脚本进行部署。

  5. 打开 Web 浏览器,转到 Service Fabric Explorerhttp://localhost:19080。 群集启动后,可以看到 Service Fabric Explorer 仪表板。 群集设置可能需要几分钟时间。 如果浏览器无法打开该 URL 或者 Service Fabric Explorer 未显示群集,请等待几分钟,然后重试。 还可以在 SF SDK 中提供的 ServiceFabricExplorer 中看到群集。

  6. 群集启动并运行后,可以在 PowerShell 中连接到本地群集和Visual Studio。

使用自定义 ServiceFabric 和 ServieFabricSdkCommon Debian 包手动安装

若要从自定义或下载的 debian 包手动安装 Service Fabric,请按照本指南的其余部分进行操作。

  1. 打开终端。

  2. 登录到 WSL2 Linux 分发版

  3. 克隆设置文件

sudo curl -s https://raw.githubusercontent.com/Azure/service-fabric-scripts-and-templates/master/scripts/SetupServiceFabric/SetupServiceFabric.sh > SetupServiceFabric.sh
  1. 使文件可执行
sudo chmod +x SetupServiceFabric.sh
  1. 使用本地 debian 包路径运行设置脚本。 确保提供的路径有效。 下面是一个示例:
sudo ./SetupServiceFabric.sh --servicefabricruntime=/mnt/c/Users/testuser/Downloads/servicefabric.deb --servicefabricsdk=/mnt/c/Users/testuser/Downloads/servicefabric_sdkcommon.deb

已知限制

以下是在 Linux 分发版中运行的本地群集的已知限制:

  • 目前仅支持 Ubuntu-18.04 分发版。
  • 若要获得本地群集管理器和 Visual Studio 的无缝体验,建议从 Windows 主机中的 PowerShell 脚本或 LocalClusterManager 管理群集。

常见问题

  1. SF 本地群集设置支持哪些 linux 分发版?
    目前,Linux 本地群集仅支持 Ubuntu-18.04。

  2. Windows 和 Linux SF 群集是否可以与 WSL2 安装程序并行运行?
    否,一次只能在主机或来宾 VM 中运行一个本地群集。

  3. 如何部署一个节点 linux 本地群集?
    可以从菜单选项从本地群集管理器部署一个节点或五个节点 linux 本地群集。 从安装脚本进行部署时,默认部署五个节点群集,并且应传递一个节点群集 CreateOneNodeCluster。

  4. 如何在 PowerShell 和 Visual Studio 连接到 Linux 本地群集?
    如果 Linux 本地群集已启动并运行,connect-servicefabriccluster cmdlet 应自动连接到此群集。 类似的 Visual Studio 会自动检测此本地群集。 还可以通过在 PowerShell 或 Visual Studio 中提供群集终结点来连接此群集。

  5. SF 群集数据位于 Linux 本地群集的哪个位置?
    如果使用 Ubuntu-18.04 分发版,则 SF 数据位于 Windows 主机中的 \wsl$\Ubuntu-18.04\home\sfuser\sfdevcluster。

后续步骤