Info telefon: +381 61 62 45 325 Ponedeljak - petak, 09 do 17h

Kako da odvojite klijentske naloge da problem jednog sajta ne obori ostale

Narandžasti ormarići sa ključevima, slika izolovanih klijentskih naloga na hostingu

Najskuplji telefonski poziv u hosting poslu izgleda ovako: klijent javlja da mu sajt ne radi, Vi proveravate i vidite da njegov sajt je u redu, a pada nešto sasvim drugo. Ispostavi se da je drugi klijent na istom nalogu pokrenuo uvoz proizvoda, plugin za bekap ili običnu petlju u kodu, pa je odneo sve resurse. Zato pitanje izolacije naloga nije tehnička sitnica. Od njega zavisi da li problem jednog klijenta ostaje njegov problem.

U tekstu je objašnjeno šta se zapravo deli kada stavite više sajtova na isti server, koji mehanizmi to razdvajaju, kako da proverite da razdvajanje postoji i kako da rasporedite klijente tako da jedan ne obori ostale.

Šta se deli kada klijenti žive na istom serveru

Na deljenom ili reseller hostingu svi nalozi dele isti fizički server: procesor, memoriju, disk i mrežu. Klijenti su razdvojeni softverski, a ne hardverski. Zato je pitanje uvek isto: šta se dešava kada jedan nalog potroši više nego što bi smeo.

Postoje tri vrste problema i svaka traži drugačiju zaštitu:

  • Potrošnja resursa. Jedan sajt zauzme procesor, memoriju ili disk, pa svi ostali kasne.
  • Vidljivost. Kod sajta jednog klijenta može da pročita fajlove drugog klijenta ili da vidi njegove procese.
  • Zaraza. Zlonamerni kod na jednom sajtu pokuša da se proširi na susedne naloge.

Za prvi problem postoje ograničenja po nalogu, za druga dva izolacija fajl sistema. Dobar hosting ima oba sloja. Loš ima samo marketinški tekst o njima.

Prvi sloj: ograničenja po nalogu (LVE)

CloudLinux, operativni sistem koji koristi većina cPanel hostera, ima mehanizam koji se zove LVE. Prema zvaničnoj dokumentaciji, njegov cilj je da nijedan pojedinačni sajt ne može da obori web server. Svaki nalog dobija svoju kutiju sa ograničenjima, a kernel ih sprovodi. Podrazumevane vrednosti iz dokumentacije izgledaju ovako:

Ograničenje Podrazumevana vrednost Šta se desi kada se pređe
CPU (SPEED) 100 odsto jednog jezgra Procesi se usporavaju, sajt je sporiji
Memorija (PMEM) 1024 MB Sistem prvo oslobađa keš diska, pa gasi procese, uglavnom greška 500 ili 503
Disk protok (IO) 1024 KB/s Čitanje i pisanje se usporavaju
Disk operacije (IOPS) 1024 u sekundi Operacije čekaju do kraja sekunde
Ulazni procesi (EP) 20 Greška 508, samo za taj nalog
Broj procesa (NPROC) 100 Novi procesi ne mogu da se pokrenu, greška 500 ili 503

Ovo su vrednosti iz dokumentacije proizvođača, a svaki hoster ih podešava po paketu, pa ih proverite kod svog. Važna je logika: kada nalog pređe granicu, kažnjen je samo taj nalog. Greška 508 je najjasniji primer. Ona znači da je nalog potrošio svih svojih dvadesetak istovremenih veza i da nove čekaju, dok ostali nalozi na serveru rade normalno.

Za Vas to ima praktičnu posledicu. Ako imate pet klijenata na jednom nalogu, oni dele jednu kutiju i jedan sajt može da im potroši celu. Ako svaki klijent ima sopstveni cPanel nalog, svaki ima sopstvenu kutiju. O tome kako se paketi i kvote prave u WHM-u pisali smo u tekstu o WHM-u za resellere.

Drugi sloj: izolacija fajl sistema (CageFS)

LVE rešava potrošnju, ali ne i pitanje ko šta vidi. Za to služi CageFS. Dokumentacija ga opisuje kao virtualizovan fajl sistem koji svakog korisnika zatvara u njegov kavez. Korisnik u kavezu ne vidi druge naloge ni njihova korisnička imena, ima ograničen pogled na procese i ne može da dođe do konfiguracionih fajlova servera.

Mi smo to proverili na sopstvenim nalozima. Na jednom od naših servera komanda koja ispisuje foldere u /home pokazuje samo jedan folder, spisak korisnika sistema ima svega nekoliko desetina redova, a lista procesa prikazuje samo sopstvene. To je upravo ono što CageFS treba da radi. Pored toga, opasne PHP funkcije za izvršavanje komandi (exec, system, shell_exec, proc_open i slične) su isključene, pa kod kompromitovanog sajta ne može lako da izađe iz svoje PHP aplikacije.

Za Vaš posao ovo je važnije nego što zvuči. Čest scenario je zaraženi plugin na jednom sajtu. Bez izolacije fajl sistema, napadač sa jednog sajta može da pokuša da čita konfiguracije susednih sajtova i da u njima nađe lozinke baza. Sa izolacijom, ostaje zatvoren u jednom nalogu.

Provera: kako da znate da izolacija postoji

