Back to Question Center
0

Semalt: Jaké potenciální problémy musím znát v prostředí více serverů / clusterů?

1 answers:

Pracuji na webové stránce s klientem již nějakou dobu a samotná stránka se zvětšila obrovsky v popularitě. Jsme nyní ve stadiu, kdy se jedná o jeden stroj, na kterém se nacházíme, se snažíme udržet požadavky a optimalizovali jsme samotné stránky, pokud jde o to,.

Jsme nyní ve stadiu, kdy musíme přidat další server, abychom vzali další zátěž, která vede k mé otázce - jaké potenciální úskalí a nástrahy potřebuji, abych si uvědomil (a) nebo otestoval (a) místo, kde se stěhuje do webové farmy nebo clustered hosting prostředí?

- chargeur efest
February 12, 2018

Existuje několik možných upozornění:

Zasedání

Pokud jsou relace uloženy na straně serveru, (i V opačném případě ztratíte relace, když balancer zatížení odešle požadavek od jednoho serveru k druhému nebo případně (pro plyn) má jednoho uživatele s dvěma jedinečnými relacemi. To může být velmi frustrující s AJAX Mohlo by to být dočasný archiv, který je komprimován ke stažení, plochý soubor DB, který sleduje něco, ať už vůbec.

Zablokování SQLite

Používáte-li SQLite3, můžete si všimnout některých chyb, které se nikdy předtím neobjevily, zejména pokud používáte něco podobného systému souborů NFS k sdílení databázových souborů mezi servery. NFS je pomalá, proto doporučuji použít něco jiného.

SSL

Pravděpodobně chcete, aby balancer zatížení byl tím, co zpracovává handshake SSL, který pak požadavek na back end servery používá jakýkoli starý self-signed certifikát. Všechny sdílené soubory by se měly nacházet v síťovém úložišti, nikoli v jednom z webových serverů. V opačném případě, jestliže jeden jde dolů, oba jsou zbytečné, trochu porazí účel.

  • Pokud web používá RDBMS, máte dvě možnosti. Spusťte ji na obou uzlech a použijte synchronizaci master-master nebo vložte DB server do vlastního domova.

  • Zásobní balancery potřebují také redundanci.

  • Ve většině případů můžete přejít z jednoho serveru do vyrovnávací paměti s vyváženým zatížením s malými nebo žádnými změnami samotného webu nebo samotné aplikace, ale budete se muset ujistit, že všechny uzly mohou číst a zapisovat do stejných souborů. To může vyžadovat přidání logiky pro uzamčení v samotné aplikaci.

    . Většina spotřebičů pro vyvažování zátěže může používat slepé relace, což znamená, že uživatel, který skončí na serveru SERVER1, bude na serveru SERVER1 zůstat, obvykle pomocí souboru cookie uloženého v paměti prohlížeče. Jedinou výhradou je to, že pokud SERVER1 zmizí z jakéhokoli důvodu, bude se muset znovu přihlásit na jiný server.

    Začal jsem obklíčit toto mé aplikace (jsou to aplikace typu CF) sdílením relací v serverové farmě. Takže jeden stroj, který sestupuje, nebude mít vliv na uživatelskou zkušenost.

    Jediná výzva, kterou mám čelit při správném replikování obsahu na všechny servery na farmě. Tam je software, aby to (robocopy, Fling z NCH software jsou dva jsem použil), ale mám ještě případy, kdy synchronizace nefungovala 100% času.

    Má vaše aplikace záleží na stavu? Má-li uživatel jednu žádost podávanou jedním strojem a druhým jiným serverem, záleží na tom? Pokud potřebujete přetrvávat nějakou formu stavu mezi žádostmi, pak je vše složitější a existují různé způsoby řešení tohoto problému.

    Pokud se nemusíte starat o stav, pak dobrá práce budovat vaše stránky, a ty by měly být relativně v pořádku s proxy a několik backend serverů.

    Pokud potřebujete přetrvávat stav, existují různé způsoby, jak vytvořit relaci slepých prostřednictvím serveru proxy tak, aby stejný backendový server zpracoval všechny požadavky od jednoho uživatele, ale existuje také mnoho věcí, které ztěžují tyto relace udržet lepivé.

    Můžete také přetrvávat stav v běžném médiu na backend, takže každý server načte stejný stav pro stejného uživatele. Můžete to udělat s databází (možná příliš pomalu) nebo něco jako memcached .

    Rozšiřujete také počet databázových serverů? To přinese další bolest problémů.