weboldal rendelkezésre állás DNS szinten

Helló

Arra lennék kiváncsi, milyen megoldások léteznek erre.

Van egy weblap, ami mondjuk tükrözve van 2 szerver közt. Load balance van tehát mindkét szerver kiszolgál egyszerre, plusz ha kiesik az egyik akkor még mindig megy a másik.

Eddig jó a dolog, de hogy lehet ezt a rendelkezésre állást DNS szinten feloldani? Tehát a asdfgh.hu mutat egy IP-re akkor ha kiesik az egyik akkor át kell állítani a dns-t.

Amit én ismerek

1. round robin. Ez nem 100%-s hiszen a kiesett gép az timeoutolni fog és max refresh után kap adatot a kliens ha szerencséje van, tehát dns-hez kell nyúlni.

2. Proxy, ami érzékeli az egyik szerver kiesését és átterheli a forgalmat a maradékra. Viszont ha behal a proxy akkor megintcsak dnshez kell nyúlni, hogy menjen a dolog.

Van erre valami módszer amivel ezt fel lehet oldani?

Hozzászólások

Na azért ez eléggé becsapós dolog...

Az 1. verzió esetén két külön hálózatban lévő gépekről beszélünk, amik között folyamatos szinkront kell biztosítani.
Két szolgáltatás, két elérési ponttal.
A 2. verziónál ezt kiegészíted/lerontod egy proxyval. A proxy így egyedüli elérési pontként működik.
Három szolgáltatás, egy elérési ponttal.

Szvsz. proxy-t nem ezért kell alkalmazni.

DNS-ben turkálni sem túl jó dolog, mivel a specifikáció szerint bizonyos ideig az adatokat lehet cache-elni...
Ez alatt "hiába" módosítasz...

Kérdés, hogy mennyi ideig "hagyod" hogy ne menjen valamelyik szolgáltatásod...

--
Debian Linux rulez... :D

Általában ezt úgy oldják meg, hogy ha kieső gép IP címét átveszi a még élő.

A DNS-sel az a baj, hogy van egy kis késleltetése. Ezt ugyan lehet állítani, ám túl alacsonyra nem célszerű, mert akkor meg a millió névfeloldás öli le a rendszert.

DNS SRV rekord tudhat ilyet. (főleg, ha a kliens is támogatja)

A faék megoldás, hogy az szolgáltatás két "virtuális" IP-n (tehát nem ez a vas elsődleges címe) fut és ha elmegy az egyik gép, akkor a másik felveszi kieső gép extra IP-jét. Ez persze fullos szinkront feltételez és pl. az adatbázist nem tudom hogy fogod normálisan tükrözni, illetve visszaállni vele. (Tudom létezik a master-master replikáció is...) Ez természetesen a földrajzi redundanciát erősen lecsökkenti és mindenképp egy szolgáltatóhoz köt.

Ha a DNS-el akarsz játszani azt is lehet, ha mondjuk 5 perces TTL-t adsz meg az A rekordoknak. A szinkronizálás problémáját itt is erősen át kell gondolni és a gépek működését nem árt két független helyről intézni.

Az sem árt, ha mondjuk 3 különféle szolgáltatónál vannak a névszerverek, hogy ezen se múljon a dolog.

- a DNS megváltoztatása hiba esetén: ezzel az a gond, hogy irgalmatlanul nagy timeoutot eredményezhet (hiába állítod 60 másodpercre a ttl-t; vannak szolgáltatók, akik ezt felülbírálva min. x másodpercre cache-elnek, az a kliens, aki az ő dns resolverüket használja, az akár 1 óráig a rossz adatot láthatja; a ttl a kliens programot nem biztos, hogy érdekli, nem is biztos, hogy eljut hozzá, azaz elkezdi nézni az oldalt a user a browserből, és lehet, hogy a browser újraindítása nélkül nem találja meg az új ip-címet)

- a több IP cím a DNS-ben: ezzel az a gond, hogy a kliensek egy jó része eleve nem tudja kezelni a több IP-címet (random az egyiket használják, és kész, ha nem megy, akkor bukta), a nem működő IP-címre sokáig timeoutol a connect, amelyik kliens kezeli a több IP-címet, azok sem jegyzik meg, hogy melyik a jó IP-cím, azaz a timeout akár kérésenként is megismétlődhet!

- HA szerverpár egy LAN-ban: ez nagyjából a megvalósítható, és megfizethető megoldás

- proxy/DNAT/előtét load balancer: ez megvalósítható, igaz, akkor van értelme, ha HA a proxy/DNAT tűzfal/előtét load balancer, viszont a szolgáltató segítsége nélkül nehéz kétgéptermes redundáns megoldást nyújtani (két szolgáltatóst meg pláne nagyon nehéz) - de nem lehetetlen

A "több IP a DNS-ben"-hez:
A kliens nem szokta ezt a helyzetet "kezelni". Round-robin módban használja az első címet.

Pl.:

# host www.google.hu
www.google.hu is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 209.85.148.105
www.l.google.com has address 209.85.148.106
www.l.google.com has address 209.85.148.147
www.l.google.com has address 209.85.148.99
www.l.google.com has address 209.85.148.103
www.l.google.com has address 209.85.148.104
www.l.google.com has IPv6 address 2a00:1450:4001:c01::93

# host www.google.hu
www.google.hu is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 209.85.148.104
www.l.google.com has address 209.85.148.105
www.l.google.com has address 209.85.148.106
www.l.google.com has address 209.85.148.147
www.l.google.com has address 209.85.148.99
www.l.google.com has address 209.85.148.103
www.l.google.com has IPv6 address 2a00:1450:4001:c01::93

--
Debian Linux rulez... :D

Ezzel viszont:
- onnantól kezdve annak a usernek már nem lesz failover, csak ha visszaballag a nyitóurl-re, amit az emberek 99%-a nem csinál meg
- ha az illető netán elbookmarkolja így az oldalt, akkor máris lesz neki egy nem mindig működő linkje

Szóval ezzel nem sokat javítottunk...

Feltetelezem, csak egy vhost fut rajta

Ez nem probléma; lehet csinálni a hostnévhez 1-1 gépenként dedikált nevet, és akkor arra lehet átdobni a usert.

UGy ertettem, ha a masik nem elerheto. Igazabol egy jo serverhostingos helyen, megbizhato serverrel, nem hiszem, hogy evi szinten tul sokszor lenne ilyen, ez ido alatt valaki bookmarkol, szvsz vallalhato dolog.
Egyebbkent eredeti felteves valszeg nem mukodik a bongeszok kiszamithatatlansaga miatt.

"1. round robin. Ez nem 100%-s hiszen a kiesett gép az timeoutolni fog és max refresh után kap adatot a kliens ha szerencséje van, tehát dns-hez kell nyúlni."
meglepo modon eleg sok browser/kliens ilyenkor raprobal a masik ip-re, ahelyett, hogy hibauzenetet adna a felhasznalonak (a bongeszes viszont egy picit lassabb lesz, mert tovabbra is kap kereseket a halott node)

"2. Proxy, ami érzékeli az egyik szerver kiesését és átterheli a forgalmat a maradékra. Viszont ha behal a proxy akkor megintcsak dnshez kell nyúlni, hogy menjen a dolog."
a loadbalancert/proxy-t is lehet HA-ba tenni (VRRP/CARP, vagy csak valami fapados heartbeat+arping), illetve lehet IP szinten is balanceolni a forgalmat (BGP/OSPF/IGRP balancing) de nyilvan ez nem az a kategoria.

Tyrael