Svaki hoster tvrdi da je izolacija uključena. Pet minuta provere daje pouzdaniji odgovor od bilo kog prospekta:

  1. Pitajte koji operativni sistem i koje alate koristi. CloudLinux sa LVE i CageFS je uobičajen odgovor. Ako hoster ne ume da odgovori, to je odgovor.
  2. Zatražite vrednosti ograničenja po paketu: EP, NPROC, memoriju i procesor. Hosteri koji ih ne objavljuju najčešće ne žele da se vezuju. Kod nas ih možete naći u specifikacijama paketa, a za reseller naloge u tekstu o ograničenjima reseller naloga.
  3. Proverite sami kroz terminal. Ako imate SSH, pogledajte listu foldera u /home i listu procesa. Ako vidite tuđe naloge ili tuđe procese, izolacije nema.
  4. U cPanelu pogledajte upotrebu resursa. Grafikon pokazuje kada je nalog udario u granicu. Ponavljajući skokovi na EP ili memoriji su prvi znak da sajt treba da se preseli na jači paket.

Kako da rasporedite klijente

Kada znate kako izolacija radi, raspored postaje stvar odluke, a ne sreće. Praktična pravila koja se pokazuju dobrim:

Jedan klijent, jedan cPanel nalog. Ovo je osnovno pravilo. Ne stavljajte više klijenata u addon domene jednog naloga samo zato što je tako jeftinije. Ušteda je mala, a rizik velik: jedan nalog znači jednu kutiju resursa, jedan skup lozinki i jedan bekap koji se vraća zajedno. Kada klijent ode, selite jedan nalog, a ne vadite sajt iz tuđeg.

Teške sajtove držite odvojeno i imenujte ih. Prodavnica sa hiljadama proizvoda, sajt sa uvozom podataka ili sajt sa velikim brojem istovremenih korisnika troši sasvim drugačije od vizit karte. Ne mešajte ih u isti paket. Zadržite naloge sa mnogo posetilaca u paketu sa višim EP i NPROC vrednostima.

Pratite pritisak pre nego što klijent javi problem. Ponavljajuća greška 508 ili usporavanja u isto doba dana kažu da je nalog tesan. Premestite ga na jači paket pre nego što ga klijent primeti. O ceni takvog poteza u odnosu na zaradu pisali smo u tekstu o tome kako određujete cenu hostinga za klijente.

Kritične klijente izmestite na sopstveni server. Ako jedan klijent donosi toliko prihoda da bi njegov zastoj bio skuplji od mesečne cene servera, nema razloga da deli resurse ni sa kim. U tom slučaju razmotrite VPS server, gde je izolacija potpuna jer je server samo Vaš. Cena je upravljanje: ako nemate vremena da ga održavate, pogledajte managed hosting.

Gde izolacija ne pomaže

Radi poštenja, izolacija ima granice i bolje je da za njih znate unapred.

Ako su klijentski sajtovi dodati kao addon domeni u istom nalogu, nikakva izolacija između njih ne postoji, jer su svi jedan korisnik sistema. Ograničenja važe za nalog, a ne za sajt.

Ako server sam ima problem (pun disk, pad mreže, održavanje), pogođeni su svi nalozi na njemu. Izolacija štiti naloge jedne od drugih, ne od servera. Zato je važan bekap koji ne živi na istom disku, a plan oporavka treba da postoji pre prvog problema.

Ako klijent koristi isti administratorski nalog i istu lozinku na svim sajtovima, izolacija servera ne pomaže kada lozinka procuri. Lozinke i pristupi su Vaša odgovornost, ne hostera.

Šta reći klijentu

Klijenti ne pitaju za CageFS. Pitaju da li će im sajt biti isti kao juče kada se negde drugde nešto desi. Odgovor koji možete da date i da ga podržite činjenicama glasi: svaki sajt ima sopstveni nalog sa sopstvenim ograničenjima, problem na jednom ne pogađa druge, a ako sajt preraste paket, prelazi na jači pre nego što se oseti. To je mnogo ubedljivije od reči „stabilan hosting“.

Ako gradite ponudu za agenciju i želite da vidite kako se to izvodi na reseller hostingu, svaki klijent dobija sopstveni cPanel nalog sa sopstvenim paketom, a Vi upravljate svima iz jednog WHM panela.

Kratak podsetnik

  • Resursi se razdvajaju ograničenjima po nalogu (LVE), vidljivost izolacijom fajl sistema (CageFS). Potrebna su oba.
  • Jedan klijent, jedan cPanel nalog. Addon domeni ne daju izolaciju.
  • Pitajte hostera za konkretne brojeve: EP, NPROC, memorija, procesor po paketu.
  • Pratite upotrebu resursa i selite sajt na jači paket pre nego što klijent javi problem.
  • Za klijenta čiji je zastoj skuplji od servera, uzmite sopstveni VPS.

Ako niste sigurni kako je raspoređeno ono što trenutno vodite, javite nam se preko kontakt stranice. Pogledaćemo raspored naloga i reći gde su rizici.

Pročitajte i ovo

Prelazite kod nas? Migracija je besplatna.

Prebacujemo fajlove, baze podataka i mejl naloge umesto vas, a sajt ni u jednom trenutku nije nedostupan.

Contra Asistent