Twee webservers aan elkaar knopen

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

  • Drop
  • Registratie: September 2001
  • Laatst online: 19-02-2022
Ik heb een website draaien op een Dual PIII-1GHz 512Mb. Op deze server draait Linux RedHed en ik gebruik een MySQL database en een rits PERL scripts. Voor mijn site heb ik veel rekenkracht nodig. Ik ben dus van plan een tweede dezelfde server aan te schaffen en deze aan de eerste te knopen.

Ik wil dat beide servers evenveel belast worden. Wat zijn de mogelijkheden, wat kan ik het best doen en hoe doe ik dat?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je kan de database en webserver scheiden.

Je zou es naar mod_backhand van apache (en vergelijkbare) kunnen kijken.
Je zou round-robin dns kunnen gebruiken (zo werkt www.tweakers.net nu)

Of je zou iets als een linux-virtual-server of een echte hardware loadbalancer kunnen maken...

  • SiErRa
  • Registratie: Februari 2000
  • Laatst online: 05-05 12:36
je kan het met een loadbalancer doen (deze zijn dacht ik ook hardwarematig te krijgen) maar het kan ook met een extra pc (die niet zo snel hoeft te zijn) met lvs (linux virtual server).

  • Drop
  • Registratie: September 2001
  • Laatst online: 19-02-2022
Je zou es naar mod_backhand van apache (en vergelijkbare) kunnen kijken.
Je zou round-robin dns kunnen gebruiken (zo werkt www.tweakers.net nu)

Of je zou iets als een linux-virtual-server of een echte hardware loadbalancer kunnen maken...
Ik heb niet veel verstand hiervan. Wat is round-robin, linux-virtual-server en een loadbalancer? Wie kan mij dat uitleggen?

Overigens, het zijn de PERL-scripts die veruit de zwaarste belasting vormen voor de server.

  • JointFillah
  • Registratie: Juli 2000
  • Laatst online: 26-04 19:07

JointFillah

Techno Addict

- RoundRobin DNS:
Een DNS-trucje dat redelijk werkt, maar soms het tegenovergestelde effect kan hebben......
- LVS (Linux-Virtual-Server):
Centraal Linuxbakkie dat van alle webservers 'achter' hem het 'hartritme' (De Load van de webserver....hoe hoger het hartritme, hoe harder de webserver aan het werk is) bijhoudt en aan de hand daarvan worden binnenkomende requests voor de website doorgegeven aan de webserver die het laagste hartritme heeft en dus het minst te doen heeft. Werkt goed, omdat het geen gebruik maakt van vertragende DNS-records...het internet ziet de LVS als de webserver voor de betreffende website, terwijl het in werkelijkheid gewoon een doorgeefluik is ;)
- LoadBalancer:
Doet hetzelfde als LVS, maar dan voor heel wat $$$$ meer :+

Mijn advies: Kijk ff op http://www.linuxvirtualserver.org

~* Peace, Love & XTC *~


Verwijderd

Op woensdag 10 oktober 2001 19:37 schreef Drop het volgende:
Overigens, het zijn de PERL-scripts die veruit de zwaarste belasting vormen voor de server.
Die Perl jobs, belasten die het systeem omdat ze zo zwaar zijn en zo lang draaien? Of zijn het een heleboel Perl jobs die continu gestart worden?

Als het zware jobs zijn zou ik een extra machine neerzetten met round-robin.
Als het een heleboel kleine Perl jobs zijn zou ik mod_perl gaan gebruiken.

-Marco

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 06:27

Kees

Serveradmin / BOFH / DoC
Op woensdag 10 oktober 2001 22:45 schreef JointFillah het volgende:
- LVS (Linux-Virtual-Server):
Centraal Linuxbakkie dat van alle webservers 'achter' hem het 'hartritme' (De Load van de webserver....hoe hoger het hartritme, hoe harder de webserver aan het werk is) bijhoudt en aan de hand daarvan worden binnenkomende requests voor de website doorgegeven aan de webserver die het laagste hartritme heeft en dus het minst te doen heeft. Werkt goed, omdat het geen gebruik maakt van vertragende DNS-records...het internet ziet de LVS als de webserver voor de betreffende website, terwijl het in werkelijkheid gewoon een doorgeefluik is ;)
ww.linuxvirtualserver.org[/url]
Volgens mij kijkt hij niet naar hoe hard de webserver bezig is, daar zijn wel custom scripts voor, maar echt goed doet hij het nog niet ;)

je kan een "gewicht" aan een server meegeven, en deze veranderen als dat nodig is (naar bijv. 0 als de server erachter niet meer reageert).
Verder kun je een tweede lvs laten meelopen die kijkt of de eerste het nog doet, als dat niet het geval is neemt hij het ip over en fungeert dus als een failover :)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Drop
  • Registratie: September 2001
  • Laatst online: 19-02-2022
Op woensdag 10 oktober 2001 22:55 schreef MarcoTC het volgende:

Die Perl jobs, belasten die het systeem omdat ze zo zwaar zijn en zo lang draaien? Of zijn het een heleboel Perl jobs die continu gestart worden?
Het zijn redelijke kleine peel-jobs (binnenkomende data verwerken en updaten in de MySQL DB) die onwijs vaak gerunt worden.
Als het een heleboel kleine Perl jobs zijn zou ik mod_perl gaan gebruiken.
Wat is 'mod_perl'? En wat is het voordeel ervan?

