다음을 통해 공유


잠긴 네트워크에서 작동

CycleCloud 애플리케이션 및 클러스터 노드는 인터넷 액세스가 제한된 환경에서 작동할 수 있지만 최소한의 TCP 포트가 열려 있어야 합니다.

잠긴 네트워크에 Azure CycleCloud 설치

CycleCloud VM은 클러스터 VM을 오케스트레이션하고 Azure Active Directory에 인증하기 위해 여러 Azure API에 연결할 수 있어야 합니다. 이러한 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 애플리케이션 Insights)
  • dc.services.visualstudio.com(Azure 애플리케이션 인사이트)
  • ratecard.azure-api.net (Azure Price Data)

관리 API는 지역적으로 호스트되며 공용 IP 주소 범위는 여기에서 찾을 수 있습니다.

Azure AD 로그인은 Microsoft 365 일반 API의 일부이며 서비스에 대한 IP 주소 범위는 여기에서 확인할 수 있습니다.

Azure Insights 및 Log Analytics IP 주소 범위는 여기에서 찾을 수 있습니다.

Azure CycleCloud는 Azure Storage 계정에 액세스할 수 있어야 합니다. 이 서비스 및 기타 지원되는 Azure 서비스에 대한 프라이빗 액세스를 제공하는 권장 방법은 Virtual Network 서비스 엔드포인트를 사용하는 것입니다.

네트워크 보안 그룹 또는 Azure Firewall 사용하여 필요한 도메인에 대한 아웃바운드 액세스를 제한하는 경우 HTTPS 프록시를 통해 모든 요청을 라우팅하도록 Azure Cyclecloud를 구성할 수 있습니다. 참조: 웹 프록시 사용

CycleCloud VM에 대한 Azure 네트워크 보안 그룹 구성

Azure Firewall 또는 HTTPS 프록시를 구성하지 않고 CycleCloud VM에서 아웃바운드 인터넷 액세스를 제한하는 한 가지 방법은 CycleCloud VM의 서브넷에 대해 엄격한 Azure 네트워크 보안 그룹을 구성하는 것입니다. 이렇게 하는 가장 간단한 방법은 서브넷 또는 VM 수준 네트워크 보안 그룹에서서비스 태그를 사용하여 필요한 아웃바운드 Azure 액세스를 허용하는 것입니다.

  1. CycleCloud에서 Azure Storage로의 액세스를 허용하도록 서브넷에 대한 Storage 서비스 엔드포인트 구성

  2. "인터넷" 대상 서비스 태그를 사용하여 기본적으로 아웃바운드 액세스를 거부하려면 다음 NSG 아웃바운드 규칙을 추가합니다.

우선 순위 Name 포트 프로토콜 원본 대상 작업
4000 BlockOutbound 모두 모두 모두 인터넷 거부
  1. 다음 NSG 아웃바운드 규칙을 추가하여 대상 서비스 태그별로 필요한 Azure 서비스에 대한 아웃바운드 액세스를 허용 합니다.
우선 순위 Name 포트 프로토콜 원본 대상 작업
100 AllowAzureStorage 443 TCP 모두 스토리지 허용
101 AllowActiveDirectory 443 TCP 모두 AzureActiveDirectory Allow
102 AllowAzureMonitor 443 TCP 모두 AzureMonitor 허용
103 AllowAzureRM 443 TCP 모두 AzureResourceManager 허용

클러스터 노드와 CycleCloud 간의 내부 통신

클러스터 노드와 CycleCloud 서버 간의 통신을 허용하려면 이러한 포트를 열어야 합니다.

Name 원본 대상 서비스 프로토콜 포트 범위
amqp_5672 클러스터 노드 CycleCloud AMQP TCP 5672
https_9443 클러스터 노드 CycleCloud HTTPS TCP 9443

잠긴 네트워크에서 Azure CycleCloud 클러스터 시작

참고

아웃바운드 인터넷 액세스 없이 서브넷에서 클러스터 노드를 실행하는 것은 현재 완벽하게 지원되지만, 사용자 지정 이미지 또는 기본 CycleCloud 클러스터 유형 및 프로젝트 또는 둘 다를 사용자 지정해야 하는 고급 항목입니다.

해당 작업의 대부분 또는 전부를 제거하기 위해 클러스터 유형 및 프로젝트를 적극적으로 업데이트하고 있습니다. 그러나 잠긴 환경에서 클러스터 유형 또는 프로젝트에 오류가 발생하는 경우 지원 요청을 여는 것이 좋습니다.

일반적으로 아웃바운드 인터넷 액세스를 사용하여 가상 네트워크 또는 서브넷에서 VM 또는 Cyclecloud 클러스터를 실행하려면 다음이 필요합니다.

  1. 전체 기능을 사용하려면 클러스터 VM에서 Azure Cyclecloud에 연결할 수 있어야 합니다. 다음 중 하나
    1. 클러스터 VM은 HTTPS 및 AMQP를 통해 Azure Cyclecloud에 직접 연결할 수 있어야 합니다. 또는
    2. Cyclecloud ReturnProxy 기능은 클러스터를 만들 때 사용하도록 설정해야 하며 Cyclecloud 자체는 SSH를 통해 ReturnProxy VM에 연결할 수 있어야 합니다.
  2. 클러스터에 필요한 모든 소프트웨어 패키지는 다음 중 하나여야 합니다.
    1. 클러스터 VM에 대한 사용자 지정 관리 이미지에 미리 설치되었거나
    2. VM에서 액세스할 수 있는 패키지 리포지토리 미러에서 사용 가능 또는
    3. Azure Storage에서 VM에 복사되고 Cyclecloud 프로젝트에 의해 직접 설치됨
  3. 모든 클러스터 노드는 Azure Storage 계정에 액세스할 수 있어야 합니다. 이 서비스 및 기타 지원되는 Azure 서비스에 대한 프라이빗 액세스를 제공하는 권장 방법은 Azure Storage에 Virtual Network 서비스 엔드포인트를 사용하도록 설정하는 것입니다.

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에서 다운로드하려고 시도하지 않습니다.