Wat zijn pc-berichten van clustersystemen. Clustersystemen: Samenvatting: Computers en randapparatuur. Veritas Cluster Server-softwarecomponenten

Cluster computing is geen nieuw vakgebied. De laatste tijd is de belangstelling ervoor echter aanzienlijk toegenomen: veel organisaties beschouwen clusters als het belangrijkste hulpmiddel voor het oplossen van problemen zoals het verbeteren van de applicatieprestaties, het garanderen van hoge beschikbaarheid en hoge schaalbaarheid van hun computersystemen.

De vooruitgang op het gebied van clustertechnologieën in de afgelopen tien jaar heeft het mogelijk gemaakt om goedkope computers te gebruiken om deze te bouwen. De kosteneffectiviteit, rekenkracht en flexibiliteit van dergelijke clusters hebben ze tot een aantrekkelijk alternatief gemaakt voor het gecentraliseerde computermodel gebaseerd op traditionele supercomputers (hierna zullen we met het woord ‘cluster’ een massaproduct bedoelen, in tegenstelling tot een ‘special order’). ”).

Clusters kwamen naar voren als een goedkoop en efficiënt alternatief voor supercomputers met één behuizing en een originele gesloten architectuur. Ze zijn gebouwd op kant-en-klare componenten en worden veel gebruikt voor high-performance computing, beschikbaarheid en schaalbaarheid. En als de eerste mogelijkheid vooral interessant is voor academische kringen, dan zijn de laatste twee zeer aantrekkelijk voor bedrijven van elke omvang. En niet alleen aantrekkelijk, maar ook betaalbaar.

Tegenwoordig kan een goedkoop cluster uit componenten die zich in massaproductie bevinden, worden samengesteld door vrijwel elk zichzelf respecterend computerbedrijf, en met de release van een dergelijk clusterbesturingssysteem als Windows Computing Cluster Server 2003, dat een vrij eenvoudige installatie mogelijk maakt, kan op instapniveau clusteroplossingen komen beschikbaar voor kleine en middelgrote bedrijven. En misschien lijkt het niet onredelijk om aan te nemen dat de permanente prijsdaling voor hardware- en softwarecomponenten en hogesnelheidsnetwerktechnologieën er binnenkort voor zal zorgen dat clusters op instapniveau een gemeenschappelijk onderdeel van informatiesystemen van welke omvang dan ook zullen worden.

Daarom hebben we in het Onderwerp van de week gewijd aan cluster computing geprobeerd niet alleen een overzichtsgedeelte op te nemen, maar ook artikelen over specifieke producten waar in de nabije toekomst ongetwijfeld vraag naar zal zijn bij het Oekraïense bedrijfsleven. In het bijzonder vindt de lezer hier zowel een praktische les uitgevoerd in ons testlaboratorium als een beschrijving van de clusterbesturingssystemen Windows Computing Cluster Server 2003/2008, die alle kansen hebben om populair te worden.

Laten we allereerst de definitie van een cluster in herinnering brengen. Dit is de naam van een lokaal (in tegenstelling tot gedistribueerd) computersysteem, bestaande uit veel onafhankelijke computers die met elkaar zijn verbonden via datatransmissiekanalen. De locatie van het cluster ligt in het feit dat al zijn subsystemen ‘zichtbaar’ zijn in één enkel administratief domein, en dat het wordt beheerd als één enkel computersysteem. De computers die deel uitmaken van het cluster worden knooppunten genoemd. Meestal zijn dit in massa geproduceerde universele computers die onafhankelijk kunnen werken. Knooppunten kunnen één of meerdere processors zijn (SMP-configuratie). In het klassieke ontwerp delen alle knooppunten extern geheugen op een harde schijf tijdens het uitvoeren van applicaties, waarbij interne HDD's worden gebruikt voor meer gespecialiseerde functies. Voor communicatie tussen knooppunten wordt gewoonlijk een bepaalde standaardnetwerktechnologie gebruikt, hoewel dit afzonderlijk ontwikkelde communicatiekanalen niet uitsluit. Het clusternetwerk is gescheiden: het is geïsoleerd van de externe netwerkomgeving.

Classificatie

Clusters kunnen worden ingedeeld op basis van verschillende criteria, maar meestal worden ze onderverdeeld in drie categorieën, die worden bepaald door de aard en het doel van de toepassing.

Clusters met hoge beschikbaarheid (HA).. Soms worden ze ook fouttolerant genoemd. Dergelijke clusters zijn ontworpen om eindgebruikers ononderbroken toegang te bieden tot gegevens of services (meestal webservices). Doorgaans draait één exemplaar van een applicatie op één knooppunt, en wanneer dat knooppunt niet meer beschikbaar is, wordt de controle ervan overgenomen door een ander knooppunt (Afbeelding 1). Deze architectuur maakt ook reparaties en preventief onderhoud mogelijk zonder de services stop te zetten. Als één knooppunt uitvalt, kan de service bovendien worden hersteld zonder de beschikbaarheid van de andere knooppunten te beïnvloeden. Het is waar dat de systeemprestaties zullen afnemen.

Clusters met hoge beschikbaarheid zijn de beste keuze voor het uitvoeren van bedrijfskritische applicaties of databases, mail-, bestands-, print-, web- en applicatieservers. In tegenstelling tot gedistribueerd en parallel computergebruik maken deze clusters op eenvoudige en transparante wijze de bestaande niet-clusterspecifieke applicaties van organisaties mogelijk, waardoor het netwerk naadloos kan worden uitgebreid naarmate het bedrijf groeit.

Taakverdelingsclusters. Dit type cluster verdeelt binnenkomende verzoeken over meerdere knooppunten waarop dezelfde programma's draaien of dezelfde inhoud worden gehost (Afbeelding 2). Elk knooppunt kan verzoeken voor dezelfde toepassing of inhoud verwerken. Als een van de knooppunten faalt, worden de verzoeken opnieuw verdeeld over de overige. Dergelijke clusters worden doorgaans gebruikt voor webhosting.

Beide hierboven besproken clustertechnologieën kunnen worden gecombineerd om de betrouwbaarheid, beschikbaarheid en schaalbaarheid van applicaties te vergroten.

Clusters voor high-performance computing (High-Performance Cluster, HPC). Traditioneel werd parallel computergebruik uitgevoerd op multiprocessorsystemen die speciaal voor dit doel waren ontworpen. Daarin deelden veel processors een gemeenschappelijke geheugen- en businterface binnen één computer. Met de komst van snelle schakeltechnologie werd het mogelijk om computers te combineren in clusters voor parallel computergebruik.

Een parallelle cluster is een systeem dat veel knooppunten gebruikt om berekeningen te parallelliseren om een ​​specifiek probleem op te lossen. In tegenstelling tot clusters met taakverdeling en hoge beschikbaarheid, die verzoeken/taken verdelen over knooppunten die deze als geheel verwerken, wordt een verzoek in een parallelle omgeving opgedeeld in vele subtaken, die op hun beurt worden verdeeld voor verwerking tussen knooppunten binnen het cluster. Parallelle clusters worden vooral gebruikt voor toepassingen die intensieve wiskundige berekeningen vereisen.

Clustercomponenten

De basisbouwstenen (componenten) van clusters zijn onderverdeeld in verschillende categorieën: de knooppunten zelf, clustersoftware, een speciaal netwerk dat gegevens tussen knooppunten uitwisselt, en de bijbehorende netwerkprotocollen.

Knooppunten

Designnodes zijn gemigreerd van traditionele sokkelchassis naar multiprocessorsystemen met één rack en bladeservers die hogere processordichtheden bieden in omgevingen met beperkte ruimte.

Onlangs zijn de prestaties van processors, geheugen, toegangssnelheid van harde schijven en hun capaciteit aanzienlijk toegenomen. Het is interessant om op te merken dat met deze, in sommige gevallen exponentiële prestatieverbetering, de kosten van deze technologieën aanzienlijk zijn gedaald.

In een typisch geval kan een knooppunt in een cluster een besturings- (master) of een rekenknooppunt (slave) zijn (Fig. 3). Er kan slechts één hoofdknooppunt zijn. Het is verantwoordelijk voor de werking van het cluster en is ook de sleutel tot de clustermiddleware, routeringsprocessen, het verzenden en bewaken van de status van elk computerknooppunt. Deze laatste voeren berekeningen en bewerkingen uit met het dataopslagsysteem. Deze knooppunten zijn in wezen volledig functionele stand-alone computers en worden doorgaans kant-en-klaar verkocht als desktops of servers.

Software

Net als bij een gewone desktopcomputer vormt het clusterbesturingssysteem het hart van elk knooppunt. Het is onzichtbaar aanwezig tijdens elke gebruikersactie, of het nu gaat om toegang tot het bestandssysteem, het verzenden van berichten of het starten van een aanvullend proces. Gebruikers kunnen verschillende programmeerparadigma's of middleware kiezen, maar het cluster-besturingssysteem is voor iedereen hetzelfde.

