[Apache] Load balancing op externe server

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

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
Ik heb een server met een leuk draaiende website (soort van profielen/foto site), de server heeft een uplink via een XS4ALL verbinding, dit is eigenlijk te weinig, maar de site is niet voor professionele doeleinden bedoeld en ik beheer met veel plezier de server dus ik wil niet professionele co-located hosting doen. Om toch de upload te compenseren zat ik aan een vorm van load balancing te denken.

Om dit te bereiken heb ik eventueel een 2e server van mijn broer tot zijn beschikking te staan, beide servers draaien Linux Ubuntu. Helaas staan de servers dus niet via een intern netwerk met elkaar verbonden maar ze zijn enkel via internet verbonden. De load die ik wil balancen is dus geen processor load maar network load.

Ik ben natuurlijk gaan uitzoeken op google naar load balancing maar ik krijg lichtelijk de indruk wat ik wil nogal omslachtig is, misschien moet ik het probleem in fases verdelen ofzo...

Server 1
Software: Apache/Php/Mysql website
Doel: hier worden de foto's op geupload, en bij upload verkleind.
Bij profielen bekijken wordt een image script gebruikt die er een logo on the fly op renderd, als dit voor het eerst gedaan wordt, wordt hij ook opgeslagen in een cache directory voor CPU besparing.

Server 2
Software: Apache
Doel: Ik zou de statische cache afbeeldingen van Server1 hier naartoe kunnen kopieeren via internet zodat ze op 2 locatie's bereikbaar zijn.

Idee
als ik voor de afbeeldingen nu een virtual host op server1 maak, bijvoorbeeld cache.domein.nl dan zou ik voor deze virtual server een mod_proxy kunnen aanroepen. In de dns zou ik cache2.domein.nl naar server 2 kunnen laten verwijzen, en een reverse proxy naar dit internet domein kunnen laten verwijzen. Erop hopend dat bij een aanvraag naar cache.mijndomein.nl/foto.jpg kunnen balancen naar cache2.mijndomein.nl/foto.jpg.

Waarschijnlijk probleem
Ik weet te weinig van mod_proxy, en ik vrees dat ik het niet kan gebruiken in mijn situatie omdat, (om maar eens 1 voorbeeld te geven) de server niet echt rechtstreeks aan internet zit maar achter een NAT router, dus de server kan zijn werkelijke uploadlimiet niet echt beoordelen. Daarbij komend, hoe weet server1 de load van server2 ?

Idee 2
het image script bestand gewoon random servers laten kiezen bij weergeven.

Ik zou heel graag van mensen met ervaringen in network load balancing wat tips & pointers willen krijgen zodat ik geen uitzoek werk hoef te doen wat op een dood punt eindigt, m.a.w. direct willen met de juiste software te werken om het doel te bereiken.

Verwijderd

Ik heb geen ervaring met wat je wil bereiken, maar is het geen idee om bvb enkel de foto's op de twee servers te zetten (die zullen tenslotte veruit het meest bandbreedte slurpen vermoed ik) en links naar foto's te genereren 'at random naar een van de twee servers'?

Dus jouw server genereert pagina's met onder andere links naar foto's (jouw server draait php). In 50% van de gevallen zijn dat links naar jouw server, in de andere 50% links naar de andere server. Ik ben geen php expert, maar een random functie zal php wel hebben dus dat lijkt me makkelijk te bereiken :)

Ok, jouw server moet nog steeds alle pagina's genereren maar dat is CPU load en dat is het probleem niet als ik je verhaal lees. Echte load balancing hebt je op deze manier natuurlijk niet (jouw server eruit == geen pagina's) maar het is wel 'bijna triviaal' om te doen.

Zo maar een idee :)

[edit]
Na een tweede keer nadenken kom ik tot de conclusie dat wat ik zeg zo ongeveer is wat jij bij 'idee 2' hebt gepost. Ik ben weer wakker hoor... :X

[ Voor 8% gewijzigd door Verwijderd op 21-09-2007 23:03 ]


  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
Hahaha inderdaad, das zo'n beetje idee 2, waar ik ook niet echt vies van ben (goede vriend had die nog ff snel bedacht)

Maar ik zou het aan de Apache kant ook wel waarderen. Nu ik er langer over nadenk lijkt het probleem "hoe houd je server 2 snel genoeg up 2 date" moeilijker dan het feitelijke load balancen. Hiervoor had ik een incrementele Rsync sessie via SSH in gedachten, maar zelf dat is niet voldoende omdat de nieuwste foto's ook on the fly bijna moeten worden gekopieerd.

Als immers een gebruiker een foto upload en daarna direct wil bekijken (waarbij toevallig server 2 wordt toegewezen) dan zal de foto direct beschikbaar moeten zijn.

Verwijderd

Hier is gewoon een goede mogelijkheid voor...

Je hebt in je domein DNS, een A record voor "www" op je eigen IP staan.

Gewoon in de DNS een 2e record voor "www" toevoegen met het IP van de andere server.

Dan zal de DNS de clients om en om naar de verschillende servers sturen.

Maar ik weet niet zeker of dan ook de helft van de clients geen pagina zou krijgen als 1 van de servers eruit ligt. Mss is daar ook nog iets op te maken, maar daar heb ik geen ervaring mee.

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
Als dat goed werkt kan ik gewoon meerdere keren cache.domein.nl in de dns zetten, en die virtual host hoeft dan enkel de afbeeldingen te bevatten. Dat zou super kunnen werken!

  • benoni
  • Registratie: November 2003
  • Niet online
Je kunt ook met mod_rewrite load balancing creëren, dat heeft als voordeel dat je a la minute en/of automatisch (en zonder DNS-cache perikelen) de serverpool kunt aanpassen, bijvoorbeeld bij uitval of onderhoud van een server.

Zie ook de Rewriting Guide van Apache, onder het kopje 'Load Balancing' worden de verschillende methodes uitgelegd.

  • Icey
  • Registratie: November 2001
  • Laatst online: 30-01 09:52
Ik heb zelf ook een upload script geschreven die de afbeeldingen netjes resized en lokaal opslaat. Het is natuurlijk eenvoudig om daaronder diezelfde afbeeldingen ook via FTP op de remote server te zetten. PHP heeft redelijk eenvoudige FTP functies, dus dat moet niet zo'n probleem vormen.
Pagina: 1