PDA

Bekijk Volledige Versie : minder afhankelijk van hardware



Deepdelver
17/02/09, 12:16
Hey allemaal,

Ik ben op zoek naar een oplossing om minder afhankelijk te zijn van defecte hardware.

Mijn visie:
Wanneer er nu een server stuk gaat zijn de gebruikers op die server down er is dus geen fallback mogelijkheid. Ditzelfde geld voor een zeer drukke site alle andere gebruikers hebben hier dan last van.

Wat ik wil:
Ik wil een aantal clusters bouwen waarbij ik gewoon servers kan bijplaatsen wanneer dit nodig is of een server vervangen wanneer hij stuk gaat zonder dat de gebruikers gelijk offline zijn. Hierdoor kan ik gemakkelijk overcapaciteit inbouwen.

Wat ik niet weet:
Is hoe dit te realiseren en of dit uberhaubt mogelijk is, ik heb wel even gekeken naar OpenMPI maar ben er nog niet achter of dit ook werkt in combinatie met vps, directadmin en gameservers.


Graag hoor ik jullie visie... :o

QBell
17/02/09, 12:51
Dit kan met vps servers.

In VMWare (en in combinatie met VMotion), is het modelijk dat als 1 server uit valt, alle servers die daarop horen te draaien automatisch over gezet worden op een andere machine.

Je hebt hiervoor overigens wel een shared storage nodig. want als je alle VM's opslaat op de lokale HDD kan hij niks kopieren als de server uitvalt ;)


Ik hoop dat ik het zo een beetje in leken taal heb uitgelegd voor je. Mocht je meer info willen, kan je altijd even contact met mij opnemen.

Mark17
17/02/09, 13:22
Kan met XEN icm een paar scripts in principe ook, enige is dat vlak voor de downtime de move in gang moet worden gezet of de kans op een reboot/corrupe mysql databases is groot.

Deepdelver
17/02/09, 13:41
Dit kan met vps servers.

In VMWare (en in combinatie met VMotion), is het modelijk dat als 1 server uit valt, alle servers die daarop horen te draaien automatisch over gezet worden op een andere machine.

Je hebt hiervoor overigens wel een shared storage nodig. want als je alle VM's opslaat op de lokale HDD kan hij niks kopieren als de server uitvalt ;)


Ik hoop dat ik het zo een beetje in leken taal heb uitgelegd voor je. Mocht je meer info willen, kan je altijd even contact met mij opnemen.

Dit is ook een oplossing maar je deelt met deze methode niet de performance toch? ik wil eigenlijk een cluster bouwen die zich voordoet als 1 machine maar zijn taken onderverdeeld onder de nodes.

QBell
17/02/09, 14:08
Dat klopt, in deze opstelling heb je inderdaad geen clustering van applicaties.
Dit is ook niet zo heel erg gangbaar (lees: alleen de grotere hosting bedrijven doen dit soort dingen). Dit omdat het een ingrijpend proces is, en de meeste applicaties niet ontwikkeld zijn voor clustering. Daardoor is het vaak een duur en lang traject voordat alles (redundant) geclusterd is.

Deepdelver
17/02/09, 14:12
Dat klopt, in deze opstelling heb je inderdaad geen clustering van applicaties.
Dit is ook niet zo heel erg gangbaar (lees: alleen de grotere hosting bedrijven doen dit soort dingen). Dit omdat het een ingrijpend proces is, en de meeste applicaties niet ontwikkeld zijn voor clustering. Daardoor is het vaak een duur en lang traject voordat alles (redundant) geclusterd is.

Mja dat begreep ik ook al, maar volgens mij moet het toch kunnen.

Als je kijkt naar http://nl.wikipedia.org/wiki/OpenVMS dit project is helaas gestopt maar was erg goed bezig gewoon een operating systeem die al zijn opdrachten uitbesteed. Hierdoor hoeven je applicaties niet herschreven te worden.

Ik ben nu aan het lezen over perceus is ook zoiets. Als jullie nog leuke tegen komen meld ze me.

hostlogic.nl
17/02/09, 14:27
Ik mis in je vraagstelling het doel van deze servers.

Als je verwacht dat je een aantal servers kunt clusteren en hier vervolgens alle mogelijke applicaties op wilt draaien (alsof het een single system is), dan zit er niks anders op om gebruik te maken van de hierboven genoemde virtualisatie technieken. Aangezien je applicaties dan niet HA-aware zijn, kunnen verbindingen tijdelijk wegvallen als gevolg van een hardware storing. Verder zijn virtuele systemen beperkt tot de capaciteit van 1 fysieke server, je kunt dus niet eenvoudig capaciteit toevoegen (afgezien van het upgraden van de individuele servers).

Als je precies weet wat je wilt gaan doen, dan is het vaak beter om een maatwerk oplossing te gebruiken, waarbij bijvoorbeeld een aantal servers dienst doen als webserver en zo de load verdelen. Als je meer capaciteit nodig hebt, dan voeg je een extra server toe. Als er een server uitvalt, worden de verbindingen overgenomen door de andere servers, in veel gevallen merkt de gebruiker hier zelfs helemaal niks van. Je applicaties zijn HA-aware en dat maakt deze opzet over het algemeen duurder en lastiger te beheren. Voor zover ik weet zijn er bijvoorbeeld geen control panels (zoals DA of Plesk) die goed werken in een geclusterde omgeving.

