Работа в заблокированной сети
Узлы приложения 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.
Настройка конечной точки службы хранилища для подсети для разрешения доступа из CycleCloud в службу хранилища Azure
Добавьте следующее правило исходящего трафика NSG, чтобы запретить исходящий доступ по умолчанию с помощью тега службы назначения "Интернет":
Приоритет | Имя | Порт | Протокол | Источник | Назначение | Действие |
---|---|---|---|---|---|---|
4000 | BlockOutbound | Любой | Любой | Любой | Интернет | Запрет |
- Добавьте следующие правила для исходящего трафика 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 в виртуальной сети или подсети с исходящим доступом к Интернету обычно требуется следующее:
- Azure Cyclecloud должен быть доступен на виртуальных машинах кластера для полной функциональности. Любое из следующих:
- Виртуальные машины кластера должны иметь возможность подключаться к Azure Cyclecloud напрямую через HTTPS и AMQP или
- Функция Cyclecloud ReturnProxy должна быть включена во время создания кластера, и сам Cyclecloud должен иметь возможность подключаться к виртуальной машине ReturnProxy через SSH.
- Все пакеты программного обеспечения, необходимые кластеру, должны быть следующими:
- Предварительно установлен в пользовательском управляемом образе для виртуальных машин кластера или
- Доступно в зеркальном отображении репозитория пакетов, доступном на виртуальных машинах или
- Скопировано на виртуальную машину из службы хранилища Azure и устанавливается непосредственно проектом Cyclecloud
- Все узлы кластера должны иметь доступ к учетным записям хранения 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.