Verovatno ste se do sada već pitali koji hardver pokreće Limundo i Kupindo i na koji način.
Ovo pitanje jeste opravdano sa obzirom na to da Limundo i Kupindo dnevno poseti oko 300.000 ljudi i da ova dva sajta generišu preko 8.000.000 pageview-ova dnevno,
uz održavanje prosečnog vremena otvaranja stranice od oko 1 sekunde.
U nastavku teksta ću pokušati da predstavim naše servere i način na koji su povezani i uposleni.
Limundo i Kupindo serveri
Limundo i Kupindo se “vrte” na skoro 30 servera koji su podeljeni po namenskim klasterima. Proći ću ukratko kroz njih onim putem kojim zahtev posetioca sajta ide prilikom svake posete.
Firewall
Prvi uređaj na koji naiđete kada posetite Limundo ili Kupindo sajt je CISCO firewall
koji analizira saobraćaj i filtrira neželjene i opasne konekcije.
Load Balancing serveri
Ako vaš zahtev prođe kroz firewall, odatle se preusmeri na Limundo ili Kupindo
load balancing servere (u zavisnosti od toga na koji sajt ste krenuli).
Load balancing (LB) serveri ravnomerno raspoređuju dolazni saobraćaj na web servere
i tako obezbeđuju ravnomerno opterećenje sistema. LB serveri su konfigurisani da detektuju kada je neki od web servera otkazao i u tom slučaju ga odmah izbacuju iz svoje liste za raspoređivanje zahteva.
Limundo i Kupindo poseduju po dva load balancing servera u active-active konfiguraciji,
u slučaju da jedan LB server otkaže drugi odmah preuzima njegov posao.
Klasteri web servera
Sa LB servera vaš zahtev dolazi do Web servera koji su podeljeni u dva klastera (Limundo i Kupindo). Web serveri vraćaju gotove HTML stranice LB serverima, ali isporučuju i HTML za affiliate widgete koji naši partnerski sajtovi koriste. Sa obzirom na to da trenutno veću posetu ima Limundo, Limundo web klaster sadrži više servera nego Kupindo klaster.
Web serveri takođe odrađuju keširanje HTML sadržaja koji se ređe menja.
Cilj je rasterećenje Database (DB) servera i servera za pretragu, a na njima se vrši i keširanje source koda u memoriji radi smanjenja broja pristupa disku koji je obično usko grlo.
Sadržaj koji nije keširan web serveri generišu prosleđivanjem SQL upita klasterima
DB servera, odnosno upita za pretragu klasteru Search & Indexing (S&I) servera.
Klasteri Database servera
Kao i kod web servera, postoji dva klastera DB servera, po jedan za Limundo i Kupindo.
U pitanju su MySQL serveri u Master-Slave konfiguraciji. SQL upiti za generisanje sadržaja se preko MySQL proxy servisa ravnomerno prosleđuju DB slave serverima. U slučaju da neki DB slave otkaže, sistem to automatski prepoznaje i izbacuje ga iz liste za slanje SQL upita.
Klaster Search & Indexing servera
Search & Indexing serveri su grupisani u jedan klaster koji opslužuje i Limundo i Kupindo. Ovakva konfiguracija je izabrana da bi najbolje iskoristila procesorsku snagu servera, koja je kod kompleksnih upita za pretragu ključna. Na ovim serverima se “vrti” poseban softver čiji je jedini zadatak da neprestano indeksira sadržaj Limundo i Kupindo baza
i da u najkraćem mogućem vremenu izvuče podatke na osnovu prosleđenog upita. Glavni zadatak S&I servera je da rastereti DB servere preuzimanjem kompleksnih proračuna na sebe.
Zahtevi ka S&I serverima se ravnomerno raspoređuju kroz High Availability (HA) proxy, koji takođe brine o tome da li svi serveri rade, i automatski izbacuje servere koji su otkazali.
Storage serveri
Tu je i centralni storage za podatke (NFS) – skup servera koji čuvaju preko terabajt statičkih podataka (prvenstveno slike, ali i backupove i sl). Storage serveri su povezani sa ostalim klasterima koji ga koriste za smeštanje podataka koji se retko menjaju. Slike i drugi statički sadržaji se keširaju na LB i Web serverima, tako da se oni sa storage servera dovlače samo u slučaju da nisu prethodno iskeširani.
Ostali serveri
Pored ovih glavnih klastera, u Limundo/Kupindo sistemu se nalazi i nekoliko servera specifične namene, tu je prvenstveno mail server, zatim server za redovno backupovanje baza podataka, posebni serveri za Limundo i Kupindo admin softver, server za komunikaciju sa bankom i novčane transakcije, i na kraju (ali ne i najmanje važni) serveri za obradu, ažuriranje i čuvanje podataka za sistem kataloške prodaje na Kupindu.
Praćenje servera
Stanje svakog servera se posebno monitoriše softverima za detektovanje kvarova, kao i softverima za merenje i prikaz performansi po raznim kriterijumima.
Neki kriterijumi su opšti –
na primer: Load average, CPU usage, Disk I/O, Dolazni i odlazni saobraćaj i sl.
a neki specifični za dati klaster –
na primer za DB server: Command counters, broj konekcija, processlist statistika, Query cache statistika i sl.
Ovakva konfiguracija sistema je projektovana sa ciljem da ispuni tri glavna zahteva:
brzina, otpornost na hardverske otkaze i bezbednost.
Sa obzirom na to da stalno radimo na unapređenju i proširenju Limunda i Kupinda,
u planu je značajni upgrade hardverske infrastrukture, ali o tome nešto više u nekom od narednih postova.
I koliko je to zaista pravih servera: Sigurno nije 30 Dedicated masina?
Jeste stvarno je 30-tak dedicated masina. Svi serveri koje koristimo su dedicated masine, i ima ih, kao sto covek kaze, oko 30. 🙂
Ima nekih razlika sta se sve broji, ali u svakom slucaju brojimo samo serverske masine, spakovane u rack orman. Nisu svi iste konfiguracije, naravno.
Mocan sistem nema sta… svaka cast administratorima koji odrzavaju sve ovo da fercera bez greske! 🙂 A imam i jedno pitanje: Zasto je obrada, azuriranje i cuvanje podataka za sistem kataloske prodaje na Kupindu izdovjeno na posebne servere? Hvala i srecno sa buducim upgradeom!
prosecno 100€ po masini, znaci oko 3000€ mesecno… Nije cudo sto moraju da se deru korisnici na svakom koraku…
Želim da vas pohvalim za uspešnu tehničku podršku sajtu. Za 3 godine koliko sam član možda je bilo svega 2-3 sitnija propusta, što je zanemarljivo.
Puno uspeha u daljem radu.
@Maxi Baza kataloske prodaje samo za kategoriju Muzika sadrži preko trideset miliona unosa, a mesečno se dovlači na stotine hiljada novih unosa.
Povezivanjem novih kategorija na sistem kataloške prodaje ove cifre će se višestruko uvećati.
Zbog toga za podsistem kataloske prodaje postoje posebni serveri koji obrađuju, pretražuju i isporučuju ove podatke.
@Lup
Možeš pogledati cenovnike ostalih velikih e-commerce sajtova koji su pritsnuti velikom posetom i videćeš da je Limundo daleko najpovoljniji.
Čak ne moraš da gledaš dva najveća i najskuplja e-bay i Amazon.
Kvalitetna usluga košta.
@masa
Nemojmo se zanositi…. Poredjenje sa e-bay i Amazonom… Mozda za deset godina….
Kad uporedis sta se na e-bay-u dobija za njihove procente i sta se dobija na limundu i kupindu to je kao da poredis Juga i Mercedesa…. Ni priblizno ista kategorija (za sad).
Da li ste razmišljalji o Amazonu (AWS) i ako jeste zašto se odustali?
Impresivna je i količina podataka koju posedujete. Da li ste razmišljali o nekom data miningu? Npr. kolika je šansa da će korisnik kupiti neki proizvod na osnovu prethodnih kupovina i tome sl.
Zanimljiv tekst. Nadam se da ćete nastaviti da pišete o tehničkim stvarima 🙂 Pozdrav Limundo ekipi.
Amazon je razmatran, neki od razloga što za sada ne koristimo njihove usluge su privatnost, zaštita i kontrola podataka, kao i generalno pitanje kontrole sistema i brzine isporučivanja sadržaja našim posetiocima. Naravno tu je i pitanje troškova prepravljanja Limundo/Kupindo softverskog frameworka za potrebe rada u cloud-u i njegovog testiranja. U svakom slučaju ovu mogućnost i dalje držimo otvorenom.
Datamining je značajan deo našeg poslovanja i u Limundu postoje ljudi i softverski moduli koji su zaduženi da se bave samo njime. Nešto više o toj temi možeš da pročitaš na:
http://blog.limundo.com/2012/01/tehnologija-u-pozadini-nove-registracije-data-miningmachine-learning/
i
http://blog.kupindo.com/2012/06/preporuke-za-bolju-kupovinu/
najveca mana i primedba je izbor baze, davno ste prerasli MySQL, sto pre napravite migraciju, bice lakse i za vas i korisnike 🙂
Linux ili Windows ? 🙂 …mada cim je MySQL onda je Linux … open source and profitable – ima li sta lepse 😉