Arbeta i ett låst nätverk

CycleCloud-programmet och klusternoderna kan användas i miljöer med begränsad Internetåtkomst, även om det finns ett minimalt antal TCP-portar som måste vara öppna.

Installera Azure CycleCloud i ett låst nätverk

Den virtuella CycleCloud-datorn måste kunna ansluta till ett antal Azure-API:er för att samordna virtuella klusterdatorer och autentisera till Azure Active Directory. Eftersom dessa API:er använder HTTPS kräver CycleCloud utgående HTTPS-åtkomst till:

  • management.azure.com (Azure ARM Management)
  • login.microsoftonline.com (Azure AD)
  • watson.telemetry.microsoft.com (Azure Telemetry)
  • 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 (Prisdata för Azure)

Hanterings-API:et finns regionalt och de offentliga IP-adressintervallen finns här.

Den Azure AD inloggningen är en del av Microsoft 365 vanliga API:er och IP-adressintervall för tjänsten finns här.

Ip-adressintervallen för Azure Insights och Log Analytics finns här.

Azure CycleCloud måste kunna komma åt Azure Storage-konton. Det rekommenderade sättet att ge privat åtkomst till den här tjänsten och andra Azure-tjänster som stöds är via Virtual Network tjänstslutpunkter.

Om du använder nätverkssäkerhetsgrupper eller Azure Firewall för att begränsa utgående åtkomst till de domäner som krävs är det möjligt att konfigurera Azure Cyclecloud för att dirigera alla begäranden via en HTTPS-proxy. Se: Använda en webbproxy

Konfigurera en Azure-nätverkssäkerhetsgrupp för den virtuella CycleCloud-datorn

Ett sätt att begränsa utgående Internetåtkomst från den virtuella CycleCloud-datorn utan att konfigurera Azure Firewall eller en HTTPS-proxy är att konfigurera en strikt Azure-nätverkssäkerhetsgrupp för den virtuella CycleCloud-datorns undernät. Det enklaste sättet att göra det är att använda tjänsttaggar i undernätet eller nätverkssäkerhetsgruppen på VM-nivå för att tillåta nödvändig utgående Azure-åtkomst.

  1. Konfigurera en lagringstjänstslutpunkt för undernätet för att tillåta åtkomst från CycleCloud till Azure Storage

  2. Lägg till följande utgående NSG-regel för att neka utgående åtkomst som standard med hjälp av måltjänsttaggen "Internet":

Prioritet Namn Port Protokoll Källa Mål Action
4000 BlockOutbound Valfri Valfri Valfri Internet Neka
  1. Lägg till följande regler för utgående NSG i Tillåt utgående åtkomst till nödvändiga Azure-tjänster efter måltjänsttagg:
Prioritet Namn Port Protokoll Källa Mål Action
100 AllowAzureStorage 443 TCP Valfri Storage Tillåt
101 AllowActiveDirectory 443 TCP Valfri AzureActiveDirectory Tillåt
102 AllowAzureMonitor 443 TCP Valfri AzureMonitor Tillåt
103 TillåtAzureRM 443 TCP Valfri AzureResourceManager Tillåt

Intern kommunikation mellan klusternoder och CycleCloud

Dessa portar måste vara öppna för att möjliggöra kommunikation mellan klusternoderna och CycleCloud-servern:

Namn Källa Mål Tjänst Protokoll Portintervall
amqp_5672 Klusternod CycleCloud AMQP TCP 5672
https_9443 Klusternod CycleCloud HTTPS TCP 9443

Starta Azure CycleCloud-kluster i ett låst nätverk

Anteckning

Att köra klusternoder i ett undernät utan utgående Internetåtkomst stöds i dag fullt ut, men det är ett avancerat ämne som ofta kräver antingen en anpassad avbildning eller anpassning av standardtyperna för CycleCloud-kluster och -projekt eller båda.

Vi uppdaterar aktivt klustertyperna och projekten för att eliminera det mesta eller allt det arbetet. Men om du stöter på fel med klustertypen eller projektet i den låsta miljön bör du överväga att öppna en supportbegäran för att få hjälp.

Att köra virtuella datorer eller Cyclecloud-kluster i ett virtuellt nätverk eller undernät med utgående Internetåtkomst kräver vanligtvis följande:

  1. Azure Cyclecloud måste kunna nås från klustrets virtuella datorer för att få fullständig funktionalitet. Antingen:
    1. Virtuella klusterdatorer måste kunna ansluta till Azure Cyclecloud direkt via HTTPS och AMQP, eller
    2. Funktionen Cyclecloud ReturnProxy måste vara aktiverad när klustret skapas och själva Cyclecloud måste kunna ansluta till den virtuella Datorn ReturnProxy via SSH
  2. Alla programvarupaket som krävs av klustret måste vara:
    1. Förinstallerad i en anpassad hanterad avbildning för klustrets virtuella datorer, eller
    2. Tillgänglig i en paketlagringsplatsspegling som är tillgänglig från de virtuella datorerna, eller
    3. Kopierades till den virtuella datorn från Azure Storage och installerades direkt av ett Cyclecloud-projekt
  3. Alla klusternoder måste kunna komma åt Azure Storage-konton. Det rekommenderade sättet att ge privat åtkomst till den här tjänsten och andra Azure-tjänster som stöds är att aktivera en Virtual Network-tjänstslutpunkt för Azure Storage.

Project Uppdateringar från GitHub

Cyclecloud laddar ned klusterprojekt från GitHub under orkestreringsfasen "Mellanlagring". Den här nedladdningen sker efter den första installationen, efter uppgraderingen av Cyclecloud eller när du startar ett kluster av en viss typ för första gången. I en låst miljö kan utgående HTTPS-trafik till github.com blockeras. I sådana fall misslyckas skapande av noder under mellanlagringsresursfasen.

Om åtkomst till GitHub kan öppnas tillfälligt när den första noden skapas förbereder CycleCloud de lokala filerna för alla efterföljande noder. Om tillfällig åtkomst inte är möjlig kan de nödvändiga filerna laddas ned från en annan dator och kopieras till CycleCloud.

Bestäm först vilket projekt och vilken version klustret behöver, t.ex. Slurm 2.5.0. Det är vanligtvis det högsta versionsnumret i databasen för ett visst projekt.

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

Den här projektversionen och alla beroenden finns i [versionstaggen] (https://github.com/Azure/cyclecloud-slurm/releases/tag/2.5.0). Alla artefakter för en version måste laddas ned. Ladda först ned kodartefakten och skapa en blobkatalog för de ytterligare beroendena.

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

När dessa filer har mellanlagrats lokalt identifierar Cyclecloud dem och försöker inte ladda ned dem från GitHub.