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


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

Узлы приложения 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 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 является частью распространенных API Microsoft 365. Здесь можно найти диапазоны IP-адресов для этой службы.

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

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

Если вы используете группы безопасности сети или брандмауэр Azure для ограничения исходящего доступа к обязательным доменам, можно настроить Azure CycleCloud для маршрутизации всех запросов через прокси-сервер HTTPS. Дополнительные сведения см. в разделе "Использование веб-прокси".

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

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

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

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

    Приоритет Имя Порт Протокол Исходный материал Назначение Действие
    4000 Блокировка исходящих Любое Любое Любое Интернет Отрицать
  3. Добавьте следующие правила исходящего трафика NSG, чтобы разрешить исходящий доступ к необходимым службам Azure по целевому тегу службы:

    Приоритет Имя Порт Протокол Исходный материал Назначение Действие
    100 РазрешитьAzureStorage 443 Протокол tcp Любое Хранение Разрешить
    101 РазрешитьActiveDirectory 443 Протокол tcp Любое AzureActiveDirectory Разрешить
    102 РазрешитьAzureMonitor 443 Протокол tcp Любое AzureMonitor Разрешить
    103 РазрешитьAzureRM 443 Протокол tcp Любое AzureResourceManager Разрешить

Внутренняя связь между узлами кластера и CycleCloud

Откройте эти порты, чтобы разрешить обмен данными между узлами кластера и сервером CycleCloud:

Имя Исходный материал Назначение Услуга Протокол Диапазон портов
amqp_5672 Узел кластера CycleCloud AMQP Протокол tcp 5672
https_9443 Узел кластера CycleCloud HTTPS Протокол tcp 9443

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

Примечание.

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.

Обновления проекта из GitHub

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

Если во время создания первого узла вы можете временно открыть доступ к 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"

Эту версию проекта и все зависимости можно найти в теге выпуска.

Вы можете вручную скачать все артефакты релиза, но CLI CycleCloud предоставляет функцию для облегчения этой операции.

Во-первых, используйте CLI CycleCloud, чтобы получить и подготовить репозиторий из 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}"

Затем скопируйте упакованный тарбол проекта на сервер 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.