你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在锁定的网络中操作

CycleCloud 应用程序和群集节点可以在具有有限 Internet 访问的环境中运行,但必须保持打开的 TCP 端口数量最少。

在锁定的网络中安装 Azure CycleCloud

CycleCloud VM 必须能够连接到多个 Azure API,以协调群集 VM 并向 Azure Active Directory 进行身份验证。 由于这些 API 使用 HTTPS,CycleCloud 需要对以下项进行出站 HTTPS 访问:

  • management.azure.com Azure ARM 管理) (
  • azure AD) login.microsoftonline.com (
  • watson.telemetry.microsoft.com azure 遥测) (
  • dc.applicationinsights.azure.com (Azure 应用程序 Insights)
  • dc.applicationinsights.microsoft.com (Azure 应用程序 Insights)
  • dc.services.visualstudio.com (Azure 应用程序 Insights)
  • ratecard.azure-api.net Azure 价格数据) (

管理 API 以区域方式托管,可在 此处找到公共 IP 地址范围。

可在 此处找到 Azure AD 登录名是 Microsoft 365 常见 API 和 IP 地址范围的一部分。

可在 此处找到 Azure Insights 和 Log Analytics IP 地址范围。

Azure CycleCloud 必须能够访问 Azure 存储帐户。 提供对此服务的专用访问以及任何其他受支持的 Azure 服务的建议方法是通过虚拟网络服务终结点

如果使用网络安全组或Azure 防火墙来限制对所需域的出站访问,则可以将 Azure Cyclecloud 配置为通过 HTTPS 代理路由所有请求。 请参阅: 使用 Web 代理

为 CycleCloud VM 配置 Azure 网络安全组

在不配置 Azure 防火墙 或 HTTPS 代理的情况下限制 CycleCloud VM 的出站 Internet 访问的一种方法是为 CycleCloud VM 的子网配置严格的 Azure 网络安全组。 最简单的方法是使用子网或 VM 级别的网络安全组中的服务标记来允许所需的出站 Azure 访问。

  1. 为子网配置 存储服务终结点 ,以允许从 CycleCloud 访问 Azure 存储

  2. 使用“Internet”目标服务标记,将以下 NSG 出站规则添加到拒绝出站访问:

优先级 名称 端口 协议 目标 操作
4000 BlockOutbound 任意 任意 任意 Internet 拒绝
  1. 添加以下 NSG 出站规则, 以允许 按目标服务标记对所需的 Azure 服务进行出站访问:
优先级 名称 端口 协议 目标 操作
100 AllowAzureStorage 443 TCP 任意 存储 Allow
101 AllowActiveDirectory 443 TCP 任意 AzureActiveDirectory 允许
102 AllowAzureMonitor 443 TCP 任意 AzureMonitor Allow
103 AllowAzureRM 443 TCP 任意 AzureResourceManager 允许

群集节点与 CycleCloud 之间的内部通信

需要打开这些端口,以便允许群集节点和 CycleCloud 服务器之间的通信:

名称 目标 服务 协议 端口范围
amqp_5672 群集节点 CycleCloud AMQP TCP 5672
https_9443 群集节点 CycleCloud HTTPS TCP 9443

在锁定的网络中启动 Azure CycleCloud 群集

注意

目前完全支持在子网中运行无出站 Internet 访问的群集节点,但它是一个高级主题,通常需要自定义映像或自定义默认 CycleCloud 群集类型和项目或两者。

我们正在积极更新群集类型和项目,以消除大部分或全部工作。 但是,如果在锁定的环境中遇到群集类型或项目故障,请考虑打开支持请求以获取帮助。

在具有出站 Internet 访问的虚拟网络或子网中运行 VM 或 Cyclecloud 群集通常需要以下各项:

  1. 必须从群集 VM 访问 Azure Cyclecloud 才能获得完整功能。 可以是:
    1. 群集 VM 必须能够通过 HTTPS 和 AMQP 直接连接到 Azure Cyclecloud,或者
    2. 必须在群集创建时启用 Cyclecloud ReturnProxy 功能,Cyclecloud 本身必须能够通过 SSH 连接到 ReturnProxy VM
  2. 群集所需的所有软件包必须是:
    1. 在群集 VM 的自定义托管映像中预安装,或
    2. 在可从 VM 访问的包存储库镜像中可用,或
    3. 从 Azure 存储复制到 VM,并由 Cyclecloud 项目直接安装
  3. 所有群集节点都必须能够访问 Azure 存储帐户。 为此服务提供专用访问和任何其他受支持的 Azure 服务的建议方法是为 Azure 存储启用虚拟网络服务终结点

GitHub 中的项目汇报

Cyclecloud 将在“过渡”业务流程阶段从 GitHub 下载群集项目。 初始安装、升级 Cyclecloud 之后或首次启动特定类型的群集后,将进行此下载。 在锁定的环境中,可能会阻止发往 github.com 的 HTTPS 出站流量。 在这种情况下,暂存资源阶段的节点创建将失败。

如果在创建第一个节点期间可以暂时打开对 GitHub 的访问,CycleCloud 将为所有后续节点准备本地文件。 如果无法进行临时访问,则可以从另一台计算机下载必要的文件并将其复制到 CycleCloud。

首先确定群集需要的项目和版本,例如 Slurm 2.5.0。 它通常是给定项目的数据库中的最高版本号。

/opt/cycle_server/cycle_server execute 'select * from cloud.project where name == "slurm"'

AdType = "Cloud.Project"
Version = "2.5.0"
ProjectType = "scheduler"
Url = "https://github.com/Azure/cyclecloud-slurm/releases/2.5.0"
AutoUpgrade = false
Name = "slurm"

此项目版本和所有依赖项都位于 [发布标记] () https://github.com/Azure/cyclecloud-slurm/releases/tag/2.5.0 。 必须下载发布的所有项目。 首先下载代码项目,并为其他依赖项创建 Blob 目录。

wget https://github.com/Azure/cyclecloud-slurm/archive/refs/tags/2.5.0.tar.gz
tar -xf 2.5.0.tar.gz 
cd cyclecloud-slurm-2.5.0 && mkdir blobs 
#... download all other release artifacts to the /blobs directory with wget ...
wget -P "blobs/" https://github.com/Azure/cyclecloud-slurm/releases/download/2.6.1/cyclecloud_api-8.1.0-py2.py3-none-any.whl
#... copy all the files to the Cyclecloud server
#... then on the Cyclecloud server:
cyclecloud project build
mkdir -p /opt/cycle_server/work/staging/projects/slurm/2.5.0
mkdir -p /opt/cycle_server/work/staging/projects/slurm/blobs
cp build/slurm/* /opt/cycle_server/work/staging/projects/slurm/2.5.0/
cp blobs/* /opt/cycle_server/work/staging/projects/slurm/blobs/
chown -R cycle_server:cycle_server /opt/cycle_server/work/staging

在本地暂存这些文件后,Cyclecloud 将检测这些文件,并且不会尝试从 GitHub 下载这些文件。