Delen via


Werken in een vergrendeld netwerk

De CycleCloud-toepassing en -clusterknooppunten kunnen worden uitgevoerd in omgevingen met beperkte internettoegang, maar er zijn een minimaal aantal TCP-poorten die open moeten blijven.

Azure CycleCloud installeren in een vergrendeld netwerk

De CycleCloud-VM moet verbinding kunnen maken met een aantal Azure-API's om cluster-VM's te organiseren en te verifiëren bij Azure Active Directory. Omdat deze API's HTTPS gebruiken, vereist CycleCloud uitgaande HTTPS-toegang tot:

  • management.azure.com (Azure ARM Management)
  • login.microsoftonline.com (Azure AD)
  • watson.telemetry.microsoft.com (Azure-telemetrie)
  • dc.applicationinsights.azure.com (Azure-toepassing Insights)
  • dc.applicationinsights.microsoft.com (Azure-toepassing Inzichten)
  • dc.services.visualstudio.com (Azure-toepassing Insights)
  • ratecard.azure-api.net (Azure Price Data)

De beheer-API wordt regionaal gehost en de openbare IP-adresbereiken vindt u hier.

De Azure AD aanmelding maakt deel uit van de algemene API's en IP-adresbereiken van Microsoft 365 voor de service.

De IP-adresbereiken van Azure Insights en Log Analytics vindt u hier.

Azure CycleCloud moet toegang hebben tot Azure Storage-accounts. De aanbevolen manier om privétoegang tot deze service en andere ondersteunde Azure-services te bieden, is via Virtual Network Service-eindpunten.

Als u netwerkbeveiligingsgroepen of de Azure Firewall gebruikt om uitgaande toegang tot de vereiste domeinen te beperken, kunt u Azure Cyclecloud configureren om alle aanvragen via een HTTPS-proxy te routeren. Zie: Een webproxy gebruiken

Een Azure-netwerkbeveiligingsgroep configureren voor de CycleCloud-VM

Eén manier om uitgaande internettoegang vanaf de CycleCloud-VM te beperken zonder de Azure Firewall of een HTTPS-proxy te configureren, is door een strikte Azure-netwerkbeveiligingsgroep te configureren voor het subnet van de CycleCloud-VM. De eenvoudigste manier om dit te doen, is het gebruik van servicetags in het subnet- of VM-niveau netwerkbeveiligingsgroep om de vereiste uitgaande Azure-toegang toe te staan.

  1. Een opslagservice-eindpunt voor het subnet configureren om toegang van CycleCloud naar Azure Storage toe te staan

  2. Voeg de volgende uitgaande NSG-regel toe om uitgaande toegang standaard te weigeren met behulp van de doelservicetag 'Internet':

Prioriteit Name Poort Protocol Bron Doel Bewerking
4000 BlockOutbound Alle Alle Alle Internet Weigeren
  1. Voeg de volgende regels voor uitgaande NSG toe om uitgaande toegang tot de vereiste Azure-services toe te staan op doelservicetag:
Prioriteit Name Poort Protocol Bron Doel Bewerking
100 AllowAzureStorage 443 TCP Alle Storage Toestaan
101 AllowActiveDirectory 443 TCP Alle AzureActiveDirectory Toestaan
102 AllowAzureMonitor 443 TCP Alle AzureMonitor Toestaan
103 AllowAzureRM 443 TCP Alle AzureResourceManager Toestaan

Interne communicatie tussen clusterknooppunten en CycleCloud

Deze poorten moeten geopend zijn om communicatie tussen de clusterknooppunten en CycleCloud-server mogelijk te maken:

Naam Bron Doel Service Protocol Poortbereik
amqp_5672 Clusterknooppunt CycleCloud AMQP TCP 5672
https_9443 Clusterknooppunt CycleCloud HTTPS TCP 9443

Azure CycleCloud-clusters starten in een vergrendeld netwerk

Notitie

Het uitvoeren van clusterknooppunten in een subnet zonder uitgaande internettoegang wordt momenteel volledig ondersteund, maar het is een geavanceerd onderwerp waarvoor vaak een aangepaste installatiekopieën of aanpassing van de standaard CycleCloud-clustertypen en -projecten of beide zijn vereist.

We werken de clustertypen en projecten actief bij om het grootste deel van dat werk te elimineren. Als u echter fouten ondervindt met uw clustertype of project in uw vergrendelde omgeving, kunt u overwegen een ondersteuningsaanvraag voor hulp te openen.

Voor het uitvoeren van VM's of Cyclecloud-clusters in een virtueel netwerk of subnet met uitgaande internettoegang is doorgaans het volgende vereist:

  1. Azure Cyclecloud moet bereikbaar zijn vanaf de cluster-VM's voor volledige functionaliteit. Ofwel:
    1. Cluster-VM's moeten rechtstreeks verbinding kunnen maken met Azure Cyclecloud via HTTPS en AMQP, of
    2. De functie Cyclecloud ReturnProxy moet zijn ingeschakeld tijdens het maken van het cluster en Cyclecloud zelf moet verbinding kunnen maken met de ReturnProxy-VM via SSH
  2. Alle softwarepakketten die door het cluster zijn vereist, moeten:
    1. Vooraf geïnstalleerd in een aangepaste beheerde installatiekopieën voor de cluster-VM's of
    2. Beschikbaar in een pakketopslagplaatsspiegel die toegankelijk is vanaf de VM's of
    3. Gekopieerd naar de VIRTUELE machine vanuit Azure Storage en rechtstreeks geïnstalleerd door een Cyclecloud-project
  3. Alle clusterknooppunten moeten toegang hebben tot Azure Storage-accounts. De aanbevolen manier om privétoegang te bieden tot deze service en elke andere ondersteunde Azure-service is het inschakelen van een Virtual Network service-eindpunt voor Azure Storage.

Project Updates vanuit GitHub

Cyclecloud downloadt clusterprojecten van GitHub tijdens de indelingsfase Fasering. Deze download vindt plaats na de eerste installatie, na het upgraden van Cyclecloud of bij het starten van een cluster van een bepaald type voor de eerste keer. In een vergrendelde omgeving kan https-uitgaand verkeer naar github.com worden geblokkeerd. In dat geval mislukt het maken van knooppunten tijdens de faseringsbronnen.

Als de toegang tot GitHub tijdelijk kan worden geopend tijdens het maken van het eerste knooppunt, bereidt CycleCloud de lokale bestanden voor op alle volgende knooppunten. Als tijdelijke toegang niet mogelijk is, kunnen de benodigde bestanden worden gedownload van een andere computer en worden gekopieerd naar CycleCloud.

Bepaal eerst welk project en welke versie uw cluster nodig heeft, bijvoorbeeld Slurm 2.5.0. Normaal gesproken is dit het hoogste versienummer in de database voor een bepaald project.

/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"

Deze projectversie en alle afhankelijkheden vindt u in de [releasetag] (https://github.com/Azure/cyclecloud-slurm/releases/tag/2.5.0). Alle artefacten voor een release moeten worden gedownload. Download eerst het codeartefact en maak een blobs-map voor de aanvullende afhankelijkheden.

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

Zodra deze bestanden lokaal zijn gefaseerd, detecteert Cyclecloud ze en probeert ze niet te downloaden vanuit GitHub.