it-swarm-eu.dev

Rollování aktualizací ve farmě webového serveru?

Velké webové stránky (Amazon, Facebook, Yahoo atd.) Neplánují prostoje na upgrady. Obvykle se provádějí „živě“ a postupně se válí přes serverovou farmu. Mají také velkou infrastrukturu a týmy, které to spravují.

Menší webové stránky obvykle převádějí celý web do režimu offline, aby aktualizovaly strukturu databáze a upgradovaly kód běžící na webových serverech. Výpadky mohou být velmi minimální, ale je to stále přerušení pro zákazníky.

Jak jste se dostali ke skokovým aktualizacím bez prostojů? Jaké jsou minimální požadavky k dosažení tohoto cíle? Co můžeme udělat, abychom vytvořili aplikace, které to umožní od samého začátku?

5

Jaké jsou minimální požadavky k dosažení tohoto cíle?

Jakmile máte za vyrovnávačem zátěže alespoň dva servery, můžete postupně odebrat server z clusteru, aktualizovat jej a přidat jej zpět do clusteru, aby byla aktualizace dokončena (pokud jde o návštěvníka).

Co můžeme udělat, abychom vytvořili aplikace, které to umožní od samého začátku?

Navrhněte svou aplikaci s ohledem na požadavky na vyrovnávání zatížení .

5
danlefree

0 prostojů je ekvivalent webserveru „design musí vypadat v každém prohlížeči úplně stejně“. Naplánovaný prostoj je v pořádku, stačí jej naplánovat a upozornit na něj. Pokud vás to vlastně nestojí tuny hitů nebo peněz, což by jako malý web nebylo definicí. Pokud nechcete, aby to někdo viděl dělat to během čtvrtého července (nebo Díkůvzdání nebo jiný vhodný okamžik), pokud váš web není výsledkem vyhledávání Google č. 1 pro text „Firework burn treatment“ nebo „Francis Scott Key lyrics“, budete v pohodě.

To od začátku obvykle vede k mnohem většímu riziku: nadměrné inženýrství.

0
Thomas

Vždy existuje nějaký důvod pro naplánované prostoje, ale může být minimalizován.

V závislosti na vaší infrastruktuře mohou různé strategie minimalizovat prostoje. Pravidelné aktualizace by neměly vyžadovat prostoje.

Na mnoha webech založených na PHP spravuji spravované kopie codebase vedle sebe, řekněme verze 1.0, 1.1 a 1.2:

/sites/site-1-0-0
/sites/site-1-1-0
/sites/site-1-2-0

A pak vytvořte odkazy, které webový server může použít:

/sites/production --> /sites/site-1-1-0
/sites/staging    --> /sites/site-1-2-0

Tímto způsobem mohu uvést svůj kód na produkční server pro kontrolu hygieny na poslední chvíli, a když chci být naživu, prostě:

$ rm /sites/production; ln -s /sites/site-1-2-0 /sites/production

Webový server používá symbolické odkazy ve specifikaci DocumentRoot, takže výřez je prakticky okamžitý.

Jsou zde samozřejmě také gotchas. Je třeba zajistit, aby externí data byla někde uložena, např. Externí. Nechcete zapisovat dočasné soubory ani ukládat obsah generovaný uživatelem do souborového systému pod adresáři site-x-y-z.

Další alternativou, pokud máte více serverů, je provést výpadek prostřednictvím směrování. Někteří prodejci VPS (Linode přichází na mysl) usnadňují přijímání dvou virtuálních strojů a výměnu jejich IP adres. Takže si nastavíte novou verzi na novém serveru, proveďte potřebné testování a poté nasaďte IP a nasaďte aktualizaci. Totéž platí pro udržování aktuálních aktiv bez kódu, ale některé pečlivé přemýšlení a plánování mohou tento problém způsobit.

S robustnějšími nastaveními vyváženými na zátěž fungují také strategie podobné těm, které jsou navrženy v odpovědi na danlefree.

0
timdev