Een typische OS-ontwerpschets wordt weergegeven in de tabel. Het toont de basisblokken van een traditioneel knooppunt. De primaire rol van een cluster-besturingssysteem is in de eerste plaats het multiplexen van meerdere gebruikersprocessen op een enkele set hardwarecomponenten (resourcebeheer) en het bieden van nuttige abstracties voor software op hoog niveau. Sommige van deze abstracties omvatten bescherming van geheugengrenzen, coördinatie van processen/threads en communicatie, en apparaatbeheer. Opgemerkt moet worden dat de meeste clusterspecifieke functies worden uitgevoerd door middleware. En daar zijn redenen voor. Het cluster-besturingssysteem is inderdaad behoorlijk complex en het is niet altijd duidelijk hoe de aangebrachte wijzigingen andere systemen zullen beïnvloeden. Daarom is het beter om de nodige wijzigingen op middleware-niveau door te voeren, en de nieuwe functionaliteit die eraan wordt toegevoegd, kan naar andere besturingssystemen worden geporteerd.

In de bovenstaande definitie van een cluster werd vermeld dat het voor de beheerder en gebruiker zichtbaar is als één enkel computersysteem. Dit wordt bereikt met behulp van Eén systeemimage (SSI). Het is wat de heterogene en gedistribueerde aard van de beschikbare bronnen verbergt en deze aan gebruikers en applicaties presenteert als één enkele computerbron. SSI kan op een of meer van de volgende niveaus worden geïmplementeerd: hardware, besturingssysteem, middleware en/of applicatie. Hier is een voorbeeld van verschillende belangrijke services die door een SSI-cluster worden geleverd:

  • enkel toegangspunt;
  • uniforme gebruikersinterface;
  • enkele procesruimte;
  • enkel geheugen en I/O-ruimte;
  • uniforme bestandshiërarchie;
  • één enkel punt van controle en beheer.

Systemen zoals Digital/Compaq Memory Channel en Distributed Shared Memory bieden SSI op hardwareniveau en stellen gebruikers in staat het cluster te zien als een gedeeld geheugensysteem. SCO UnixWare NonStop Cluster-, Sun Solaris-MC-, GLUNIX- en MOSIX-besturingssystemen ondersteunen SSI op kernelniveau.

De implementatie van SSI op elk van de bovengenoemde niveaus heeft zijn voor- en nadelen. De hardwarelaag kan dus de hoogste mate van transparantie bieden, maar is vanwege de rigide architectuur niet minder flexibel dan nodig is voor systeemuitbreidingen en verbeteringen. De kernellaag biedt SSI aan zowel ontwikkelaars als eindgebruikers, maar is te duur en moeilijk aan te passen. Het belangrijkste voordeel van de applicatielaag ten opzichte van de kernellaag is dat in de eerste laag SSI in fasen wordt geïmplementeerd en de gebruiker de mogelijkheden onmiddellijk ontvangt, terwijl in de tweede laag het product pas op de markt kan komen als alle kernelcomponenten SSI ondersteunen. De middlewarelaag is een compromis tussen de twee bovengenoemde SSI-implementatiemechanismen.

Netwerkapparatuur en protocollen

Het creëren van publieke clusters was alleen mogelijk dankzij adequate netwerktechnologieën voor communicatie tussen knooppunten. Publieke clusters omvatten een of meer speciale netwerken voor het verzenden van berichtenpakketten binnen een gedistribueerd systeem. Dit onderscheidt een cluster van een ensemble van losjes verbonden autonome computers via een gedeeld LAN.

Tegenwoordig hebben clusterontwikkelaars ruime mogelijkheden om voor netwerktechnologie te kiezen. Aangezien de kosten van netwerkapparatuur voor clusters variëren van “bijna niets” tot enkele duizenden dollars per node, is dit wellicht niet het laatste onderdeel bij het bepalen van de prijs van het product. De praktijk biedt voorbeelden van het bouwen van zeer efficiënte clusters met behulp van goedkope netwerkapparatuur die te zien is in een regulier LAN. Tegelijkertijd zijn individuele netwerkproducten die specifiek zijn ontworpen voor clustercommunicatie qua kosten vergelijkbaar met werkstations. De keuze voor netwerktechnologie hangt af van een aantal factoren: prijs, prestaties, compatibiliteit met andere clusterhardware en -software, evenals de communicatiekenmerken van de applicaties die op het cluster zullen draaien.

Netwerkprestaties worden over het algemeen beschreven in termen van latentie en bandbreedte. Latentie is de tijdsduur vanaf een verzoek om gegevens tot de ontvangst ervan, of de tijd die nodig is om gegevens van de ene computer naar de andere over te brengen, inclusief de overhead van software voor het genereren van een bericht en de tijd die nodig is om bits over te dragen. Idealiter zouden applicaties die voor clusters zijn geschreven, minimale berichtgeving moeten hebben. Als een applicatie een groot aantal korte berichten verzendt, zijn de prestaties afhankelijk van de netwerklatentie, maar als er lange berichten worden uitgewisseld, heeft de doorvoer een grote invloed op deze parameter. Het is duidelijk dat de applicatieprestaties het beste zullen zijn met een lage latentie en hoge bandbreedte. Om aan deze twee eisen te voldoen zijn efficiënte communicatieprotocollen nodig die overhead en snelle netwerkapparaten minimaliseren.

Communicatie- of netwerkprotocollen definiëren de regels en conventies die twee of meer computers in een netwerk zullen gebruiken om informatie uit te wisselen. Ze kunnen verbindingsgebaseerd of verbindingsloos zijn, bieden verschillende niveaus van betrouwbaarheid - met en zonder volledige garantie van levering in de volgorde van pakketten, synchroon (zonder buffering) en asynchroon (met buffering).

Voor clustercommunicatie worden zowel traditionele netwerkprotocollen, oorspronkelijk ontwikkeld voor internet (IP), als speciaal ontwikkelde netwerkprotocollen gebruikt. Daarnaast zijn er twee relatief nieuwe standaarden, ook specifiek ontworpen voor clusters. We zullen niet stilstaan ​​bij het IP-protocol, dat vrij bekend is bij onze lezers, en ook niet bij de andere, aangezien ze allemaal behoorlijk specifiek zijn. We zullen alleen hun namen vermelden, zodat geïnteresseerden zich kunnen wenden tot de literatuur of tot het ‘alwetende’ internet. Dit zijn met name de protocollen Active Messages, Fast Messages, Virtual Memory-Mapped Communication, U-net en Basic Interface for Parallelism. Laten we naar twee normen kijken.

In 1997 was het onderzoek naar protocollen met lage latentie zo ver gevorderd dat het uiteindelijk leidde tot de creatie van een nieuwe standaard voor clustercommunicatie, de Virtual Interface Architecture (VIA). Tegelijkertijd werkte de industrie aan standaarden voor gedeelde opslagsubsystemen. Het resultaat van deze inspanningen was InfiniBand.

VIA is een communicatiestandaard die de beste prestaties van verschillende projecten samenbrengt. Het is gemaakt door een consortium van academische en industriële partners, waaronder Intel, Compaq en Microsoft. Versie VIA 1.1 met ondersteuning voor heterogene hardware kwam begin 2001 beschikbaar. Zoals de naam al doet vermoeden, is VIA gebaseerd op het concept van een virtuele netwerkinterface. De standaard bepaalt dat voordat een bericht wordt verzonden, de ontvangst- en verzendbuffers moeten worden toegewezen en gebonden aan fysiek geheugen. Zodra de buffers en de bijbehorende datastructuren zijn gevormd, zijn er geen systeemaanroepen meer nodig. Ontvangst- en verzendbewerkingen in een gebruikerstoepassing bestaan ​​uit het schrijven van een ingang naar een wachtrij. De applicatie kan kiezen of hij wil wachten op bevestiging dat de bewerking is voltooid of dat hij zijn hoofdwerk wil voortzetten terwijl het bericht wordt verwerkt.

Hoewel VIA rechtstreeks beschikbaar kan worden gemaakt voor applicatieprogrammering, zijn veel systeemontwikkelaars van mening dat het een te laag niveau is voor applicaties, aangezien laatstgenoemde verantwoordelijk moet zijn voor het toewijzen van een deel van het fysieke geheugen en ervoor moet zorgen dat dit efficiënt wordt gebruikt. Er wordt verwacht dat de meeste leveranciers van besturingssystemen en middleware een interface voor VIA zullen leveren die het programmeren van applicaties ondersteunt. Zo leverden de meeste databaseleveranciers in de herfst van 2000 versies van hun producten die bovenop VIA draaiden. Andere clustersoftware, zoals bestandssystemen, komt snel beschikbaar.

De InfiniBand-standaard werd ondersteund door een consortium van industriële partners, waaronder Compaq, Dell, HP, IBM, Intel, Microsoft en Sun Microsystems. De InfiniBand-architectuur vervangt de gedeelde bus, het standaard I/O-systeem in moderne computers, door een snelle seriële, op kanalen gebaseerde structuur. Alle systemen en apparaten worden met de fabric verbonden met behulp van een Host Channel Adapter (HCA), die de host-CPU verbindt met de InfiniBand-fabric, of een Target Channel Adapter (TCA), die de InfiniBand verbindt met andere I/O-apparaten zoals Ethernet. Fibre Channel of met opslagsystemen. De InfiniBand-link is full-duplex en werkt met een doorvoersnelheid van 2,5 Gbps in één richting in een point-to-point-topologie. Gegevens worden in pakketten verzonden en er zijn zes transmissiemodi: betrouwbare en onbetrouwbare verbinding, betrouwbaar en onbetrouwbaar datagram, multicast en onbewerkte pakketten ("raw" -modus). Bovendien ondersteunt InfiniBand directe geheugentoegang op afstand, waardoor de ene processor het geheugen van een andere kan lezen of schrijven.

