Inclust Infrastructure, Community & Expert

Inclust Blog

Újdonságok, fejlesztések, akciók, tech hírek

Bejegyzéseink

A DNS rejtelmei, avagy miért láthatok én mást, mint a többiek?

2012. 06. 09. - 16:27

Tegyük fel, hogy éppen karácsony van és webáruházad látogatottsági rekordokat döntöget, vagy a most élesített blogbejegyzésedet több tízezren szeretnék elolvasni egyszerre. A technika pedig valamiért csődöt mondott és a szolgáltatás nem elérhető. Elég kellemetlen helyzet és nem is mindig biztos, hogy azonnal orvosolható.

Manapság ahhoz vagyunk szokva, hogy a legtöbb dolog azonnal elintézhető. Hirtelen támadt gondolatainkat azonnal érvényre tudjuk juttatni, és ha megváltoztatunk bizonyos dolgokat, azok általában azonnal életbe is lépnek. A DNS működése sajnos nem egészen ilyen és elsőre nehéz lehet megérteni, hogy miért nem. Az alábbiakban segítünk elmagyarázni, hogy mi ennek az oka.

Mi az a DNS?

A DNS (Domain Name System) az emberek által könnyen megjegyezhető domainneveket IP címekké lefordító rendszer. Minden kiszolgáló az Interneten önálló IP címmel rendelkezik.

Például: 87.229.101.201. Az itt található oldalt megnyitva bárki meggyőződhet róla, hogy az adott cím alatt élő szolgáltatás üzemel. Viszont elég furcsán nézne ki, ha az óriásplakátokra ilyen számsorozatokat írnánk, és hazaérve mindenki ezeket próbálná visszaidézni az emlékezetéből, hogy megnyissa az adott cím alatti oldalt. Nem beszélve arról, hogy messze több domainnév létezik a világon, mint ahány IP cím. Erre találták ki megoldásként a domain neveket (pl. inclust.com), amiket a DNS segítségével fordíthatunk le IP címekké. Ez egy elosztott rendszer, aminek tartalma ráadásul minden másodpercben változik, így a világon soha nem létezik egyetlen olyan számítógép sem, ami ismerné a létező összes domain név - IP cím párosítást. A feladatot (név)szerverek milliói, hierarchiába szervezve, együttesen látják el. Egymás között információt cserélnek szükség esetén kérésre vagy meghatározott időközönként automatikusan is.

A helyi névszerver

Minden, az Internetre csatlakoztatott számítógépen be van állítva egy vagy általában több névszerver címe, amelyeket az megkérdezhet, ha egy adott domainhez tartozó kiszolgáló IP címét szeretné megtudni. Ezeknek általában mindenki az internet-szolgáltatója által üzemeltetett névszervereket adja meg, de létezik rá több, publikus megoldás is, ilyen például a Google DNS rendszere.

Ha pl. a böngészőnkkel csatlakozni szeretnénk egy ismeretlen domainnév alatt kiszolgált weboldalra, ahhoz először annak meg kell tudnia a szerver IP címét. Első lépésben az operációs rendszerünk megkérdezi az abban beállított szolgáltatói DNS szerverek valamelyikét. Ha a szolgáltatónk névszervere még nem ismeri az általunk megkérdezett domainhez tartozó címet, nekilát rekurzívan kideríteni azt, hogy aztán továbbadhassa az információt nekünk. Megkérdezi az adott domainről a benne beállított root(gyökér)-névszerverek valamelyikét. Ha az sem ismeri az adott domain nevet (nem fogja, mert nem ez a dolga), akkor is meg tudja mondani, hogy ki a .com domainek kiszolgálója. Ezután, a kapott információ alapján az eredetileg kérdezett névszerver megkérdezi a .com domainek névszerverét a megadott domaint illetően. Ha ő sem ismerné azt, akkor is meg tudja mondani, hogy őbenne melyik kiszolgáló van beállítva felelősnek az adott domaint illetően. Ez a megadott domain autoritatív kiszolgálója. Könnyen látható, hogy a lekérdezések rekurzív folyamata egy információ-átviteli láncot eredményez.

