Поделиться через


Работа в заблокированной сети

Узлы приложения CycleCloud и кластера могут работать в средах с ограниченным доступом к Интернету, хотя существует минимальное количество TCP-портов, которые должны оставаться открытыми.

Установка Azure CycleCloud в заблокированной сети

Виртуальная машина CycleCloud должна иметь возможность подключаться к ряду API Azure для оркестрации виртуальных машин кластера и проверки подлинности в 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)
  • dc.applicationinsights.microsoft.com (аналитика приложение Azure)
  • dc.services.visualstudio.com (приложение Azure Insights)
  • ratecard.azure-api.net (данные о ценах Azure)

API управления размещается в регионе, а диапазоны общедоступных IP-адресов можно найти здесь.

Имя входа Azure AD входит в общие API-интерфейсы Microsoft 365 и диапазоны IP-адресов для этой службы.

Диапазоны IP-адресов Azure Insights и Log Analytics можно найти здесь.

Azure CycleCloud должен иметь доступ к учетным записям хранения Azure. Рекомендуемый способ предоставления частного доступа к этой службе и любой другой поддерживаемой службы Azure — через виртуальная сеть конечные точки службы.

При использовании групп безопасности сети или Брандмауэр Azure для ограничения исходящего доступа к необходимым доменам можно настроить Azure Cyclecloud для маршрутизации всех запросов через прокси-сервер HTTPS. См. статью "Использование веб-прокси"

Настройка группы безопасности сети Azure для виртуальной машины CycleCloud

Один из способов ограничить исходящий доступ к Интернету с виртуальной машины CycleCloud без настройки Брандмауэр Azure или прокси-сервера HTTPS — настроить строгую группу безопасности сети Azure для подсети виртуальной машины CycleCloud. Самый простой способ сделать это — использовать теги служб в подсети или группе безопасности сети на уровне виртуальной машины, чтобы разрешить необходимый исходящий доступ к Azure.

  1. Настройка конечной точки службы хранилища для подсети для разрешения доступа из CycleCloud в службу хранилища Azure

  2. Добавьте следующее правило исходящего трафика NSG, чтобы запретить исходящий доступ по умолчанию с помощью тега службы назначения "Интернет":

Приоритет Имя Порт Протокол Источник Назначение Действие
4000 BlockOutbound Любой Любой Любой Интернет Запрет
  1. Добавьте следующие правила для исходящего трафика 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 в заблокированной сети

Примечание

Запущенные узлы кластера в подсети без исходящего доступа к Интернету полностью поддерживаются сегодня, но это расширенная тема, которая часто требует пользовательского образа или настройки типов кластеров CycleCloud по умолчанию и проектов.

Мы активно обновляем типы и проекты кластера, чтобы исключить большинство или все эти действия. Но если в заблокированной среде возникают сбои с типом кластера или проектом, обратитесь к запросу на поддержку.

Для запуска виртуальных машин или кластеров Cyclecloud в виртуальной сети или подсети с исходящим доступом к Интернету обычно требуется следующее:

  1. Azure Cyclecloud должен быть доступен на виртуальных машинах кластера для полной функциональности. Любое из следующих:
    1. Виртуальные машины кластера должны иметь возможность подключаться к Azure Cyclecloud напрямую через HTTPS и AMQP или
    2. Функция Cyclecloud ReturnProxy должна быть включена во время создания кластера, и сам Cyclecloud должен иметь возможность подключаться к виртуальной машине ReturnProxy через SSH.
  2. Все пакеты программного обеспечения, необходимые кластеру, должны быть следующими:
    1. Предварительно установлен в пользовательском управляемом образе для виртуальных машин кластера или
    2. Доступно в зеркальном отображении репозитория пакетов, доступном на виртуальных машинах или
    3. Скопировано на виртуальную машину из службы хранилища Azure и устанавливается непосредственно проектом Cyclecloud
  3. Все узлы кластера должны иметь доступ к учетным записям хранения Azure. Рекомендуемый способ предоставить частный доступ к этой службе и любой другой поддерживаемой службе Azure — включить конечную точку службы виртуальная сеть для службы хранилища Azure.

Project Обновления из GitHub

Cyclecloud скачит проекты кластера с GitHub на этапе оркестрации промежуточного хранения. Это скачивание произойдет после первоначальной установки, после обновления Cyclecloud или при первом запуске кластера определенного типа. В заблокированной среде исходящий трафик HTTPS к github.com может быть заблокирован. В таком случае создание узла на этапе промежуточных ресурсов завершится ошибкой.

Если во время создания первого узла можно временно открыть доступ к 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). Необходимо скачать все артефакты для выпуска. Сначала скачайте артефакт кода и создайте каталог больших двоичных объектов для дополнительных зависимостей.

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.