Wat betreft netwerkapparatuur die communicatie tussen knooppunten ondersteunt, kan deze in vier categorieën worden ingedeeld - afhankelijk van of de verbinding wordt gemaakt met de I/O-bus of met de geheugenbus, en van de belangrijkste communicatiemethode - met behulp van berichten of gedeelde schijf geheugen.

Van de vier verbindingscategorieën komen berichtgebaseerde en I/O-bussystemen het meest voor, omdat zij de duidelijkste interface met de computer bieden. De I/O-bus heeft minimaal een hardware-interrupt die de processor kan informeren dat gegevens klaar zijn om te worden gelezen. Dergelijke systemen worden geïmplementeerd in alle algemeen beschikbare netwerktechnologieën, evenals in een aantal recente producten die specifiek zijn ontworpen voor clustercomputing.

I/O-bus- en gedeelde schijfgeheugensystemen omvatten computers met een gedeeld schijfsubsysteem. Geheugenverbindingen komen minder vaak voor omdat de geheugenbus over het algemeen voor elk type computer anders is ontworpen. Veel van dergelijke systemen worden echter geïmplementeerd in software of via een I/O-poort-naar-geheugen mapping-mechanisme, zoals het Memory Channel.

Daarnaast zijn er hybride systemen die functies van verschillende categorieën combineren. Met InfiniBand kunt u bijvoorbeeld zowel gegevens naar schijf als berichten naar andere knooppunten verzenden. Op dezelfde manier kan Scalable Coherent Interface (SCI) ook beide uitwisselingsmechanismen gebruiken.

Clusternetwerken

Het clustersysteemnetwerk kan worden gebouwd op basis van traditionele netwerkproducten die in LAN's worden gebruikt, of specifiek ontworpen voor clustercomputing. In het laatste geval biedt het extra hardwareondersteuning die de latentie vermindert.

Tegenwoordig zijn geschakelde Ethernet-technologieën, dankzij de lage poortkosten en de standaardisatie van interfaces, toonaangevend als interconnectiesystemen in algemeen beschikbare clusters. Veel computers zijn uitgerust met ingebouwde 1 GE-poorten; het enige wat u hoeft te doen is een goedkope switch aan te schaffen. Voor hogere eisen worden echter ook gespecialiseerde netwerken gebruikt. Elke gedetailleerde beschrijving ervan zou ons ver buiten de grenzen van wat mogelijk is brengen. Om redenen van volledigheid zullen we daarom slechts zeer korte informatie over individuele ervan verstrekken.

Giganet (cLAN). cLAN-technologie (ingestort LAN), nu eigendom van Emulex, is ontwikkeld om VIA in hardware te ondersteunen. Dit was de eerste native hardware-implementatie van de VIA-standaard in de branche. De belangrijkste kenmerken van het netwerk zijn als volgt.

Op het laagste niveau van het communicatiemodel bevindt zich onsamenhangend gedistribueerd gedeeld geheugen (Distributed Shared Memory, DSM). Een deel van de virtuele adresruimte van de applicatie wordt via het netwerk logisch toegewezen aan het fysieke geheugen op een ander knooppunt. Gegevens worden tussen applicaties overgedragen door naar een gedeeld geheugengebied te schrijven met behulp vanties. De buffer op het externe knooppunt wordt vertegenwoordigd door een Remote Direct Memory Access-cookie, die het eigenaarknooppunt toestemming geeft om toegang te krijgen tot de buffer.

Mijnrinet. Dit full duplex netwerk wordt geleverd door Myricom. Het wordt veel gebruikt in veel academische projecten, met name in het Berkeley Network of Workstations (NOW). Fysiek bestaat het netwerk uit twee glasvezelkabels (downstream en upstream) die via een gemeenschappelijke connector met de host zijn verbonden. Computers zijn verbonden via routers of switches (deze kunnen worden geconfigureerd om redundante paden te bieden). Switchen zonder pakketbuffering (cut-through) wordt ondersteund, waardoor berichten met minimale vertraging van begin naar eind kunnen worden verzonden. Myrinet heeft een ingebouwde programmeerbare processor, waarmee u met veel communicatieprotocollen kunt experimenteren.

Myrinet implementeert een aantal mechanismen om fouttolerantie te garanderen. Deze omvatten stroomcontrole, foutcontrole en het controleren van de functionaliteit van kanalen (hartslag).

De nieuwste versie, de zogenaamde Myrinet 10G van de vierde generatie, ondersteunt gegevensoverdrachtsnelheden van 10 Gb/s in elke richting en is compatibel met 10 GE op PHY-niveau. De netwerklatentie is zeer laag: slechts 5 µs.

QsNet. Dit snelle netwerk met lage latentie is ontwikkeld door Quadrics Supercomputers World (QSW). Structureel omvat QsNet twee subsystemen:

  • een netwerkinterface bestaande uit één of meer netwerkadapters in elk knooppunt;
  • een multi-bus datanetwerk dat computers in een cluster verbindt.

De netwerkinterface is gebaseerd op aangepaste chips genaamd Elan. De Elan III-modificatie combineert een speciale I/O-processor voor het ontlasten van de CPU, een PCI-bus (66 MHz, 64 bits), een duplexkanaal (400 MHz, 8 bits), een geheugenbeheereenheid (MMU), een cache en een lokale geheugeninterface. De chip voert drie soorten basisbewerkingen uit:

  • lezen en schrijven op afstand;
  • directe overdracht van gegevens van de virtuele gebruikersadresruimte van de ene processor naar de andere zonder de noodzaak van synchronisatie;
  • protocolbeheer.

Het netwerk is opgebouwd op basis van speciale switches, die zijn gecombineerd in een speciaal chassis, waardoor een dikke boomtopologie wordt gevormd (hoe dichter de tak bij de root is, hoe dikker deze is, d.w.z. de capaciteit is hoger).

De netwerkaanpassing, uitgebracht in 2003, is gebaseerd op de PCI-X 133 MHz-bus en heeft een latentie van 1,22 μs.

Schaalbare coherente interface (SCI). Dit is de eerste interconnectietechnologie die speciaal voor clustercomputing is ontwikkeld en die naar de standaard wordt gebracht. De SCI-architectuur is gebaseerd op point-to-point-verbindingen, kleine pakketgroottes en gesplitste transacties. De IEEE 1596-standaard werd in 1992 gepubliceerd en specificeerde de fysieke netwerklaag en hoger voor netwerkgedistribueerd gedeeld cache-coherent (optioneel) geheugen. Op hogere niveaus beschrijft de standaard een gedistribueerd, pointer-gebaseerd coherent cache-ontwerp. Dit ontwerp maakt caching van SCI-geheugen op afstand mogelijk: wanneer gegevens in het externe geheugen worden gewijzigd, worden alle cacheregels op alle knooppunten waarop deze zijn opgeslagen ongeldig. Het cachen van extern SCI-geheugen verbetert de prestaties en maakt directe, transparante programmering van gedeeld geheugen mogelijk.

Dit zijn natuurlijk niet alle technologieën op basis waarvan je een redelijk krachtig cluster kunt bouwen. Clusters op instapniveau maken doorgaans gebruik van niet-gespecialiseerde oplossingen die gebruik maken van traditionele netwerktechnologieën zoals Ethernet, ATM of Fibre Channel.

Tegenwoordig biedt de markt een breed scala aan clusters, die verschillen in het type en de snelheid van processors, de grootte van het geheugen dat door knooppunten wordt gedeeld, technologie voor het onderling verbinden van knooppunten, modellen en programmeerinterfaces. U moet echter begrijpen dat het resultaat dat met hun hulp wordt bereikt, voor een groot deel afhangt van de kenmerken van de applicaties die u erop wilt implementeren.

Basis OS-ontwerpschets
Gebruikersruimte Systeemprocessen Gebruikersprocessen
niet gebruiken
de middleware
Gebruikersprocessen met behulp van de middleware
Middelware
Systeemdiensten Gebruikersbibliotheken
Kernel Middleware-gerelateerde kernelextensies
Bestandssystemen/communicatie/programmatische interface
Geheugenbeheerder Planner Chauffeurs
Hardware-abstractielaag
Hardwarebronnen Timers en onderbrekingen
RAM CPU's Schijven Netwerk Cluster-interconnect Anderen

Het principe van hun werking is gebaseerd op de distributie van verzoeken via een of meer invoerknooppunten, die ze voor verwerking doorsturen naar de overige rekenknooppunten. Het initiële doel van zo’n cluster is prestatie, maar vaak gebruiken ze ook technieken om de betrouwbaarheid te verbeteren. Dergelijke structuren worden serverfarms genoemd. Software kan commercieel zijn (OpenVMS, MOSIX, Platform LSF HPC, Solaris Cluster, Moab Cluster Suite, Maui Cluster Scheduler) of gratis (OpenMosix, Sun Grid Engine, Linux Virtual Server).

