Bekijk Volledige Versie : Cluster en Cronjobs
Hi,
Ik zit momenteel met de gedachtes over een cluster.
Hoe zit dit met cronjobs?
Als een hostingpakket een cronjob heeft, en deze over alle cluster nodes in de crontab staat, dan zal die dus 5 keer gestart worden, niet echt de bedoeling.
Je zou 1 server alle cronjobs kunnen laten afhandelen, maar wat als die uitvalt?
Of zouden 2 servers met cronjobs moeten draaien die elkaar opvangen middels heartbeat?
Heeft iemand hier ervaring mee, of beter nog, een oplossing voor gemaakt?
De cronjob wordt toch maar op 1 server gedraait? Een cluster werkt alsnog maar met 1 Storage server naar mijn weten...
Cronjobs gewoon mee replicaten naar alle servers, alleen netjes een check er in bouwen of de server waar de cronjob op gestart wordt, wel de master is. Zo ja, draait 't script gewoon, zo nee, gebeurt er niets.
AlexanderOnline
01/12/07, 19:27
De cronjob wordt toch maar op 1 server gedraait? Een cluster werkt alsnog maar met 1 Storage server naar mijn weten...
Nee, de storage server is puur voor opslag. Je laat andere servers in het clustur de pagina's serveren en ook crons verwerken.
Cronjobs gewoon mee replicaten naar alle servers, alleen netjes een check er in bouwen of de server waar de cronjob op gestart wordt, wel de master is. Zo ja, draait 't script gewoon, zo nee, gebeurt er niets.
Die oplossing zou wel kunnen, maar denk dat je dan te moeilijk gaat denken.
Het lijkt me eerder dat hier een makkelijkere oplossing voor is.
Ik zou in eerste instantie gewoon 1 server gebruiken. Als het nodig voor bijvoorbeeld extra zekerheid, dan kan je later een tweede server gaan gebruiken.
Wat je kan toen bij een cronjob die elke vijf minuten moet lopen, server cronjob1 op de even tientallen laten werken en op cronjob2 de oneven tientallen laten werken. Hierdoor is bij uitval van altijd een server die de cronjobs draait maar dan minder vaak.
Misschien dat Wido van PCX wil reageren, dat is toch een bekende partij met een Clustertechniek, en Byte zit (zover ik weet) niet op WHT.
Hoe cluster jij, wat voor cluster software gebruik je en hoe repliceer jij je data?
Ehm, meerdere Linux servers (slackware) en in repliceer niets, er is gewoon 1 fileserver.
Maar dat lijkt me totaal niet relevant voor dit probleem.
Alles wat je in je cronjob heb zitten, kan je ook gewoon vanuit 1 script opstarten (BASH, Ruby, php cli whatever). Vervolgens is het vrij eenvoudig om te checken of een cronjob wel heeft gelopen en zoniet alsnog uit te voeren. Eigenlijk zoals Jurian al aangeeft. Vrij eenvoudig te doen allemaal.
Zo kan je het inderdaad ook doen.Je moet er ook aandenken wat je doet als het script langer loopt dan de interval van de cronjob. Of je moet alle opdrachten paralel starten.
Misschien dat Wido van PCX wil reageren, dat is toch een bekende partij met een Clustertechniek, en Byte zit (zover ik weet) niet op WHT.Ja hoor!
Onze Shell servers zijn allemaal gevirtualiseerd in een Xen omgeving. Daar hebben we weer een failover in.
Je wil namelijk je klanten niet opzadelen met het feit dat zei een check maken in hun cron om te voorkomen dat hij 10x wordt uitgevoerd, dat werkt niet.
In je cluster moet je ook taken uitbesteden.
Stel je hebt 7 servers:
- 4x webserver
- 1x FTP-server
- 1x SSH-server
- 1x SQL-server
De webservers kan je gewoon draaien, die hebben geen crons nodig.
De andere 3 servers kan je weer virtualiseren en een failover op doen, door middel van Xen en iSCSI.
Op je storage draai je dan NFS voor de webservers en de websites en iSCSI voor de virtuele machine's.
Je moet het je zelf niet te moelijk gaan maken met allemaal checks e.d., dat maakt de boel allemaal zo complex dat er daardoor fouten gaan optreden.
Wij hebben recentelijk een cluster online gebracht,
hierin is onze configuratie:
6 x Webserver (Handling)
1 x NFS (Filesystem)
2 x MySQL
1 x Control server
Vanuit de Control server schrijven we per Handling server die in use is een file uit met een (serie) commando(s) als er iets gedaan moet worden op een bepaalde server gewoon met command`<serverid>`.sh bestand op de handling server draait er een cronjob elke 5 minuten die kijkt of het bestand bestaat, zoja, dan voert hij de handelingen uit die in het bestand staan uit, en verwijderd het bestand daarna weer.
De control server monitored ondertussen ook de health van de machines qua temperatuur, processes e.d.
Loadbalancing wordt gedaan dmv Cisco Localdirectors (die in failover met elkaar draaien).