Lehet, hogy már végbement a kérdezz-felelek folyamat és valahol el lett tárolva az akkor kapott választ.

Olyan ez, mint amikor leírtuk valakinek a telefonszámát a noteszünkbe, mielőtt a mobiltelefonok elterjedtek volna. Ekkor, ha tőlünk megkérdezik az adott illető telefonszámát, akkor nem járunk utána újból, ha nem megmondjuk azt a számot, amit mi már ismerünk.

A felelős névszerver

A szolgáltatónk által üzemeltetett névszervereken kívül léteznek speciális névszerverek is, amelyeket autoritatív névszervereknek nevezünk. Ezekből minden domainhez létezik legalább egy darab, de általában több is. Az ide letárolt beállítások adják meg, hogy az adott domain milyen IP címre mutat. Például az inclust.com esetében ez az ns01.inclust.com és az ns02.inclust.com névre hallgat. Ha az inclust.com IP címe valami miatt megváltozna, akkor ezekben a szerverekben kell frissíteni a hozzá tartozó bejegyzéseket. Az átállás esetén azonban időre van szükség ahhoz, hogy az új információ mindenhol elterjedhessen és kérdés esetén a világon mindenki ugyanazt a választ kapja vissza, hiszen a végfelhasználók és a felelős névszerverek között szerepelhetnek olyan kiszolgálók, amikben a korábban letárolt információ még a régi beállítást tartalmazza és emiatt elavult lehet.

 

A kisvárosi szabó telefonszáma az adott város havonta megjelenő, helyi reklámújságjában szerepel. Ha egyszer megszereztem az adott lapot, tudom a szabóság aktuális telefonszámát. De ha másnap valamiért lecserélik azt, akkor addig nem fogom tudni az új számot, amíg nem jutok hozzá a helyi újság friss változatához, amiben már a megváltozott elérhetőség szerepel. Addig amíg csak a régi lappal rendelkezem, rossz számon fogom keresni őket.

 

Mikor lehet még probléma?

Nem ritka eset, hogy egy kiszolgáló IP címe változik. Akár a rajta futó szolgáltatást költöztették át máshova, akár maga a szerver kapott új címet, az oda mutató DNS rekordokat frissíteni kell. A fent leírtak alapján látható, hogy az új beállítások nem mindig lépnek életbe azonnal, sőt, néha akár 24 óra is eltelhet. Ez az idő az adott rekordhoz tartozó TTL (Time to Live) érték beállításától függ. Ez az érték szabályozza, hogy az adott beállítást mennyi időre jegyezheti meg és tekintheti érvényesnek az a kiszolgáló, amelyik az adott információt megszerezte.

A noteszkönyves hasonlatot folytatva: akkor járunk el praktikusan, ha minden noteszkönyv bejegyzéshez beírjuk az adott időpontot, amikor megtudtuk az illető telefonszámát. Ha mostanában tudtuk meg, akkor nagy eséllyel az a jó szám és megmondjak annak, aki kérdezte. De ha már túl régi a bejegyzés dátuma, akkor nem tekintjük érvényesnek, ha nem újból utánajárunk, hogy biztosan jó választ adjunk.

A legnagyobb baj akkor történhet, amikor egy nagy látogatottságú weboldal kiszolgálása áll le a DNS rekordok hirtelen megváltozása miatt. Ilyen eset például regisztrátorváltáskor fordulhat elő. Ha az éppen üzemelő weboldal domainjéhez beállított névszerverek hirtelen megváltoznak és az újakban nem szerepelnek a helyes beállítások, a domainhez tartozó IP címet már az új névszerverektől lekérdező felhasználók nem kapnak választ és így nem képesek eljutni az adott domain alatti tartalmakat kiszolgáló szerverig.

A bejegyzés a Smashing Magazine ötletadó cikke nyomán született.

Ajánlott irodalom: Részletes magyar nyelvű leírás a DNS működéséről

Drupal teljesítménytuning

2012. 04. 06. - 09:59

