你当前正在访问 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 访问。
为子网配置 存储服务终结点 ,以允许从 CycleCloud 访问 Azure 存储
使用“Internet”目标服务标记,将以下 NSG 出站规则添加到拒绝出站访问:
优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 操作 |
---|---|---|---|---|---|---|
4000 | BlockOutbound | 任意 | 任意 | 任意 | Internet | 拒绝 |
- 添加以下 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 群集通常需要以下各项:
- 必须从群集 VM 访问 Azure Cyclecloud 才能获得完整功能。 可以是:
- 群集 VM 必须能够通过 HTTPS 和 AMQP 直接连接到 Azure Cyclecloud,或者
- 必须在群集创建时启用 Cyclecloud ReturnProxy 功能,Cyclecloud 本身必须能够通过 SSH 连接到 ReturnProxy VM
- 群集所需的所有软件包必须是:
- 在群集 VM 的自定义托管映像中预安装,或
- 在可从 VM 访问的包存储库镜像中可用,或
- 从 Azure 存储复制到 VM,并由 Cyclecloud 项目直接安装
- 所有群集节点都必须能够访问 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 下载这些文件。