Toon posts:

"location balancing"

Pagina: 1
Acties:

Verwijderd

Topicstarter
Misschien een beetje vage naam voor dit topic, maar ik zal proberen uit te leggen wat ik bedoel:

Stel we hebben een webserver (of een clusters van webservers) op locatie U (in de US of A), N (in Nederland) en J (Japan).

Al deze servers draaien precies dezelfde website (het gaat om een druk bezochte website zullen we maar eens stellen).

Nu is de bedoeling dat zodra ik in mijn browser "www.website.com" inklop, dat ik op de website terecht kom, die door die webservers wordt gehost, maar dat ik altijd op die webserver terecht kom die voor mij het dichtste bijzit.

De vraag is nu.. wat is hiervoor de ideale oplossing (het is de bedoeling dat het 100% transparant gebeurt).

Mijn idee: doe het met behulp van DNS; de DNS spuugt dan altijd dat IP van de server uit die voor die bezoeker het dichtste bij zit. Aangezien 99% van alle Internetters een nameserver gebruikt die lokaal bij de provider staat, dacht ik dat DNS een goede benadering is die ook nog redelijk transparant is. Tevens cachen de meeste providers DNS request, daarmee zal de load op de DNS waarschijnlijk ook wel meevallen.

De vraag is alleen, hoe vind je nu de dichtsbijzijnde server voor een bepaalde request...

Zaken die ik al heb overwogen:
- Reverse lookup: te onbetrouwbaar... vaak staat het niet ingesteld en de resultaten zijn te subjectief.
- Traceroutes: te langzaam
- BGP routing tables: dit leek mij de beste oplossing, maar redelijk moeilijk te implementeren

Mijn vraag is dus nu of iemand anders nog tips heeft? ;)

  • FragDaddy
  • Registratie: Mei 2000
  • Laatst online: 09:59
jah. ik heb nog een (misschien te simpele) oplossing

als een client je webserver connect kun je met een scrippie kijken wel IP en welke HOSTNAME de client heeft.. hier kunt je wat mee. want die hostname is meestal in de vorm van domain.nl of domain.com ofzo.. naja.. dit werkt natuurlijk niet in alle gevallen, maar je kunt natuurlijk alle .nl en .be adressen enzo laten redirecten naar je server in nederland.. alle .com en alle .net adressen naar amerika en alle .jp adressen naar japan..

dit scrippie draai je dus op alle webservers.. en die verwijzen dus naar elkaar :)

ik heb dit zelf al een keer gebouwd en het werkt wel.. maarja dus niet in 100% van de gevallen (was in ons geval geen probleem !)

Have a wheelie good weekend!


Verwijderd

Je kunt al een heel stuk komen door alle landsdomeinen (.nl .be etc) te verdelen over de hele wereld. Als je ze gesorteerd opslaat kun je er snel in zoeken en zodoende iemand heel snel naar een lokatie ergens in de wereld laten gaan. Dan blijven de .com .net etc domeinen nog over. Misschien kun je die naar de US server gooien oid.

Ik neem echter aan dat het de bedoeling is dat alles zo snel mogelijk gaat voor al je bezoekers. Het zou kunnen dat iemand uit Japan een snellere verbinding heeft naar amerika dan naar een azie. Misschien dat je daarom wat met ping time kan doen. Dit hoeft natuurlijk niet per se realtime; je kunt ook alle hosts bijhouden en dan 1 maal per dag de ping time uitrekenen vanaf al je machines over de wereld (er even vanuit gaan dat de host pingbaar is). Aan de hand van de pingtime maak je dan een tabel die op al je servers komt te staan. Als er dan iemand van een bekende host komt, dan kun je hem doorsturen naar de snelste server. Een nadeel van ping is dat het erg kan verschillen over de hele wereld, omdat we allemaal op een ander tijdstip wakker zijn. Ik heb geen idee of het gigantisch veel uitmaakt, dat zou je moeten testen. Een ander nadeel is dat er heeeeeel veel domeinen zijn en dat die tabel dus flink kan groeien als je hem niet zo nu en dan snoeit.