Computerclusters

Clusters worden gebruikt voor computerdoeleinden, vooral in wetenschappelijk onderzoek. Voor computerclusters zijn de hoge processorprestaties bij drijvende-kommabewerkingen (flops) en de lage latentie van het onderling verbonden netwerk belangrijke indicatoren. Minder belangrijk is de snelheid van I/O-bewerkingen, die belangrijker is voor databases en webservices. Computerclusters maken het mogelijk om de rekentijd te verkorten in vergelijking met een enkele computer, door de taak op te delen in parallelle uitvoerende takken die gegevens uitwisselen via een onderling verbonden netwerk. Een typische configuratie is een verzameling computers die zijn opgebouwd uit algemeen verkrijgbare componenten, waarop het Linux-besturingssysteem draait en die zijn verbonden via Ethernet, Myrinet, InfiniBand of andere relatief goedkope netwerken. Een dergelijk systeem wordt gewoonlijk een Beowulf-cluster genoemd. High-performance clusters worden speciaal geïdentificeerd (aangeduid met de Engelse afkorting HPC-cluster - Krachtig computercluster). Lijst met de krachtigste krachtige computers (kan ook worden aangeduid met de Engelse afkorting HPC) is terug te vinden in de wereldranglijst TOP500. Rusland houdt een beoordeling bij van de krachtigste computers in het GOS.

Gedistribueerde computersystemen (raster)

Dergelijke systemen worden doorgaans niet als clusters beschouwd, maar hun principes zijn grotendeels vergelijkbaar met clustertechnologie. Ze worden ook wel rastersystemen genoemd. Het belangrijkste verschil is de lage beschikbaarheid van elk knooppunt, dat wil zeggen de onmogelijkheid om de werking ervan op een bepaald moment te garanderen (knooppunten worden tijdens de werking verbonden en losgekoppeld), daarom moet de taak worden verdeeld in een aantal processen die onafhankelijk zijn van elk knooppunt. ander. Een dergelijk systeem lijkt, in tegenstelling tot clusters, niet op één enkele computer, maar dient als een vereenvoudigde manier om berekeningen te verspreiden. De instabiliteit van de configuratie wordt in dit geval gecompenseerd door een groot aantal knooppunten.

Cluster van servers programmatisch georganiseerd

Clustersystemen nemen een waardige plaats in de lijst van de snelste in, terwijl ze qua prijs aanzienlijk beter presteren dan supercomputers. Sinds juli 2008 staat het SGI Altix ICE 8200-cluster (Chippewa Falls, Wisconsin, VS) op de 7e plaats in de TOP500-rating.

Een relatief goedkoop alternatief voor supercomputers zijn clusters gebaseerd op het Beowulf-concept, die zijn opgebouwd uit gewone goedkope computers op basis van vrije software. Een praktisch voorbeeld van een dergelijk systeem is de Stone Soupercomputer van het Oak Ridge National Laboratory (Tennessee, VS, 1997).

Het grootste cluster van een particulier (van 1000 processors) werd gebouwd door John Koza.

Verhaal

De geschiedenis van het ontstaan ​​van clusters is onlosmakelijk verbonden met de vroege ontwikkelingen op het gebied van computernetwerken. Een van de redenen voor de opkomst van snelle communicatie tussen computers was de hoop computerbronnen te bundelen. Begin jaren zeventig stelden het TCP/IP-ontwikkelteam en het Xerox PARC-laboratorium netwerkstandaarden vast. Het door DEC geproduceerde Hydra-besturingssysteem voor PDP-11-computers verscheen ook; het op deze basis gecreëerde cluster kreeg de naam C.mpp (Pittsburgh, Pennsylvania, VS, 1971). Het was echter pas rond 1983 dat er mechanismen werden gecreëerd om het gemakkelijk te maken om taken en bestanden over een netwerk te distribueren, meestal vanuit SunOS (een op BSD gebaseerd besturingssysteem van Sun Microsystems).

Het eerste commerciële project van het cluster was ARCNet, opgericht door Datapoint in 1977. Het werd niet winstgevend, en daarom kwam de clusterconstructie pas in 1984 tot ontwikkeling, toen DEC zijn VAXcluster bouwde op basis van het VAX/VMS-besturingssysteem. ARCNet en VAXcluster zijn niet alleen ontworpen voor gezamenlijk computergebruik, maar ook voor het delen van het bestandssysteem en randapparatuur, waarbij rekening wordt gehouden met het behoud van de gegevensintegriteit en ondubbelzinnigheid. VAXCluster (nu VMSCluster genoemd) is een integraal onderdeel van het OpenVMS-besturingssysteem dat gebruik maakt van DEC Alpha- en Itanium-processors.

Twee andere vroege clusterproducten die erkenning kregen, zijn onder meer Tandem Hymalaya (1994, klasse ) en IBM S/390 Parallel Sysplex (1994).

De geschiedenis van het creëren van clusters van gewone personal computers heeft veel te danken aan het Parallel Virtual Machine-project. In 1989 maakte deze software om computers aan elkaar te koppelen tot een virtuele supercomputer het mogelijk om direct clusters te creëren. Als gevolg hiervan overtroffen de totale prestaties van alle goedkope clusters die destijds werden gecreëerd de som van de capaciteiten van ‘serieuze’ commerciële systemen.

De creatie van clusters op basis van goedkope personal computers verbonden door een datatransmissienetwerk werd in 1993 voortgezet door de American Aerospace Agency NASA, waarna in 1995 Beowulf-clusters werden ontwikkeld, speciaal ontworpen op basis van dit principe. Het succes van dergelijke systemen heeft de ontwikkeling gestimuleerd

Een van de modernste trends op het gebied van het creëren van computersystemen is clustering. In termen van prestaties en beschikbaarheid is clustering een alternatief voor symmetrische multiprocessorsystemen.

Zoals we al hebben opgemerkt, is er sprake van een computercluster M1MR- een systeem (multicomputer) dat bestaat uit vele individuele computers (computerclusterknooppunten) verenigd door één enkele communicatieomgeving.

Een clusterknooppunt kan een VM met één processor of een VC-type zijn SMP of MRR. Elk knooppunt kan onafhankelijk en afzonderlijk van het cluster functioneren.

Elk knooppunt heeft zijn eigen lokale RAM. In dit geval is er in de regel geen gemeenschappelijk fysiek RAM-geheugen voor knooppunten. De communicatieomgeving van computerclusters maakt het doorgaans mogelijk dat knooppunten alleen met elkaar kunnen communiceren door berichten door te geven. Over het algemeen moet een rekencluster worden beschouwd als één enkel hardware- en softwaresysteem met één enkel communicatiesysteem, één enkel controlecentrum en één laadplanning.

De architectuur van cluster computing komt neer op het verbinden van verschillende knooppunten met een hogesnelheidsnetwerk. Naast de term ‘cluster computing’ worden vaak namen gebruikt als werkstationcluster, hypercomputing en netwerkgebaseerd gelijktijdig computergebruik.

Clusters worden geconfronteerd met twee taken:

  • een hoge rekenkracht bereiken;
  • zorgen voor een grotere betrouwbaarheid van vliegtuigen.

Het eerste commerciële cluster werd begin jaren 80 opgericht door het bedrijf DEC. laatste eeuw. Zowel identieke vliegtuigen (homogene clusters) als verschillende (heterogene clusters) kunnen als clusterknooppunten worden gebruikt. Door zijn architectuur is een geclusterd computersysteem een ​​losjes gekoppeld systeem.

Voordelen behaald met clustering:

  • absolute schaalbaarheid. Het is mogelijk om grote clusters te creëren die zelfs de krachtigste afzonderlijke VM's qua rekenkracht overtreffen. Een cluster kan tientallen knooppunten bevatten, die elk een multiplexer zijn;
  • schaalbaar. Het cluster is zo gebouwd dat het kan worden uitgebreid door in kleine porties nieuwe knooppunten toe te voegen;
  • hoge beschikbaarheidsfactor. Omdat elk clusterknooppunt een onafhankelijke VM of vliegtuig is, leidt het falen van een van de knooppunten niet tot verlies van clusterfunctionaliteit. In veel systemen wordt fouttolerantie automatisch ondersteund door de software;
  • uitstekende prijs/prestatieverhouding. Door standaard te verbinden kan een cluster van elke prestatie worden gecreëerd

VM, terwijl de kosten lager zullen zijn dan die van een enkele VM

met gelijkwaardige rekenkracht.

Op hardwareniveau is een cluster eenvoudigweg een verzameling onafhankelijke computersystemen die met elkaar zijn verbonden door een netwerk. Wanneer machines in een cluster worden aangesloten, wordt directe communicatie tussen machines vrijwel altijd ondersteund. Oplossingen kunnen eenvoudig zijn, gebaseerd op Ethernet-hardware, of complex met hogesnelheidsnetwerken met een doorvoersnelheid van honderden megabytes per seconde (systeem /?5/6000 SP 1VM-bedrijf, digitale systemen gebaseerd op Memory Channel, ServerNet van Compaq Corporation).