A Drupal üzemeltetése magában sem könnyű feladat. Fokozottan erőforráspazarló rendszer, alapjáraton is sok memóriát eszik, a rengeteg lekérdezést pedig a rengeteg optimalizálás ellenére is megérzi a rendszer. A különböző forrásokból származó (akár beta verziós) plusz modulok feltelepítésével pedig tovább romlik a helyzet. Több különböző weboldal közös tárhelyen történő üzemeltetésekor pedig egyszerre akár 100 weboldal is egy egybefüggő szerverparkon kerül kiszolgálásra. Ezek között - népszerűsége miatt - a Drupal bizony szép számban előfordulhat.

 

Webadmin névre keresztelt, saját fejlesztésű adminisztrációs felületünk, pénzügyi rendszerünk, valamint hivatalos weboldalunk is Drupal alapokon nyugszik. Ezeknek és a különböző ügyfelek által üzemeltetett hasonló oldalaknak hála az elmúlt évek során egyre több tapasztalatot gyűjtöttünk ezek üzemeltetésében is. Az alábbiakban röviden összefoglaljuk a sebességnövelés főbb lehetőségeit. Ezek a technikák éppúgy hasznosak lehetnek kisebb méretű weboldalak esetén, mint összetett adatbázissal rendelkező multi-site rendszereknél. A motor többrétegűsége és az azt kiszolgáló rendszerek sokfélesége miatt azonban az optimalizálás szerteágazó feladat lehet. Ha valakinek ez a célja, az egyes témák mindegyikében egyenként el lehet merülni és igény esetén egy-egy területen komolyabb finomhangolási módszereket bevetni.

 

Biztos, ami biztos

Legyen kikapcsolva az összes olyan modul, ami az oldal működéséhez nem szükséges feltétlenül. Ebbe beletartoznak a fejlesztést segítő kiegészítők is, mint a Toolbar és az Update manager. A Beállítások->Teljesítmény menüpont alatt mindenképp érdemes bekapcsolni a cachelést anonymous felhasználók részére engedélyező funkciót. Ugyanitt állítható be a gyorstárak minimum is maximum élettartama is. Ennek beállításakor azt érdemes figyelembe venni, hogy milyen gyakran frissül az oldalak tartalma. Ellenőrizd, hogy a képek nem túl nagy méretűek, a beépülő Javascript modulokból (jQuery és társai) pedig mindenhol a minimalizált verziót használod, hogy ezzel is kíméld az adatforgalomtól a szervert és a klienseket egyaránt.

A Cachelés a barátod

A teljesítményt fokozó kiegészítők közül érdemes feltenni az Alternative PHP Cache, a Boost és az Aggregate cache modulokat. Ezek használatával legalább 1 nagyságrendnyi gyorsulást értünk el az oldalaknál: A valós időben generált dinamikus tartalmaink kb. 5-10x, a többnyire statikus tartalommal rendelkező oldalaink 15-20x gyorsabb idő alatt töltődnek be. Ezt főleg a Boost modul használatának köszönhetjük. Az "aggregate cache" funkció főleg akkor segít, ha a böngészőnek sok kliensoldali tartalom letöltésével kell megküzdenie. Ilyenkor a CSS és JS fileok összetömörítve, egy-egy pakkban utaznak a böngészőig és így kevesebb sávszélességet foglalnak.

 

Ami a háttérben van