Hopelijk kun je er wat mee :)

  • tiguan
  • Registratie: December 2000
  • Laatst online: 07:22
Daar heb je hele mooi Global Load Balancing Controllers voor van F5 Networks. 3 DNS en BIG IP, ik zou daar ff kijken.

Verwijderd

Topicstarter
De "reverse lookup" methode heb ik al overwogen, maar die is gewoon te onbetrouwbaar. Het werkt ook niet als je bijv. servers neer gaat zetten achter verschillende providers (dus meer dan 1 webserver/cluster per land bijv.).

Akamai doet in feite hetgeen wat ik ook zou willen. (zie http://www.akamai.com)
Op woensdag 22 augustus 2001 17:04 schreef Wannapuf het volgende:
Daar heb je hele mooi Global Load Balancing Controllers voor van F5 Networks. 3 DNS en BIG IP, ik zou daar ff kijken.
Die dingen zijn best interessant.. misschien een hoog gestoken ideaal, maar ik zou zo'n ding graag zelf willen bouwen, op die site staan in ieder geval nog interessante ideen ;)
Een nadeel van ping is dat het erg kan verschillen over de hele wereld, omdat we allemaal op een ander tijdstip wakker zijn. Ik heb geen idee of het gigantisch veel uitmaakt, dat zou je moeten testen. Een ander nadeel is dat er heeeeeel veel domeinen zijn en dat die tabel dus flink kan groeien als je hem niet zo nu en dan snoeit.
Dat "zo-nu-en-dan" pingen heb ik ook al eens overwogen, maar er komen dan een aantal factoren bij kijken die mij wat te storend zijn:
- De round trip time zegt niet perse iets over de snelheid van die verbinding (vaak wel, maar transatlantisch heb je heel vaak hoge latency's).
- Je zult eerst altijd moeten pingen voordat je een beslissing maakt; en dat duurt soms behoorlijk lang

De grootte van die tabel, daar maak ik me niet zo druk over. We gaan er even van uit dat die bak die dat moet doen een heeele zware bak is... ;) En je kunt al die "gecachte" entries gewoon met en Least Recently Used algorithme eruit knikkeren.

[lang verhaal met veel geblaat modus]
BGP komt volgens mij goed in de buurt van wat ik zoek.. BGP gebruikt doorgaands metrics die uitgaan van veel factoren en het geeft je een overzicht van alle ASen op de wereld en hoe die met elkaar zijn verbonden..

In feite zoek ik dus een ietwat gecompliceerdere router (alleen dat ie geen packets hoeft te forwarden, hij moet alleen gecomliceerde routes berekenen), moet toch maar mijn grafentheorie weer eens wat gaan opfrissen ;)

Over het algemeen hoeft het dan ook nog niet zo ingewikkeld te zijn... Je hebt dan 3 mogelijke gevallen:

- De request komt van iemand die in hetzelde AS zit als een van je mirror servers... probleem opgelost..
- De request komt van een "buur AS" van een van de mirror servers (ook dat is snel uitgezocht).
- De request komt van een AS dat verder weg ligt... dan zul je dus fftjes moeten rekenen.

Conclusie: hoe meer mirrors je plaatst, hoe minder je hoeft te rekenen ;)

(Het wordt echter pas weer problematisch zodra je meer dan 1 mirror plaatst per AS..)
[/lang verhaal met veel geblaat modus]

Verwijderd

Het is mogelijk om de landinstellingen op te vragen van de client. Zo heb je index.html.nl, index.html.es, index.html.no, etc, etc. Vanuit hier kun je denk ik wel iets leuks bouwen.

En maybe kun je ook iets uitvreten met ftp://ftp.ripe.net/ripe/dbase/ripe.db.gz (33MB -> 161MB)

Verwijderd

Topicstarter
Jammer dat die ripe database alleen goed is voor Europa, ik ga eens op zoek of IANA en aanverwanten hun database ook als gezipte tarbal aanbieden.
Pagina: 1