Clusternodes monitoren elkaars prestaties en wisselen specifieke informatie uit. Prestatiemonitoring wordt uitgevoerd met behulp van een speciaal signaal dat hartslag wordt genoemd. Dit signaal wordt door clusterknooppunten naar elkaar verzonden om hun normale werking te bevestigen.

Een integraal onderdeel van het cluster is gespecialiseerde software, die tot taak heeft een ononderbroken werking te garanderen in geval van uitval van een of meer knooppunten. Dergelijke software herverdeelt de rekenlast wanneer een of meer clusterknooppunten uitvallen, en herstelt berekeningen wanneer een knooppunt uitvalt. Wanneer een cluster gedeelde schijven heeft, onderhoudt de clustersoftware bovendien één enkel bestandssysteem.

Computerclusterknooppunten kunnen onder verschillende besturingssystemen werken. Meestal worden echter standaard UNIX-achtige systemen gebruikt. Merk op dat er vanuit het oogpunt van het ontwikkelen van parallelle applicatieprogramma's geen fundamentele verschillen bestaan ​​tussen homogene computerclusters en MRR- systemen.

Classificatie van rekenclusters naar type

knooppuntprocessoren

Computerclusters worden voornamelijk geclassificeerd op basis van de aard van de knooppuntprocessors (Fig. 9.10).

Personal computers, werkstations en MP-servers worden meestal gebruikt als knooppunten in een computercluster. Indien gebruikt als clusterknooppunt SMP- systeem, dan wordt zo'n rekencluster een *5ZhR-cluster genoemd.

Als personal computers of werkstations worden gebruikt als knooppunten van een computercluster, dan is het gebruikelijke systeem dat

Rijst. 9.10.

situatie waarin, terwijl een probleem op een cluster wordt opgelost, opeenvolgende gebruikerstaken worden uitgevoerd op de knooppunten van dit cluster. Als gevolg hiervan variëren de relatieve prestaties van clusterknooppunten willekeurig en over een groot bereik. De oplossing voor dit probleem zou het schrijven van een zichzelf aanpassend gebruikersprogramma zijn. Een effectieve oplossing voor dit probleem lijkt echter zeer problematisch. De situatie wordt nog verergerd als er bestandsservers zijn tussen de knooppuntcomputers van het rekencluster. Tegelijkertijd kan bij het oplossen van een probleem op een cluster de belasting van de communicatieomgeving sterk variëren, waardoor de communicatiekosten van de taak onvoorspelbaar worden.

Classificatie van computerclusters op basis van knooppunthomogeniteit

Zoals alle A//A//)-systemen zijn rekenclusters onderverdeeld in homogene clustersystemen (homogene rekenclusters) en heterogene clustersystemen (heterogene rekenclusters).

Als ze het over computerclusters hebben, bedoelen ze doorgaans homogene computerclusters. Bij het laten groeien van een cluster is het echter vaak nodig om processors te gebruiken die niet alleen qua prestaties, maar ook qua architectuur verschillen van de knooppuntprocessors van het cluster. Daarom kan een homogeen computercluster geleidelijk heterogeen worden. Deze heterogeniteit veroorzaakt de volgende problemen: verschillen in processorprestaties compliceren de taak van het verdelen van werk tussen processors; verschillen in processorarchitectuur vereisen de voorbereiding van verschillende uitvoerbare bestanden voor verschillende knooppunten, en in het geval van verschillen in gegevenspresentatie kan het conversie van hun formaten vereisen bij het verzenden van berichten tussen knooppunten.

Classificatie van computerclusters op basis van knooppuntfunctionaliteit

Computerclusterknooppunten kunnen volledig functionele computers zijn die ook als onafhankelijke eenheden kunnen functioneren. De prestaties van zo’n cluster zijn doorgaans laag.

Om krachtige computerclusters te creëren, worden de systeemeenheden van knooppuntcomputers veel eenvoudiger gemaakt dan in het eerste geval (niet volledig functioneel). Het is niet nodig om hostcomputers uit te rusten met grafische kaarten, monitoren, schijfstations en andere randapparatuur. Randapparatuur wordt slechts op één of enkele besturingscomputers (YOUG-computers) geïnstalleerd. Deze aanpak kan de kosten van het systeem aanzienlijk verlagen.

Bij het classificeren van clusters wordt ook gebruik gemaakt van een aantal andere classificatiecriteria (Fig. 9.11).


Rijst. 9.11.

  • classificatie volgens de standaard van componenten;
  • classificatie volgens functionele oriëntatie. Classificatie van rekenclusters volgens de standaard van componenten. Vanuit het oogpunt van de standaardisatie van componenten kunnen twee klassen clustersystemen worden onderscheiden:
    • 1) het rekencluster is volledig opgebouwd uit standaardcomponenten;
    • 2) bij het bouwen van een cluster wordt gebruik gemaakt van exclusieve of niet veelgebruikte componenten.

Eersteklas computerclusters hebben lage prijzen en zijn eenvoudig te onderhouden. Clustertechnologieën zijn wijdverspreid geworden als middel om relatief goedkope systemen van supercomputerklasse te creëren uit in massa geproduceerde componenten.

Tweederangsclusters bieden zeer hoge prestaties, maar zijn uiteraard duurder.

Classificatie van rekenclusters op basis van hun functionele focus. Vanuit functioneel oogpunt kunnen clustersystemen worden onderverdeeld:

Voor snelle clustersystemen (High Performance) -

YAR-clusters;

Clustersystemen met hoge beschikbaarheid (High Availability) - OP DE-

clusters.

Clusters met hoge snelheid worden gebruikt in gebieden waar aanzienlijke rekenkracht vereist is. Clusters met hoge beschikbaarheid worden overal gebruikt waar de kosten van mogelijke downtime hoger zijn dan de kosten van de kosten die nodig zijn om een ​​fouttolerant systeem te bouwen.

De prestaties van een high-speed computercluster zijn uiteraard afhankelijk van de prestaties van de knooppunten. Aan de andere kant zijn de prestaties van een cluster, zoals elk systeem met gedistribueerd geheugen, sterk afhankelijk van de prestaties van de communicatieomgeving. Bij het bouwen van computerclusters worden doorgaans redelijk goedkope communicatiemedia gebruikt. Dergelijke omgevingen bieden een tot twee ordes van grootte lagere prestaties dan de prestaties vangen. Daarom zijn er niet veel problemen die redelijk effectief kunnen worden opgelost op grote clustersystemen.

De impact van de prestaties van de communicatieomgeving op de algehele prestaties van het clustersysteem hangt af van de aard van de taak die wordt uitgevoerd. Als een taak frequente gegevensuitwisseling vereist tussen subtaken die op verschillende knooppunten van een computercluster worden opgelost, moet maximale aandacht worden besteed aan de snelheid van de communicatieomgeving. Hoe minder de delen van de taak met elkaar interageren, hoe minder aandacht kan worden besteed aan de snelheid van de communicatieomgeving.

Er zijn veel technologieën ontwikkeld om computers in een cluster te verbinden.

Om ervoor te zorgen dat een computersysteem een ​​hoog beschikbaarheidsniveau heeft, is het noodzakelijk dat de componenten ervan zo betrouwbaar mogelijk zijn, dat het systeem fouttolerant is en dat “hot” vervanging van componenten mogelijk is (zonder het systeem te stoppen). Dankzij clustering kunnen taken, als een van de computers in het systeem uitvalt, automatisch (door het besturingssysteem) worden herverdeeld over andere (functionele) knooppunten van het rekencluster. Clusterfouttolerantie wordt dus verzekerd door duplicatie van alle vitale componenten van het computersysteem. De populairste commerciële fouttolerante systemen zijn momenteel clusters met twee knooppunten.

Er is nog een klasse computerclusters: computernetwerken (ROOSTER), het combineren van de bronnen van vele clusters, computers met meerdere processors en computers met één processor, die tot verschillende organisaties kunnen behoren en zich in verschillende landen kunnen bevinden.

De ontwikkeling van parallelle programma's voor computernetwerken is gecompliceerd vanwege de volgende problemen. De bronnen (aantal knooppunten, hun architectuur, prestaties) die aan een taak worden toegewezen, worden pas bepaald op het moment dat het netwerk een opdracht verwerkt om deze taak te voltooien. Daarom kan de programmeur geen programma ontwikkelen voor een specifieke computernetwerkconfiguratie. Het programma moet zo worden ontwikkeld dat het zich dynamisch (zonder hercompilatie) kan aanpassen aan een geselecteerde netwerkconfiguratie. Bovendien wordt aan de heterogeniteit van de communicatieomgeving de variabiliteit van de kenmerken ervan toegevoegd, veroorzaakt door veranderingen in de netwerkbelasting. In het beste geval moet het programma worden ontworpen om rekening te houden met deze heterogeniteit van de communicatieomgeving, wat een zeer moeilijke taak is. Zoals we hierboven hebben opgemerkt, doet zich een soortgelijk probleem ook voor bij computerclusters die op personal computers of werkstations zijn gebouwd.

Effectieve prestaties van clustercomputersystemen (echte applicatieprestaties, TIK) geschat op 5-15% van hun topprestaties (piekgeadverteerde prestaties, PAP). Ter vergelijking: voor de beste low-processorsystemen bestaande uit vectorprocessors wordt deze verhouding geschat op 30-50%.