Nem mindegy, hogy milyen teljesítményű az oldal mögött az a rendszer, ahonnan az adatok valójában nyerjük. Felülről lefele ásva először érdemes utánamenni, nincsenek-e lassú, egyedi SQL lekérdezések a kódban, amik akadályozzák az oldalak gyors betöltődését. Ehhez a legelterjedtebb (mára ipari standarddá vált) MySQL adatbáziskezelő esetében a mysql_slow_query.log és az EXPLAIN utasítás adhat a legkönnyebben segítséget. Érdemes megfontolni, hogy MyISAM vagy InnoDB motort használjuk-e az adatok tárolására. Mindegyiknek vannak előnyei és hátrányai egyaránt. Aki pedig valamilyen másmilyen (Postgres, vagy valamilyen NoSQL) adatbáziskezelőt használ, remélhetőleg tudja, miért teszi azt. Legvégül, a háttértár teljesítménye is döntő tényező lehet. Alapvetés, hogy a kiszolgált oldalt tároló filerendszer, a működéséhez szükséges adatbázis és a futás során készülő log fileok mind-mind külön helyen legyenek tárolva. Ha ezeket a területeket egy időben egy helyről írja és olvassa a rendszer, az elég nagy overheader generálhat. Válasszuk ezeket külön, ha még nem tettük. Lényeges adatok tárolására valamilyen RAID megoldás használata manapság már magától értetődő. A legjobban skálázható megoldás azonban valamilyen elosztott rendszer használata. Erről a témáról és felhőszolgáltatásunkról a jövőben is rendszeresen jelentetünk meg írásokat itt, a blogunkon. Reméljük használható segítséget tudtunk nyújtani. Örömmel vesszük bárki tapasztalatait a témában!

Pályázat: Írj egy fogalmazást és nyerj egy WD winchestert!

2012. 04. 02. - 13:37

Az Inclust Systems Kft. pályázatot hirdet “Milyen egy jó tárhelyszogláltató?” címmel. A pályázóknak ki kell próbálniuk a cég jelenlegi szolgáltatásainak adminisztrálására szolgáló Webadmin rendszert, és le kell írniuk egy 1-2 oldalas fogalmazás keretében a rendszerrel kapcsolatos észrevételeiket, fejlesztési ötleteiket.

A pályázat beküldési határideje: 2012. április 30.
Eredményhirdetés: 2012. május 7.

A pályázati anyagokat PDF formátumban az alábbi címre kell elküldeni: palyazat@inclust.com.

A beküldött anyagok közül a zsűri kiválasztja a 3 legjobbat, a díjazás a következőképp néz ki:

    1. díj: WD Passport 500 GB külső winchester + 50 GB Inclust tárhely 1 évre
    2. díj: Asus 1,8" 30GB fekete külső merevlemez + 50 GB Inclust tárhely 1 évre
    3. díj: 50 GB Inclust tárhely 1 évre



További részletek a pályázattal kapcsolatban: http://palyazat.inclust.com/
 

Lezajlott kezdő webfejlesztő tanfolyamunk

2012. 03. 06. - 15:19

Két szombaton keresztül tartott az Inclust és az Inepex Ineversity rendezvénysorozatának keretében Kezdő HTML, CSS, MySQL, PHP tanfolyamunk. A tanfolyamot az irodánkban tartottuk kis rendezést követően (lásd werkfilm a pakolásról).

A résztvevőkről készítettünk egy csoportképet is:



A február 25-én megtartott előadás első része megtekinthető itt:

Az előadások végén a résztvevők egy kérdőívet is kitöltöttek a tanfolyamról. A résztvevők nagy része teljesen kezdő volt a témában. Az egyes kérdésekeket 1-5 skálán kellett pontozni, melynek eredménye az alábbi grafikonon látható:



A kitöltők közül többen problémának találták a gyors tempót, viszont az előadások felépítését logikusnak és összeszedettnek tartották. Volt aki már a szemlélet megszerzését is értékelte, így ugyanis szerinte jobban megérti a webfejlesztők gondolatait. Egy nem kezdő pedig azt mondta, végre megértett néhány dolgot, amit eddig csak másolt innen-onnan.

Egy biztos: önmagában a tanfolyam nem elég, otthon is kell gyakorolni, ezért a két előadás között házi feladat is volt. A résztvevők – nagy örömükre – oklevelet is kaptak a tanfolyam végén. :)

Kíváncsiak vagyunk a véleményedre!

Kíváncsiak vagyunk, hogy milyen témák érdekelnének egy esetleges következő tanfolyam esetén? Wordpress, Photoshop, Java, Google Anatytics? Hétvégén vagy hétköznap érnél rá jobban? Mondd el nekünk! http://tanfolyamfelmeres.inclust.com. A kérdőívet kitöltők között kisorsolunk egy ingyenes részvételt következő tanfolyamunkra!

Köszönjük!
 

Oldalak