Verder begrijp ik uit de woorden van JointFillah dat een Linux-Virtual-Server een 'linuxbakkie' is, dus een aparte computer is die het verkeer zeg maar split naar de achterliggende twee de servers. En hoe werkt/wat is een LoadBalancer dan?

Nu begrijp ik alleen nog niet hoe de servers onderling de gevens uitwisselen met een LVS of Loadbalancer. De MySQL DB kan volgens mijn natuurlijk maar op één van de servers staan.

Zijn er ook oplossingen zonder 'linuxbakkie'? Dus dat op server 1 de requests binnenkomen en als deze te druk is deze doorspeelt naar server 2?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op woensdag 10 oktober 2001 23:33 schreef Drop het volgende:
Wat is 'mod_perl'? En wat is het voordeel ervan?
Zoek het even op bij: http://perl.apache.org/

Is een "in apache geintegreerde perl engine" oftewel, er worden niet continu losse perljobs gestart maar 1 grote die alle scripts uitvoert...

Zal _veel_ schelen op de executietijd. Volgens mij heeft redhat 7.1 die module wel als rpm installeerbaar. Config van apache aanpasen zodat .pl scripts door mod_perl uitgevoerd worden en mod_perl aanzetten...

Zou wel es voldoende voor je probleem kunnen zijn (en daarna kan je rustig verder zoeken)

Verwijderd

Op woensdag 10 oktober 2001 23:33 schreef Drop het volgende:
Het zijn redelijke kleine peel-jobs (binnenkomende data verwerken en updaten in de MySQL DB) die onwijs vaak gerunt worden.
Gewoon mod_perl gaan gebruiken dan en nooit meer denken aan perl-cgi. Ben je voorlopig van al je problemen af. Installeren is 5 minuten en als je je scripts een beetje volgens de regels in elkaar hebt geflanst (geen globals e.d.) dan kun je je scripts nagenoeg zonder aanpassingen overzetten.
Wat is 'mod_perl'? En wat is het voordeel ervan?
Ga naar Amazon en koop het boek 'Writing Apache Modules with Perl and C' van O'Reilly. Het beste boek op dit gebied en het leest lekker weg. :)

Een 'normaal' perl script draait 'buiten' apache en omdat het een scripting taal is moet bij elke keer dat het script aangeroepen wordt, Perl gestart worden en het script gecompileerd worden.

Met mod_perl hijs je als het ware het script binnen Apache. Het wordt 1 x gecompileerd en blijft daar draaien als subroutine. Het voordeel is dat dit abnormaal veel scheelt in performance als je dit vergelijkt met scipts die constant aangeroepen worden.
Een hoop andere modules maken hier ook gebruik van. DBI zorgt er b.v. automagisch voor dat je niet iedere keer naar MySQL hoeft te connecten. Gewoon niet meer closen en de rest gaat vanzelf.

Er zijn een paar dingen waar je rekening mee moet houden maar 'use strict' helpt je wel herinneren aan de dingen die je verkeerd doet. Globals gebruiken kan dus niet zomaar meer omdat deze niet uit zichzelf gecleard worden en exit's zijn uit den boze.

Een ander voordeel is dat je de beschikking krijgt over de hooks binnen Apache. Je kan hiermee b.v. je eigen parsers schrijven omdat je overal kan ingrijpen.

Wedden dat je geen extra machine nodig hebt?

  • JointFillah
  • Registratie: Juli 2000
  • Laatst online: 26-04 19:07

JointFillah

Techno Addict

Op woensdag 10 oktober 2001 23:33 schreef Drop het volgende:

[..]

Het zijn redelijke kleine peel-jobs (binnenkomende data verwerken en updaten in de MySQL DB) die onwijs vaak gerunt worden.
[..]

Wat is 'mod_perl'? En wat is het voordeel ervan?

Verder begrijp ik uit de woorden van JointFillah dat een Linux-Virtual-Server een 'linuxbakkie' is, dus een aparte computer is die het verkeer zeg maar split naar de achterliggende twee de servers. En hoe werkt/wat is een LoadBalancer dan?

Nu begrijp ik alleen nog niet hoe de servers onderling de gevens uitwisselen met een LVS of Loadbalancer. De MySQL DB kan volgens mijn natuurlijk maar op één van de servers staan.

Zijn er ook oplossingen zonder 'linuxbakkie'? Dus dat op server 1 de requests binnenkomen en als deze te druk is deze doorspeelt naar server 2?
Ehm nou die lvs is een apart 'linuxbakkie' omdat als bijv. server 1 down is, je site gewoon up blijft doordat alles doorgestuurd wordt naar server2......en voor het geval lvs/linuxbakkie#1 dood gaat, moet je zoals Kees al zei eigenlijk nog zo'n lvs-ding neerzetten die het dan kan overnemen als lvs/linuxbakkie#1 het begeeft.....
Eigenlijk zou je inderdaad om het helemaal mooi te maken nog eem aparte DB-server kunnen aanleggen en server1 en 2 gewoon puur als webservers/perl-kamelen gebruiken....

Maar zo te horen heb je zelfs mod_perl nog niet draaien...die zou ik als ik jou eerst us gaan draaien......misschien dat je niet eens een 2e server nodig heb....dat scheelt weer een hoop centjes en tijd ;)

~* Peace, Love & XTC *~

Pagina: 1