你当前正在访问 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 管理)
  • login.microsoftonline.com (Azure AD)
  • watson.telemetry.microsoft.com (Azure 遥测)
  • dc.applicationinsights.azure.com (Azure Application Insights)
  • dc.applicationinsights.microsoft.com (Azure Application Insights)
  • dc.services.visualstudio.com (Azure Application 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 网络安全组

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

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

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

    优先度 名称 港口 协议 来源 目的地 行动
    4000 BlockOutbound 任意 任意 任意 Internet 否认
  3. 添加以下 NSG 出站规则, 以允许 按目标服务标记对所需 Azure 服务的出站访问:

    优先度 名称 港口 协议 来源 目的地 行动
    100 AllowAzureStorage 443 TCP 任意 存储 Allow
    101 AllowActiveDirectory 443 TCP 任意 AzureActiveDirectory Allow
    102 AllowAzureMonitor 443 TCP 任意 AzureMonitor Allow
    103 AllowAzureRM 443 TCP 任意 AzureResourceManager Allow

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

打开这些端口以允许群集节点与 CycleCloud 服务器之间的通信:

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

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

注释

Azure CycleCloud 支持在没有出站 Internet 访问的子网中运行群集节点。 但是,这是一个高级主题,通常需要创建自定义映像,或者定制默认的 CycleCloud 群集类型和项目,甚至可能同时需要这两者。

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

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

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

GitHub 中的项目更新

CycleCloud 在 Staging 编排阶段从 GitHub 下载群集项目。 此下载发生在初始安装、升级 CycleCloud 之后或首次启动特定类型的群集之后。 在锁定的环境中,可能会阻止发往 github.com 的 HTTPS 出站流量。 如果阻止此流量,则暂存资源阶段中的节点创建失败。

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

首先,确定群集所需的项目和版本,例如 Slurm 3.0.8。 它通常是给定项目的数据库中的最高版本号。 您可以通过访问 GitHub 项目页面或者查询 CycleCloud 来获取最新版本。

若要查询 CycleCloud(请注意,通常列出了多个版本):

/opt/cycle_server/cycle_server execute 'select Name, Version, Url from cloud.project where name == "slurm" order by Version'

Name = "slurm"
Version = "3.0.8"
Url = "https://github.com/Azure/cyclecloud-slurm/releases/3.0.8"

可以在 发布标记中找到此项目版本和所有依赖项。

可以手动下载所有发布产物,但 CycleCloud CLI 为此提供了一个辅助工具。

首先,使用 CycleCloud CLI 从 GitHub 提取和准备存储库。 此操作与 CycleCloud 在“资源准备阶段”执行的操作相同:

RELEASE_URL="https://github.com/Azure/cyclecloud-slurm/releases/3.0.8"
RELEASE_VERSION="3.0.8"
mkdir "${RELEASE_VERSION}"
cd "${RELEASE_VERSION}"
# Download release artifacts from githug (on a machine with github access)
cyclecloud project fetch "${RELEASE_URL}" .

# Create a tarball with the project files pre-staged
cyclecloud project build
mv ./build/slurm "./${RELEASE_VERSION}"
tar czf "slurm-${RELEASE_VERSION}.tgz" ./blobs "./${RELEASE_VERSION}"

接下来,将打包的项目 tarball 复制到 CycleCloud 服务器并提取它:

#... copy the "slurm-${RELEASE_VERSION}.tgz" file to the Cyclecloud server in /tmp
sudo -i
mkdir -p /opt/cycle_server/work/staging/projects/slurm
cd /opt/cycle_server/work/staging/projects/slurm
tar xzf "/tmp/slurm-${RELEASE_VERSION}.tgz"
chown -R cycle_server:cycle_server /opt/cycle_server/work/staging

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