CategoryLinux

Svět bez Linuxu

Nginx: 10 tipu pro vyšší výkon

Pokud stejně jako já používáte jako webový server Nginx, který nahradil původní Apache z jednoduchého důvodu: výkon, pak se vám bude líbit tento článek popisující 10 tipů jak zvýšit výkon vašeho webového serveru.

  1. Reverzní proxy server
  2. Load balancer
  3. Kešování statického a dynamického obsahu
  4. Komprese dat
  5. Optimalizace SSL/TLS
  6. Implementace HTTP2
  7. Aktualizace SW
  8. Ladění výkonu Linuxu na kterém Nginx běží
  9. Ladění výkonu samotného webového serveru
  10. Monitoring provozu pro řešení problému a úzkých hrdel

Nginx je cool

nginx

Nginx a vlastní JavaScript

Už nějakou dobu používám na všech svých serverech místo Apache Nginx. Nginx zcele Apache nahradil a přinesl další nové možnosti, které Apache implemetoval velice nevhodně a v podstatě nepoužitelně. Respektive z pohledu jak to funguje pod Nginxem mi připadá řešení Apache jako nepoužitelné, těžkopádné, neškálovatelné a prostě nevhodné.

Ja jasné, že Nginx umí PHP a vše co souvisí s klasickým webem. To ale nebyl důvod proč jsem hledal něco jiného než je Apache. Mým důvodem bylo spouštění Python webových aplikací přímo na serveru. A později NodeJS aplikací. Potřeboval jsem reverzní proxy cache, která by se jednoduše konfigurovala a fungovala.

Zadání bylo jasné: na serveru běží na nějakém portu (nebo na více portech) nějaká rádoby www aplikace. To je ta, která skrze nějaký streem komunikuje s prohlížečem návštěvníka. Klasicky: 80 port na nějaké webové adrese je potřeba přesměrovat právě dle URL na požadovanou aplikaci běžící na serveru, která se postará o odbavení požadavku a předpokládá se, že pošle nějaká data zpět. To vše v reálu pro několik (třeba i tisíce) konkurenčních požadavků.

Photo bylo důležité, aby reverzní proxy uměla přicházející požadavky směrovat na více instancí dané aplikace běžící třeba na úplně jiných strojích. Tohle Nginx zvládá úplně skvěle.

Nginx a JavaScript

S Nginxem se toho na straně odbavení requestu dá dělat docela hodně. A teď ještě víc. Implementují vlastní, značně ořezaný JavaScript, který má umžnit ještě více možností ve smyslu zpracování proudících požadavků skrze Nginx server.

Více informací o samotném JavaScript interpeteru nejdete zde.

nginx

Fedora 22

Dnes jsem dokončil update OS Linux, distribuce Fedora na 11 serverech.
Na všech mi běžela Fedora 21, vedle toho mi na nových 5 serverech už nějaký týden právě bez problému běží Fedora 22 a dnes byla uvolněna nová beta verze 23.
Takže nejvyšší čas pro nějaké to plošné sjednocení.

Vedle toho mi na jednom serveru stále běží Fedora ve verzi 15! Mám úplně strach na stroj šáhnout, aby se něco nepokazilo. Server běží a v podstatě o něm nevím. Běží na něm dost věcí a všechny docela důležitý…

Vypnutí screensaveru na terminálu

Na serverech spouštím nějaké monitorovací apliakce a čas od času kouknu co to ukazuje. Teda v případě, že monitor právě nezčerná, protože nejste aktivní na terminálu…

Pokud chcete vypnout screensaver na vašem terminálu:

Opsáno odsud.

Mutli screen

Snímek obrazovky 2015-09-24 v 16.32.34 (2)

Tak tahle vypadá screenshot mého okna s terminálem na notebooku, ve kterém je spuštěno 11 ssh klientů na jednotlivé fyzické servery v cloudu.

Pro rozdělení okna terminálu používám příkaz screen.

Ctrl a + S Rozděli aktuální okno horizontálně
Ctrl a + \ Rozdělí aktuální okno vertikálně
Ctrl a + Tab Zafokusuje další okno (buffer)
Ctrl a + c Spustí v aktuálním okně shell

Z povšimnutí stojí, že na aplikačních serverech jsou 4 jádrové procesory, na databázových serverech 2 jádra a minimální RAM na strojích je 8GB RAM (respektive jeden config server má jen 4GB RAM, ale to sám nevím proč).

a1 až a3 jsou aplikační servery, d1 až d3 jsou databázové servery, c1 až c3 jsou config servery a fs1 s fs2 jsou file servery (data v MongoDB databázícj v ReplicaSetech přes tyto servery).

Forward Remote Desktop

Pokud k připojení vaší sítě do Internetu používýte jako já firewall postavený na linoxovém stroji, bude se vám hodit tento script pro povolení, respektive přesmětování portu 3389 na váš Microsoftí Windows server.

Ansible, hromadná správa linuxových serverů

Ansible je nástroj pro konfiguraci a orchestraci serverů. Umožňujem mi hromadně a jedním příkazem aktualizovat či instalovat aplikace na více serverech zároveň. Díky tomuto se nemusím připojovat na každý server zvlášť a zadávat opakovaně ty stejné příkazy.

Na svém notebooku mám nainstalovaný ansible a na serverech není potřeba instalovat nic… Veškerá činnost probího skrze ssh.

Jediné co jsem musel dokonfigurovat je sshd deamon na jednotlivých spravovaných serverch:
1. je potřeba povolit připojení roota na sshd
2. aby toto bylo bezpečné, vypnul jsem přihlašování heslem, zapnul přihlašování klíčem a povolil roota

Pak jsem si na notebooku vytvořil /etc/ansible/hosts, kde stačí na každý řádek zadat IP serveru, nebo jeho název.

No a pak už hned funguje například toto pro update na všech serverech: ansible all -a ‚dnf -y update‘

Pokud serverů máte mnoho a mají různé role, respektive chcete spouštět dané činnosti jen na některých z nich, pak je v hosts můžete seskupovat do skupin a dané přikazy provádět jen nad vybranou skupinou.

43-ansible-multi-node-deployment-workflow

© 2017 pepa.holla.cz

Theme by Anders NorénUp ↑