Deepdelver
17/02/09, 15:10
Wij hebben een applicatie draaien die uit meerdere processen bestaan het probleem is alleen dat de cpu load t veel word voor 1 machine dit is de reden waarom wij aan het kijken zijn naar dit soort cluster oplossingen.

Wat we dus willen is een soort supercomputer te creƫren uit alle servers die we hebben staan.

bakkerl
17/02/09, 15:37
Maak meerdere virtuele machines aan, elk met hun eigen taak (bij voorbeeld: 1x web, 1x database, 1x applicatie, 1x ...). Gooi deze in een vmware cluster met vmotion en drs erop.. en de virtuele machines gaan we 'hoppen' over de host servers als het niet meer bij elkaar past. Host-servers kun je zo bij plaatsen zonder dat je applicaties het merken.

De maximale resources wat 1 virtuele machine (dus 1 taak) kan vragen, is dan gelijk aan de resources van de fysieke host-server (minus een kleine overhead).

DennisWijnberg
17/02/09, 16:44
Maak meerdere virtuele machines aan, elk met hun eigen taak (bij voorbeeld: 1x web, 1x database, 1x applicatie, 1x ...). Gooi deze in een vmware cluster met vmotion en drs erop.. en de virtuele machines gaan we 'hoppen' over de host servers als het niet meer bij elkaar past. Host-servers kun je zo bij plaatsen zonder dat je applicaties het merken.

De maximale resources wat 1 virtuele machine (dus 1 taak) kan vragen, is dan gelijk aan de resources van de fysieke host-server (minus een kleine overhead).

Inderdaad. Liefst nog met een SAN eronder. Kan je ook nog eens in no-time een restore uitvoeren als (door eigen toedoen) een DB corrupt raakt oid...

bakkerl
17/02/09, 16:51
Inderdaad. Liefst nog met een SAN eronder. Kan je ook nog eens in no-time een restore uitvoeren als (door eigen toedoen) een DB corrupt raakt oid...
Een SAN wil nog niet zeggen dat je altijd in no-time een restore kan uitvoeren.. niet elk SAN ondersteunen snapshots (of gelijke technieken). De equallogics apparatuur welke Dennis graag wil verkopen ondersteunt het wel, maar een elchiepo bakje met openfiler zal het niet ondersteunen.

Maar shared storage is wel een van de vereiste voor vmware als je vmotion wil gaan gebruiken. En openfiler is daar ook genoeg voor ;) (even totaal niet gesproken over de performance over beide oplossingen.. alles heeft zijn voor en nadeel).

DennisWijnberg
17/02/09, 16:55
<offtopic>de NetApp of de Nimbus ondersteunt het ook hoor. Dit was geen commerciele reactie, anders had ik wel merknamen en meer commerciele bla bla genoemd ;)</offtopic>

Maar ja, VMware met vMotion en de DRS doet precies wat jij wilt!

Deepdelver
17/02/09, 21:50
Wat raden jullie dan aan voor de volgende situatie: Ik heb een applicatie die multithreaded is geschreven draaien voor de synchronisatie van data tussen applicaties. Het probleem is dat deze applicatie het steeds drukker krijgt en inmiddels een quad core machine voor 100% opslokt.

Ik kan de applicatie niet nog een keer op een andere machine starten omdat ze dan dezelfde taken gaan uitvoeren en alles in de soep loopt.

bakkerl
17/02/09, 21:58
2 oplossingen:
- Neem een dual quadcore machine (of een 4x quadcore machine).
- De applicatie laten herschrijven/aanpassen zodat die wel op meerdere machines tegelijker
tijd kan draaien, zonder dat elke instance elkaar in de weg zit.

Bakker ICT
17/02/09, 22:05
Wat raden jullie dan aan voor de volgende situatie: Ik heb een applicatie die multithreaded is geschreven draaien voor de synchronisatie van data tussen applicaties. Het probleem is dat deze applicatie het steeds drukker krijgt en inmiddels een quad core machine voor 100% opslokt.

Ik kan de applicatie niet nog een keer op een andere machine starten omdat ze dan dezelfde taken gaan uitvoeren en alles in de soep loopt.

Wellicht is het handiger als je even uit legt wat voor data je syncroniseert. Als je zegt dat het "taken" zijn, kan je natuurlijk via een database deze taken prima verdelen lijkt mij.

Deepdelver
17/02/09, 22:10
Wellicht is het handiger als je even uit legt wat voor data je syncroniseert. Als je zegt dat het "taken" zijn, kan je natuurlijk via een database deze taken prima verdelen lijkt mij.

Ik kan/mag hier niet zoveel over zeggen, maar neem van mij aan dat er een applicatie is die steeds meer cpu load gaat vragen en dat 1 machine hier niet genoeg voor is.

