Integratie en automatische schaalaanpassing van Azure CycleCloud-planner beschrijven

Voltooid

Door cloudflexibiliteit te gebruiken, kunnen bedrijven volledig profiteren van de hyperscale-mogelijkheden van Azure, terwijl de operationele kosten worden geminimaliseerd die zijn gekoppeld aan het gebruik van rekenresources. De mogelijkheid om de hoeveelheid resources automatisch te schalen als reactie op hun gebruikspatronen, is een belangrijk onderdeel van die flexibiliteit. In de context van Azure CycleCloud en HPC vertaalt dit zich in het implementeren van een nauwe correlatie tussen de resourcevereisten van clustertaken en het aantal cluster-rekenknooppunten.

Over het algemeen is de indeling van het schalen van clusterknooppunten de verantwoordelijkheid van planners. Planners moeten hun eisen kunnen doorgeven aan het platform dat rekenresources biedt. Azure CycleCloud helpt deze functionaliteit te implementeren. In deze les leert u meer over de principes van deze implementatie.

Wat is de rol van Azure CycleCloud in automatische schaalaanpassing van clusters?

Azure CycleCloud vereenvoudigt de implementatie van planners in Azure, die op hun beurt taken distribueren en beheren die worden uitgevoerd op clusters die bestaan uit Azure-resources. Azure CycleCloud werkt niet als scheduler. In plaats daarvan fungeert het als intermediair tussen planners en het onderliggende platform. Azure CycleCloud vereenvoudigt ook de ontwikkeling van functionaliteit voor automatisch schalen voor de bijbehorende planners door een op REST API gebaseerde programmeerinterface en een Python-clientbibliotheek te bieden.

Met Azure CycleCloud kunt u het gedrag van automatische schaalaanpassing van beheerde clusters correleren met de lengte van de wachtrijen van de clustertaak. U kunt dit gedrag verder aanpassen door sjabloonparameters te definiëren waarmee bijvoorbeeld de hoeveelheid tijd wordt bepaald waarna niet-actieve knooppunten worden beëindigd of de frequentie van automatischestopcontroles.

Alle ingebouwde sjablonen maken de instellingen voor automatisch schalen rechtstreeks beschikbaar in de grafische interface van Azure CycleCloud. In elk geval bevatten de instellingen de optie om de onder- en bovengrenzen van het bereik voor automatische schaalaanpassing op te geven, uitgedrukt in het aantal CPU-kernen. Met de bovengrens kunt u de mogelijkheid van onverwachte kosten minimaliseren. U kunt dit risico verder beperken door budgetwaarschuwingen in te stellen.

Als de lagere drempelwaarde is ingesteld op 0, resulteert het maken van een cluster alleen in het inrichten van het hoofdknooppunt van de scheduler. Wanneer de scheduler echter taken in de wachtrij detecteert, wordt het inrichten gestart van de rekenknooppunten die nodig zijn om de bijbehorende workload uit te voeren, tot aan de limiet die u hebt gedefinieerd. Om losjes gekoppelde of parallelle taken te ondersteunen, waarbij afzonderlijke taken onafhankelijk van elkaar worden uitgevoerd, worden taken uitgevoerd zodra het eerste knooppunt beschikbaar is. Voor nauw gekoppelde taken, zoals taken die gebruikmaken van de MPI-functionaliteit (Message Passing Interface), is de wachttijd langer, afhankelijk van de mate van afhankelijkheden tussen knooppunten. Nadat de taakwachtrij leeg is voor de hoeveelheid tijd die de toegestane niet-actieve tijd overschrijdt, beginnen de rekenknooppunten automatisch te stoppen en bestaat uw cluster opnieuw alleen uit het hoofdknooppunt van de scheduler.

Notitie

De onderliggende concepten die in deze les worden beschreven, komen vaak voor bij schedulers. De implementatiegegevens zijn echter specifiek voor de planning. Raadpleeg de documentatie van afzonderlijke planners voor uitgebreide informatie over elke implementatie.

Schedulers integreren met automatische schaalaanpassing van Azure CycleCloud

De twee primaire onderdelen die integratie met automatische schaalaanpassing van Azure CycleCloud implementeren, zijn Azure CycleCloud Autoscale Library en Demand Calculator.

Diagram van de architectuur op hoog niveau van Azure CycleCloud.

De Bibliotheek voor automatische schaalaanpassing van Azure CycleCloud is een opensource-project dat door GitHub wordt gehost, waarmee Python-helpers de ontwikkeling van automatische schaalaanpassing kunnen vereenvoudigen voor elke scheduler die in Azure is geïmplementeerd. De helpers gebruiken azure CycleCloud REST API om het inrichten van Azure-resources te organiseren. Het project maakt gebruik van Python 3 en heeft veel Python-afhankelijkheden. De kernfunctionaliteit is echter afhankelijk van de Python-clientbibliotheek van Azure CycleCloud. Automatische schaalaanpassing kan worden geïntegreerd met de hoofdknooppunten van de scheduler die taakwachtrijen bewaken. Automatisch schalen verhoogt of verlaagt het aantal rekenknooppunten door te communiceren met de REST API voor automatisch schalen die wordt uitgevoerd op de Azure CycleCloud-toepassingsserver.

De vraagcalculator is verantwoordelijk voor het evalueren van resourcevereisten op basis van het rekenknooppunt en taakgegevens die door de planner worden verzameld. Deze evaluatie beschouwt reken- en netwerkbeperkingen, zoals de maximale clustergrootte of infiniBand-gerelateerde limieten. De resulterende resourcevereisten worden omgezet in een aanvraag voor het inrichten of ongedaan maken van de inrichting van Azure-VM's van een bepaalde grootte en configuratie. De bibliotheek voor automatisch schalen stuurt deze aanvragen door naar de Rest API van Azure CycleCloud, die deze vervolgens via de orchestrator aan Azure Resource Manager levert.

Notitie

Hoewel scheduler-integratie geschikt is voor losjes gekoppelde of parallelle workloads waarbij het beheren van de grootte van het cluster de primaire overweging is, biedt Azure CycleCloud ook ondersteuning voor nauw gekoppelde workloads, waarbij de nabijheid van knooppunten en netwerklatentie essentieel zijn.