Clustercomputersystemen zijn een voortzetting geworden van de ontwikkeling van ideeën die zijn ingebed in de architectuur van MPA-systemen. Als in een MPA-systeem een ​​processormodule als een compleet rekenknooppunt fungeert, dan worden in clustersystemen in de handel verkrijgbare computers als dergelijke rekenknooppunten gebruikt. De ontwikkeling van communicatietechnologieën, namelijk de opkomst van hogesnelheidsnetwerkapparatuur en speciale softwarebibliotheken, bijvoorbeeld MPI (Message Passing Interface), dat het mechanisme implementeert voor het verzenden van berichten met behulp van standaard netwerkprotocollen, heeft clustertechnologieën algemeen beschikbaar gemaakt. Momenteel worden er veel kleine clustersystemen gecreëerd door de rekenkracht van laboratorium- of klascomputers te combineren.

Een aantrekkelijk kenmerk van clustertechnologieën is dat ze, om de vereiste prestaties te bereiken, het mogelijk maken om heterogene systemen te bouwen, dat wil zeggen om computers van verschillende typen te combineren tot afzonderlijke computersystemen, variërend van personal computers tot krachtige supercomputers. Clustertechnologieën zijn wijdverbreid geworden als middel om systemen van supercomputerklasse te creëren uit in massa geproduceerde componenten, waardoor de kosten van een computersysteem aanzienlijk worden verlaagd. Een van de eerste projecten die in 1998 werd uitgevoerd was met name The COst Effective Computing Array (COCOA), waarin, gebaseerd op 25 personal computers met twee processors met een totale kostprijs van ongeveer $100.000, een systeem met prestaties gelijk aan die van 48 computers. Er werd een processor Cray T3D gemaakt die enkele miljoenen dollars kostte.

Lyle Long, hoogleraar lucht- en ruimtevaarttechniek aan de Penn State University, is van mening dat relatief goedkope clustercomputersystemen heel goed zouden kunnen dienen als alternatief voor dure supercomputers in wetenschappelijke organisaties. Onder zijn leiding werd op de universiteit het COCOA-cluster gebouwd. In het kader van dit project zijn 25 ra-

basisstations van DELL, die elk twee Pentium II/400 MHz-processors, 512 MB RAM, een 4 GB SCSI-harde schijf en een Fast Ethernet-netwerkadapter bevatten. Voor het verbinden van de knooppunten wordt gebruik gemaakt van een 24-poorts Baynetworks 450T-switch met één uitbreidingsmodule. Geïnstalleerde software omvat het RedHat Linux-besturingssysteem, Fortran 90- en HPF-compilers van de Portland Group, een vrij gedistribueerde implementatie van MPI - Message Passing Interface Chameleon (MPICH) en een DQS-wachtrijsysteem.

In een paper gepresenteerd op de 38e Aerospace Science Meeting and Exhibit beschrijft Long een parallelle versie van een computerprogramma voor taakverdeling dat wordt gebruikt om de geluidsniveaus van helikopters op verschillende locaties te voorspellen. Ter vergelijking: dit rekenprogramma werd uitgevoerd op drie verschillende computers met 48 processoren om de ruis op 512 punten te berekenen. Op het Cray T3E-systeem duurde de berekening 177 seconden, op het SGI Origin2000-systeem - 95 seconden en op het COCOA-cluster - 127 seconden. Clusters zijn dus een zeer efficiënt computerplatform voor taken van deze klasse.

Een ander voordeel van clustersystemen ten opzichte van supercomputers is dat de eigenaren ervan de processortijd niet hoeven te delen met andere gebruikers, zoals in grote supercomputercentra. In het bijzonder levert COCOA meer dan 400.000 uur processortijd per jaar, terwijl het in supercomputercentra moeilijk kan zijn om 50.000 uur te verkrijgen.

Het is natuurlijk niet nodig om over volledige gelijkwaardigheid van deze systemen te praten. Zoals bekend zijn de prestaties van systemen met gedistribueerd geheugen sterk afhankelijk van de prestaties van de schakelomgeving, die kan worden gekenmerkt door twee parameters: latentie - de vertragingstijd bij het verzenden van een bericht, en doorvoer - de snelheid van informatieoverdracht. Voor een Cray T3D-computer zijn deze parameters bijvoorbeeld respectievelijk 1 μs en 480 Mb/s, en voor een cluster waarin een Fast Ethernet-netwerk als schakelmedium wordt gebruikt, 100 μs en 10 Mb/s. Dit verklaart gedeeltelijk de zeer hoge kosten van supercomputers. Met parameters zoals die van het cluster in kwestie zijn er niet veel taken die effectief kunnen worden opgelost op een voldoende groot aantal processors.

Op basis van het bovenstaande zullen we een definitie geven: een cluster is een verbonden set volwaardige computers die als één computerbron worden gebruikt. Zowel identieke (homogene clusters) als verschillende (heterogene clusters) computers kunnen als clusterknooppunten worden gebruikt. Door zijn architectuur is een clustercomputersysteem losjes gekoppeld. Om clusters te creëren, worden meestal eenvoudige personal computers met één processor of SMP-servers met twee of vier processors gebruikt. In dit geval worden er geen beperkingen opgelegd aan de samenstelling en architectuur van knooppunten. Elk knooppunt kan zijn eigen besturingssysteem draaien. De meest gebruikte standaardbesturingssystemen zijn Linux, FreeBSD, Solaris, Tru64 Unix en Windows NT.

In de literatuur worden vier voordelen genoemd die worden bereikt door het clusteren van een computersysteem:

absolute schaalbaarheid;

schaalbaar;

hoge beschikbaarheidsfactor;

prijs prestatie verhouding.

Laten we elk van de bovenstaande kenmerken van een clustercomputersysteem uitleggen.

Eigendom absolute schaalbaarheid betekent dat het mogelijk is grote clusters te creëren die de rekenkracht van zelfs de krachtigste afzonderlijke computers te boven gaan. Een cluster kan tientallen knooppunten bevatten, die elk een multiprocessor zijn.

Verhoogbare schaalbaarheidseigenschap betekent dat het cluster kan worden uitgebreid door in kleine porties nieuwe knooppunten toe te voegen. Zo kan de gebruiker beginnen met een klein systeem en dit indien nodig uitbreiden.

Omdat elk clusterknooppunt een onafhankelijke computermachine of -systeem is, leidt het falen van een van de knooppunten niet tot verlies van clusterfunctionaliteit. In veel systemen wordt fouttolerantie automatisch ondersteund door de software.

En ten slotte bieden clustersystemen wat supercomputers niet kunnen bereiken prijs-kwaliteit verhouding. Clusters van welke prestatie dan ook kunnen worden gemaakt met behulp van standaard “bouwstenen”, en de kosten van het cluster zullen lager zijn dan één

nachtcomputer met gelijkwaardige verwerkingskracht.

Op hardwareniveau is een cluster dus een verzameling onafhankelijke computersystemen die met elkaar zijn verbonden door een netwerk. Oplossingen kunnen eenvoudig zijn, gebaseerd op Ethernet-hardware, of complex, met hogesnelheidsnetwerken met een doorvoersnelheid van honderden megabytes per seconde.

Een integraal onderdeel van het cluster is gespecialiseerde software, die tot taak heeft de berekeningen bij te houden wanneer een of meer knooppunten uitvallen. Dergelijke software herverdeelt de rekenlast wanneer een of meer clusterknooppunten uitvallen, en herstelt berekeningen wanneer een knooppunt uitvalt. Wanneer een cluster gedeelde schijven heeft, onderhoudt de clustersoftware bovendien één enkel bestandssysteem.

Classificatie van clustersysteemarchitecturen

In de literatuur worden verschillende manieren beschreven om clustersystemen te classificeren. De eenvoudigste classificatie is gebaseerd op de manier waarop disk-arrays worden gebruikt: samen of afzonderlijk.

In afb. 5.5.1 en 5.5.2 tonen de structuren van clusters van twee knooppunten, waarvan de coördinatie wordt verzekerd door een hogesnelheidslijn die wordt gebruikt voor berichtenuitwisseling. Dit kan een lokaal netwerk zijn, dat ook wordt gebruikt door computers die niet in het cluster zijn opgenomen, of een huurlijn. In het geval van een huurlijn hebben een of meer clusterknooppunten toegang tot een lokaal of mondiaal netwerk, waardoor de communicatie tussen het servercluster en externe clientsystemen wordt gewaarborgd.

Het verschil tussen de gepresenteerde clusters is dat in het geval van een lokaal netwerk de knooppunten lokale schijfarrays gebruiken, en in het geval van een speciale lijn de knooppunten één redundante array van onafhankelijke harde schijven delen of de zogenaamde RAID (Redundant Array van onafhankelijke schijven). RAID bestaat uit verschillende schijven die worden beheerd door een controller, met elkaar zijn verbonden door hogesnelheidskanalen en door het externe systeem als één geheel worden waargenomen. Afhankelijk van het type array dat wordt gebruikt, kunnen verschillende niveaus van fouttolerantie en prestaties worden geleverd.

CPU

CPU

Hoge snelheid

CPU

CPU

snelweg

Apparaat

Apparaat

Apparaat

