Jak se staví Cluster Hosting a jeho výhody

Většina lidí si pod pojmem Cluster Hosting nevybaví nic konkrétního. Jedná se však o metodu výpočtu aplikace skrze více počítačů (Výpočetní Cluster tj. Cluster Hosting). Jak ale tento Cluster vypadá?

Základ Cluster Computingu je vždy v rozložení zátěže mezi další počítače, dejme tomu že potřebujete vypočítat problém, tento problém rozložíte na dvě poloviny a každou polovinu necháte spočítat jiný počítač. Následně výsledek každé poloviny vrátíte na původní server a z obou polovin složíte finální řešení. Tímto způsobem dostanete stejný výpočet za polovinu času (tech. poznámka - né vždy je to polovina ale polovina + režie přenosu na druhou výpočetní stanici)

Jak ale tento způsob výpočtu použít v hostingu?


Ačkoli je tento termín poměrně nový, není to zas tak složité. Je jen potřeba vědět z čeho se skládá webová aplikace.

Typická webová aplikace se skládá ze 3 částí.

1. Statické soubory (CSS, JS)
2. Dynamické soubory (PHP soubory které je potřeba spustit skrze interpret)
3. SQL Databáze

Jakmile aplikaci rozložíme na tyto základní kameny, tak kromě databáze, můžeme získat výpočetní výhodu v PHP. Jak na to ale konkrétně?


Většina PHP aplikací jsou jednovláknové aplikace, tudíž daná aplikace se vždy musí počítat na jednom počítači, nicméně můžeme jednotlivé uživatele přesměrovávat na samostatně výpočetní stanice.


Technicky - je zřízen centrální server, na kterém je tzv. load balancer (Nginx), na který když přijde HTTP či HTTPs požadavek, tak ho přesměruje na jednu z výpočetních stanic, ta spočítá odpověď klientovi a pošle ho zpět centrálnímu serveru, který odpověd vrátí klientovi.

V případě že výpočetní stanice neodpovídá (např. z důvodu havárie), tak jej load balancer vyloučí a pošle požadavky na zbývající výpočetní stanice. Čímž se minimalizuje výpadek v případě chyby hardwaru.

Jak ale PHP aplikace ví, jaké soubory použít?


I když je PHP aplikace na serveru 3, je potřeba aby měla vše potřebné (soubory frameworku apod.)

Vyřešeno je to pomocí NFS Share, tudíž aplikace má k sobě přiřazené síťové úložiště, které je fyzicky umístěné na centrálním serveru, ale připojené ke každé výpočetní stanici. Díky tomu má PHP aplikace všechny potřebné soubory při sobě.

Zakreslíme-li to do diagramu, bude to vypadat následovně:



Projdeme li si diagram krok po kroku, vznikne nám následující postup:

  • 1) Klient zadá do prohlížeče stránku, např. test.cz
  • 2) test.cz se odešle na centrální cluster server, ten vybere jednu z výpočetních stanic, a přepošle požadavek na výpočetní stanici
  • 2.1) Apache na výpočetní stanici přijme požadavek, a spustí PHP soubor skrze PHP-FPM
  • 3) PHP soubor se nachází na NFS serveru, a všechny ostatní soubory si stáhne z NFS úložiště
  • 4) V případě MySQL dat si šáhne PHP aplikace do sql.hostliner.cz
  • 5) Jakmile dokončí výpočet, odešle data centrálnímu cluster serveru
  • 6) Centrální server odešle data zpět klientovi

V čem je toto lepší oproti klasickému webhostingu?


Nyní se dostáváme k jádru věci. Klasický webhosting má problém ve škálovatelnosti. V případě že je server přetížen, tak nelze navýšit dynamicky výpočetní výkon. Lze jen přenos odklonit, a nebo server vypnout, přidat další HW a zase zapnout.

Díky tomu že Cluster Hosting má výpočetní stanice dynamické (lze přidávat za provozu), tak v případě zatížení se do pole výpočetních stanic přidá další stanice a tím se ubere zátěž z ostatních stanic.

Jedná se de facto o technicky vylepšenou verzi sdíleného hostingu.

05.01.2020


Tento web používá pouze technické cookies (PHPSESSID). Používáním tohoto webu s tím souhlasíte.