Bakker ICT
17/02/09, 22:15
Prima, maar hoevaak het niet voor komt dat mensen de boel aan de hardwarekant opschalen terwijl er veel meer winst te behalen is door de softwarematige kant of architectuur te verbeteren.

Deepdelver
17/02/09, 22:21
Prima, maar hoevaak het niet voor komt dat mensen de boel aan de hardwarekant opschalen terwijl er veel meer winst te behalen is door de softwarematige kant of architectuur te verbeteren.

Ja ik begrijp je punt, en bedank je ook voor het meedenken. Maar de kosten om de applicatie aan te laten passen zijn vele malen hoger als nieuwe hardware aanschaffen alleen komt daar een keer een eind aan.

bakkerl
17/02/09, 22:27
Ja ik begrijp je punt, en bedank je ook voor het meedenken. Maar de kosten om de applicatie aan te laten passen zijn vele malen hoger als nieuwe hardware aanschaffen alleen komt daar een keer een eind aan.
Maar je vraag hier of we mee willen denken, maar je wil verder geen info geven...

Ach.. en wanneer komt er een eind aan.. Je zit nog niet aan de systemen met 64CPU's en een paar TB aan geheugen ;)

Bakker ICT
17/02/09, 22:31
Ja goed, dat kan ik moeilijk inschatten ;) Toch lijkt het me verstandig eens naar te kijken, want met nieuwe hardware maak je het volgens mij alleen maar complexer ...

Deepdelver
17/02/09, 22:32
Maar je vraag hier of we mee willen denken, maar je wil verder geen info geven...

Ach.. en wanneer komt er een eind aan.. Je zit nog niet aan de systemen met 64CPU's en een paar TB aan geheugen ;)

Hehe das waar maar volgens mij is die info ook niet van toepassing ik vraag eigenlijk alleen of er iets bestaat om alle huidige servers op 1 grote berg te gooien. De vragen van wat de applicatie inhoudelijk doet lijkt me niet van toepassing voor deze vraag.

bakkerl
17/02/09, 22:38
Hehe das waar maar volgens mij is die info ook niet van toepassing ik vraag eigenlijk alleen of er iets bestaat om alle huidige servers op 1 grote berg te gooien. De vragen van wat de applicatie inhoudelijk doet lijkt me niet van toepassing voor deze vraag.
De manier waarop jij het wilt, thread over meerdere fysieke machines vanuit het onderliggende OS geregeld, is er niet standaard. Dan moet je dus je applicatie cluster aware maken... maar dat wil je dus niet... En dat we creatief gaan meedenken wil je ook niet...

Dan is het wachter totdat je op de fysieke hardware limieten komt... Het is te hopen voor je dat de hardware elk jaar sneller wordt, dan je applicatie nodig zal hebben..

Deepdelver
17/02/09, 22:45
De manier waarop jij het wilt, thread over meerdere fysieke machines vanuit het onderliggende OS geregeld, is er niet standaard. Dan moet je dus je applicatie cluster aware maken... maar dat wil je dus niet... En dat we creatief gaan meedenken wil je ook niet...

Dan is het wachter totdat je op de fysieke hardware limieten komt... Het is te hopen voor je dat de hardware elk jaar sneller wordt, dan je applicatie nodig zal hebben..

Die laatste zin is dus ook hetgeen waar ik mee zit :)

Het is dus niet mogelijk om de applicatie voor nu te laten zoals hij is en d.m.v. een HPC cluster alles te bundelen en dat het main os zijn taken gaat verdelen onder zijn slaaf computers?

bakkerl
17/02/09, 23:13
Het is dus niet mogelijk om de applicatie voor nu te laten zoals hij is en d.m.v. een HPC cluster alles te bundelen en dat het main os zijn taken gaat verdelen onder zijn slaaf computers?
Applicaties welke op een HPC cluster komt te staan, zijn cluster aware.. de applicatie is erop geschreven....

Welk deel snap je nu nog niet dat een applicatie passend moet zijn voor de omgeving. Jou applicatie is nu single machine gemaakt en zal dus nooit werken op wat voor cluster dan ook als het gaat om resources van verschillende stukken ijzer bij elkaar op te tellen. Je wil niet zeggen wat het doet.. dus zit je vast aan de eerdere 2 opties die ik je gaf.

Deepdelver
17/02/09, 23:44
Applicaties welke op een HPC cluster komt te staan, zijn cluster aware.. de applicatie is erop geschreven....

Welk deel snap je nu nog niet dat een applicatie passend moet zijn voor de omgeving. Jou applicatie is nu single machine gemaakt en zal dus nooit werken op wat voor cluster dan ook als het gaat om resources van verschillende stukken ijzer bij elkaar op te tellen. Je wil niet zeggen wat het doet.. dus zit je vast aan de eerdere 2 opties die ik je gaf.

Ja of nee was ook voldoende hoor, maar in elk geval bedankt voor je vriendelijke antwoord.

Maargoed ben nog even aan het verder zoeken en zoals ik het nu lees zou mosix een oplossing kunnen zijn. voor de mensen die het ook interessant vinden http://www.mosix.org/