Apparaat

IO

IO

IO

IO

Schijf

Schijf

Rijst. 5.5.1. Clusterconfiguratie zonder gedeelde schijven

Schijf

Apparaat

Apparaat

CPU

CPU

IO

IO

CPU

CPU

Apparaat

Apparaat

Apparaat

Apparaat

IO

IO

IO

IO

Schijf

Hoge snelheid

Schijf

snelweg

Rijst. 5.5.2. Clusterconfiguratie met gedeelde schijven

Laten we eens kijken naar de meest voorkomende typen schijfarrays:

RAID0 (striping) is een schijfarray van twee of meer harde schijven zonder redundantie. Informatie wordt opgedeeld in datablokken en tegelijkertijd naar beide (meerdere) schijven geschreven. Het voordeel is een aanzienlijke toename van de productiviteit. Het nadeel is dat de betrouwbaarheid van RAID0 duidelijk lager is dan de betrouwbaarheid van elk van de schijven afzonderlijk en afneemt naarmate het aantal schijven in RAID0 toeneemt, aangezien het falen van een van de schijven leidt tot de onbruikbaarheid van de hele array. .

RAID1 (mirroring) is een array bestaande uit minimaal twee schijven. De voordelen zijn een acceptabele schrijfsnelheid en winst in leessnelheid bij het parallelliseren van query's, evenals een hoge betrouwbaarheid: het werkt zolang ten minste één schijf in de array functioneert. De kans op falen van twee schijven tegelijk is gelijk aan het product van de kansen op falen van elke schijf. Als een van de schijven uitvalt, moet er in de praktijk direct actie worden ondernomen: de redundantie moet worden hersteld. Om dit te doen, wordt aanbevolen om hot spare-schijven te gebruiken met elk RAID-niveau (behalve nul). Het voordeel van deze aanpak is het handhaven van een constante beschikbaarheid. Het nadeel is dat je de kosten van twee harde schijven moet betalen om de bruikbare capaciteit van één harde schijf te krijgen.

RAID10 is een gespiegelde array waarin gegevens opeenvolgend naar verschillende schijven worden geschreven, zoals in RAID0. Deze architectuur is een RAID0-array waarvan de segmenten RAID1-arrays zijn in plaats van individuele schijven. Dienovereenkomstig moet een array van dit niveau ten minste vier schijven bevatten. RAID10 combineert hoge fouttolerantie en prestaties.

Een completer beeld van clustercomputersystemen wordt gegeven door de classificatie van clusters volgens de gebruikte clustermethoden, die de belangrijkste functionele kenmerken van het systeem bepalen:

clustering met passieve redundantie;

clustering met actieve redundantie;

zelfstandige servers;

servers met verbindingen naar alle schijven;

servers met gedeelde schijven.

Clustering met redundantie is de oudste en meest universele methode. Eén van de servers neemt de volledige rekenlast over, terwijl de andere inactief blijft, maar klaar is om de berekeningen over te nemen als de hoofdserver uitvalt. De actieve (of primaire) server verzendt periodiek een klokbericht naar de back-up (secundaire) server. Als er geen hartslagberichten zijn, wat wordt beschouwd als een storing van de primaire server, neemt de secundaire server de controle over. Deze aanpak verbetert de beschikbaarheid, maar verbetert de prestaties niet. Bovendien, als het enige type communicatie tussen knooppunten berichten is, en als beide servers in het cluster geen schijven delen, heeft de back-upserver geen toegang tot de databases die worden beheerd door de primaire server.

Passieve redundantie is niet typisch voor clusters. De term ‘cluster’ verwijst naar een reeks onderling verbonden knooppunten die actief deelnemen aan het computerproces en samen de illusie creëren van één krachtige computermachine. Deze configuratie wordt doorgaans een systeem met een actieve secundaire server genoemd en er zijn drie clustermethoden: standalone servers, niet-schijfgedeelde servers en schijfgedeelde servers.

Bij de eerste methode wordt elk clusterknooppunt behandeld als een onafhankelijke server met zijn eigen schijven, en worden geen van de schijven in het systeem gedeeld. Het schema biedt hoge prestaties en hoge beschikbaarheid, maar vereist speciale software om de distributie van clientverzoeken over servers te plannen, zodat een evenwichtig en efficiënt gebruik van alle servers wordt bereikt. Het is noodzakelijk dat als een van de knooppunten faalt tijdens de uitvoering van een applicatie, een ander knooppunt in het cluster deze applicatie kan onderscheppen en beëindigen. Om dit te doen, moet er voortdurend een back-up van de gegevens in het systeem worden gemaakt, zodat elke server toegang heeft tot alle meest recente gegevens in het systeem. Vanwege deze kosten gaat een hoge beschikbaarheid alleen ten koste van de prestaties.

Om de communicatieoverhead te verminderen, bestaan ​​de meeste clusters nu uit servers die zijn aangesloten op gedeelde schijven, meestal weergegeven door een RAID-schijfarray (zie figuur 5.5.2).

Eén variant van deze aanpak gaat ervan uit dat het delen van schijven niet wordt gebruikt. Gedeelde schijven zijn onderverdeeld in partities en elk clusterknooppunt krijgt een eigen partitie toegewezen. Als één knooppunt uitvalt, kan het cluster opnieuw worden geconfigureerd, zodat de toegangsrechten tot de gedeelde schijfpartitie worden overgedragen naar een ander knooppunt.

Een andere optie is dat meerdere servers in de loop van de tijd de toegang tot gedeelde schijven delen, zodat elk knooppunt toegang heeft tot alle partities van alle gedeelde schijven. Deze aanpak vereist een soort vergrendelingsmechanisme om ervoor te zorgen dat slechts één van de servers op een bepaald moment toegang heeft tot de gegevens.

Clusters bieden een hoge beschikbaarheid - ze hebben geen enkel besturingssysteem en gedeeld geheugen, dat wil zeggen dat er geen probleem is met cache-coherentie. Bovendien bewaakt speciale software in elk knooppunt voortdurend de prestaties van alle andere knooppunten. Deze controle is gebaseerd op het periodiek verzenden door elk knooppunt van het signaal ‘Ik ben nog wakker’. Als er van een bepaald knooppunt geen signaal wordt ontvangen, wordt zo'n knooppunt als buiten gebruik beschouwd; het krijgt niet de mogelijkheid om I/O uit te voeren, zijn schijven en andere bronnen (inclusief netwerkadressen) worden opnieuw toegewezen aan andere knooppunten, en programma's die erop draaien worden opnieuw opgestart op andere knooppunten.

Clusterprestaties worden geschaald en er worden knooppunten toegevoegd. Een cluster kan meerdere individuele applicaties draaien, maar voor het schalen van een enkele applicatie moeten de onderdelen ervan kunnen communiceren door berichten uit te wisselen. Je kunt echter niet negeren dat interacties tussen clusterknooppunten veel langer duren dan bij traditionele computersystemen. De mogelijkheid om het aantal knooppunten vrijwel onbeperkt te laten groeien en het ontbreken van één enkel besturingssysteem maken clusterarchitecturen uiterst schaalbaar. Systemen met honderden en duizenden knooppunten zijn met succes gebruikt.

Bij het ontwikkelen van clusters kunnen twee benaderingen worden onderscheiden. De eerste benadering is het creëren van kleine clustersystemen. Een cluster combineert volledig functionele computers die als onafhankelijke eenheden blijven functioneren, bijvoorbeeld klascomputers of laboratoriumwerkstations. De tweede benadering is het doelbewust creëren van krachtige computerbronnen. Systeemeenheden van computers zijn compact geplaatst -

Deze bevinden zich in speciale rekken en een of meer volledig functionele computers, hostcomputers genoemd, worden toegewezen om het systeem te beheren en taken uit te voeren. In dit geval is het niet nodig om de computers van de computerknooppunten uit te rusten met grafische kaarten, monitoren, schijfstations en andere randapparatuur, wat de kosten van het systeem aanzienlijk verlaagt.

Er zijn veel technologieën ontwikkeld om computers tot een cluster te combineren. De meest gebruikte technologie op dit moment is Ethernet, vanwege het gebruiksgemak en de lage kosten van communicatieapparatuur. Hiervoor moet u echter betalen met een kennelijk ontoereikende wisselkoers.

De ontwikkelaars van het ScaLAPACK-subroutinepakket, ontworpen voor het oplossen van lineaire algebra-problemen op multiprocessorsystemen waarin het aandeel communicatiebewerkingen groot is, formuleren de vereiste voor een multiprocessorsysteem als volgt: “De snelheid van interprocessoruitwisselingen tussen twee knooppunten, gemeten in MB /s, moet minimaal 1/10 piekprestaties van het rekenknooppunt zijn, gemeten in MFLOPS."

Clustertopologieën

Laten we eens kijken naar de topologieën die kenmerkend zijn voor de zogenaamde "kleine" clusters, bestaande uit twee tot vier knooppunten.

Topologie van clusterparen gebruikt bij het organiseren van clusters met twee of vier knooppunten (Fig. 5.5.3). Knooppunten zijn in paren gegroepeerd, schijfarrays zijn gekoppeld aan beide knooppunten die deel uitmaken van het paar, en elk knooppunt van het paar heeft toegang tot alle schijfarrays van dit paar. Eén van de knooppunten in het paar wordt gebruikt als back-up voor de andere.

Een clusterpaar met vier knooppunten is een eenvoudige uitbreiding van een topologie met twee knooppunten. Vanuit het oogpunt van beheer en configuratie worden beide clusterparen als één geheel beschouwd.

Deze topologie kan worden gebruikt om clusters met een hoge databeschikbaarheid te organiseren, maar fouttolerantie wordt alleen binnen een paar geïmplementeerd, aangezien de informatieopslagapparaten die tot een paar behoren geen fysieke verbinding hebben met een ander paar.

Schakelaar

TROS

TROS

TROS

TROS

Schijf

Schijf

Schijf

Schijf

Rijst. 5.5.3. Topologie van clusterparen

Met Topologie + 1 kunt u clusters van twee, drie en vier knooppunten maken (Fig.5.5.4). Elke schijfarray is verbonden met slechts twee clusterknooppunten. Schijfarrays zijn georganiseerd volgens het RAID1-schema (mirroring). Eén server heeft een verbinding met alle disk-arrays en dient als back-up voor alle andere (primaire of actieve) knooppunten. De standby-server kan worden gebruikt om hoge beschikbaarheid te bieden in combinatie met een van de actieve knooppunten.

De topologie wordt aanbevolen voor het organiseren van clusters met een hoge gegevensbeschikbaarheid. In configuraties waarin het mogelijk is om één knooppunt aan redundantie te wijden, kan deze topologie de belasting op actieve knooppunten verminderen en ervoor zorgen dat de belasting van een defect knooppunt kan worden gerepliceerd op het standby-knooppunt zonder prestatieverlies. Er wordt voorzien in fouttolerantie tussen elk van de primaire knooppunten en het back-upknooppunt. Tegelijkertijd staat de topologie geen globale fouttolerantie toe, omdat de belangrijkste clusterknooppunten en hun informatieopslagsystemen niet met elkaar zijn verbonden.

De ×-topologie is vergelijkbaar met de + 1-topologie, waardoor u clusters van twee, drie en vier knooppunten kunt maken, maar in tegenstelling tot deze heeft deze een grotere flexibiliteit en schaalbaarheid (Fig. 5.5.5).

Schakelaar

TROS

TROS

TROS

TROS

Schakelaar

TROS

TROS

TROS

TROS

Schakelaar

Schijf

Schijf

Schijf

Rijst. 5.5.5. Topologie ×

Alleen in deze topologie hebben alle clusterknooppunten toegang tot alle schijfarrays, die op hun beurt zijn gebouwd volgens het RAID1-schema (mirroring). De schaalbaarheid van de topologie komt tot uiting in het gemak waarmee extra knooppunten en schijfarrays aan het cluster kunnen worden toegevoegd zonder de verbindingen in het systeem te wijzigen.

TROS

TROS

TROS

TROS

Schijf

Schijf

Schijf

Schijf

Rijst. 5.5.6. Volledig gescheiden toegangstopologie

Volledig gescheiden toegangstopologie maakt het mogelijk dat elke disk-array met slechts één clusterknooppunt wordt verbonden (Fig. 5.5.6 ). Alleen aanbevolen voor toepassingen die worden gekenmerkt door een volledig gescheiden toegangsarchitectuur.

Controle vragen

1. Geef de definitie van een clustercomputersysteem.

2. Noem de belangrijkste voor- en nadelen van clustercomputersystemen.

3. Welke classificaties van clustercomputersystemen kent u?

4. Welke clustersysteemtopologieën kent u? Noem hun voor- en nadelen.

Literatuur

1. Architecturen en topologieën van computersystemen met meerdere processors / AV Bogdanov, V.V. Korchov, V.V. Mareev, EN Stankova. - M.: INTUIT.RU, 2004. - 176 p.

2. Microprocessorsystemen: leerboek. handleiding voor universiteiten /

E.K. Alexandrov, R.I. Groesjvitski, M.S. Kupriyanov en anderen; bewerkt door D.V. Puzankova . - Sint-Petersburg: Politekhnika, 2002. - 935 p.

Clustersysteem

Wat is een cluster?

Een cluster is een verzameling servers, schijven en werkstations die:
· Fungeren als één systeem;
· Gepresenteerd aan gebruikers als één systeem;
· Beheerd als één systeem;
Een cluster is ook een kans om de computerbronnen van uw systeem op zo'n manier te gebruiken dat het resulterende systeem qua mogelijkheden de totale mogelijkheden van zijn onderdelen overtreft.

De belangrijkste voordelen van het cluster zijn:
· Garanderen van een hoog beschikbaarheidsniveau in vergelijking met een ongelijksoortige verzameling computers of servers. De verhoogde systeembeschikbaarheid zorgt ervoor dat bedrijfskritische applicaties zo lang mogelijk blijven draaien. Kritieke toepassingen omvatten alle toepassingen die rechtstreeks van invloed zijn op het vermogen van een bedrijf om winst te maken, een dienst te verlenen of andere vitale functies te vervullen. Het gebruik van een cluster zorgt ervoor dat als een server of applicatie niet meer normaal functioneert, een andere server in het cluster zijn taken blijft uitvoeren en de rol van de defecte server overneemt om de downtime van de gebruiker als gevolg van een systeemstoring te minimaliseren.
· Aanzienlijke toename van de algehele netwerkprestaties (hoge mate van schaalbaarheid). Met een cluster kunt u de rekenkracht van het systeem flexibel vergroten door er nieuwe knooppunten aan toe te voegen zonder het werk van gebruikers te onderbreken.
· Lagere lokale netwerkbeheerkosten (goede beheerbaarheid).
· Zorgen voor een hoge beschikbaarheid van netwerkdiensten. Zelfs als een van de clusterservers uitvalt, blijven alle diensten van het cluster beschikbaar voor gebruikers.

Indeling in High Availability en High Performance systemen

In de functionele classificatie kunnen clusters worden onderverdeeld in “High Performance” (HP), “High Availability” (HA) en “Mixed Systems”.
Hogesnelheidsclusters worden gebruikt voor taken die aanzienlijke rekenkracht vereisen. Klassieke gebieden waar dergelijke systemen worden gebruikt zijn:
· beeldverwerking: weergave, patroonherkenning
· wetenschappelijk onderzoek: natuurkunde, bio-informatica, biochemie, biofysica
industrie (geografische informatieproblemen, wiskundige modellering)
en vele anderen…
Clusters, die worden geclassificeerd als systemen met hoge beschikbaarheid, worden overal gebruikt waar de kosten van mogelijke downtime hoger zijn dan de kosten van de kosten die nodig zijn om een ​​clustersysteem te bouwen, bijvoorbeeld:
facturatiesystemen
· Bankactiviteiten
· e-commerce
· ondernemingsbeheer, enz...
Gemengde systemen combineren de kenmerken van zowel de eerste als de tweede. Bij het positioneren ervan moet worden opgemerkt dat een cluster met zowel hoge prestaties als hoge beschikbaarheidsparameters zeker aan prestaties zal inboeten ten opzichte van een systeem dat zich richt op high-speed computing, en bij mogelijke downtime aan een systeem dat zich richt op het werken in de hoge beschikbaarheidsmodus.

Wat is een cluster met hoge beschikbaarheid?
Een cluster met hoge beschikbaarheid is een type clustersysteem dat is ontworpen om de continue werking van kritieke applicaties of services te garanderen. Door het gebruik van een high-availability cluster kunt u zowel ongeplande downtime als gevolg van hardware- en softwarestoringen voorkomen, als geplande downtime die nodig is voor software-updates of preventief onderhoud van apparatuur.

Een cluster bestaat uit twee knooppunten (servers) die zijn aangesloten op een gemeenschappelijke schijfarray. Alle hoofdcomponenten van deze disk-array (voeding, diskdrives, I/O-controller) zijn redundant en hot-swappable. Clusterknooppunten zijn via een intern netwerk met elkaar verbonden om informatie over hun huidige status uit te wisselen. Het cluster wordt aangedreven door twee onafhankelijke bronnen. De verbinding van elk knooppunt met het externe lokale netwerk is ook gedupliceerd.
Alle subsystemen van het cluster zijn dus redundant, dus als een element uitvalt, blijft het cluster als geheel operationeel.

Hoe het cluster werkt
Een cluster bestaat uit verschillende computers, knooppunten genoemd, waarop een UNIX- of Windows-gebaseerd besturingssysteem draait. Deze servers fungeren als één geheel ten opzichte van de rest van het netwerk: een krachtige “virtuele” server. Clients maken verbinding met het cluster zonder te weten welke computer hen daadwerkelijk zal bedienen. Ononderbroken toegang door clusters wordt bereikt door tijdige detectie van schendingen in de werking van hardware en software en automatische overdracht van gegevensverwerkingsprocessen naar een werkend knooppunt. In een standaardcluster is elk knooppunt verantwoordelijk voor het hosten van een bepaald aantal bronnen. Als een knooppunt of bronnen uitvallen, draagt ​​het systeem een ​​deel van de bronnen over naar een ander knooppunt en zorgt ervoor dat ze beschikbaar zijn voor clients.