Správa infrastruktury pro webové aplikace

Správa infrastruktury pro webové aplikace
« kdy: 13. 10. 2023, 15:56:17 »
Ahoj, kamarád se ptá:

měl bych otázku na zkušenější kolegy, kteří nezůstali v pravěku jako já, ale mají povědomí o tom, jak se to dělá dneska líp a efektivně.

Mám hromadu dejme tomu hromádku 30 VPS serverů na Proxmoxu (cluster x fyz. serverů s cephem a nad tím proxmox) a co server to instalace Linuxu a v něm většinou webserver s PHP, MySQL, případně Redis apod. prostě jenom nějaká malá webová aplikace pro interní potřeby a pár public webů.

A teď k problému: spousta serverů je nějaký starší Debian a prostě se včas nestihlo vše upgradovat, takže pár VPS s Debian 7, pár s 8 atd, minimum je zcela aktuální.... vynechme prosím debatu že je to šlendrián admina to už předem potvrzuju že jo, ale chci to změnit...

Když nějaký server ručně upgraduju zjistím, že se spousta věcí rozbila a logicky to musím ručně opravit a také i někdy přepisovat kód aplikace pokud chci nejnovější PHP a necpat tam staré kvůli kompatibilitě s aplikací atp. to je peklo kterým si prostě nějak projdu, ale jde mi o to netočit se v tomhle kolečku ale předělat řešení na nějaké chytřeji spravovatelné.

Všude vidím na tomto webu o Dokeru, Kubernetes, Terraformu atp. a tak moje otázka zní jestli je to správná myšlenka jít směrem těchto technologií a nad HA clusterem postavit to kubernetes dát každou z aplikací do samostatného dockeru, protože vesměs jde jenom o nějaké aplikace která běží na své doméně nazev_aplikace.firma.com, takže fakt nepotřebuje mít každá aplikace svůj dedikovaný VPS a dedikovaný OS a už vůbec je dávat k sobě to by byl ještě větší bordel.

Dává to smysl mít jen několik hlavních VPS Proxmoxu, jedno na Kubernetes, druhé na git a třetí třeba na monitoring a ty mít proti Ansible/Puppet předloze a všechny aplikace mít už v Dokeru v tom Kubernetes a nasazovat to přes terraform?

Jak byste navrhli takovou infrastrukturu a jaké technologie na to použili, aby se to nakonec dalo efektivně spravovat proti řešení co mám teď?

Díky moc za případné tipy k věci.

J.D.
« Poslední změna: 13. 10. 2023, 17:14:06 od Petr Krčmář »


Re:Správa infrastruktury pro webové aplikace
« Odpověď #1 kdy: 13. 10. 2023, 18:50:56 »
Popisu moje lowcost reseni na podobny usecase.
1) vpsfree.cz, ale dokazu si to ve vetsim predstavit treba na zeleze u Hetznera, ale mam rad ze se na vpsfree nemusim tolik starat o zalohovani
2) docker-compose.yml a v nem nginx-proxy + letsencrypt companion (to chyta porty 80 a 443 a potom to posila dal v ramci Docker sitovani na prislusne aplikace)
3) gitlab-runner, ktery rsyncem nahodi "deploy" slozku na spravne misto
4) cele se to spusti pres docker compose (a pres .env to rekne tomu nginx-proxy jake mu ma dat hostname, jake ma ziskat certifikaty apod.

Dockerfile pro PHP, pro ty FE weby ktere jsem dostal odjinud, docker-compose pro nginx-proxy to vse ma super dokumentaci. gitlab-runner je taky sranda tim jak se pise v yaml.

Jedu takhle na jednom serveru vedle sebe Drupal v ruznych verzich (ruzne verze php, mariadb atd), k tomu nejaky weby na reactu apod. Neni to HA, vypadky obcas drobne jsou, ale spis v nocnich hodinach. Mam 14 dennich snapshotu masiny kdyby se neco delo (ja si teda jeste rsyncem zalohuju na domaci NAS, ale to uz je dalsi krok).
« Poslední změna: 13. 10. 2023, 18:54:36 od to_je_jedno »
Děkuji za možnost editace příspěvku.

Re:Správa infrastruktury pro webové aplikace
« Odpověď #2 kdy: 13. 10. 2023, 19:43:14 »
Ahoj

Ja bezim uz takmer 3 roky na dvoch kusoch Raspberry PI 4 s 8GB ram. Primarne mi tam bezia nejake  drobne weby napisane v Ruby on Rails. 

Moj tech stack je nasledovny:
- Docker - kazda RoR app ma svoj docker container
- Docker Swarm - bezim v Docker swareme, mam master a worker node (lepsie by bolo mat aj treti cisto pre load balancer)
- GlusterFS - distribuovany file system (ak mi umrie jedno Raspberry PI, tak to druhe ma realtime zalohu uplodnutych dokumentov)
- Traefik - proxy, ktora je na vstupnom bode a rozhadzuje prichadzajuce requesty na konkretne docker kontajnery (zjednodusene). Vie sama riesit aj Letsencrypt automaticke obnovovanie certifikatov
- PostgreSQL - databaza, ktora vdaka Patroni vie bezat v High Availability rezime (realne sa mi synchronizuju navzajom, takze ked mi zobrie jedno RPI, mam realtime zalohu na druhom RPI)
- Portainer - GUI manazment pre Docker kontajnery a Docker Swarm
- Zabbix - monitoring infra
- UptimeRobot - externy monitoring dostupnosti webov
- Cloudflare - DDOS ochrana webov

Clanok najdes na https://github.com/Matho/dockerize-pi-2 Len upozornujem ze nie je to tutorial ktory by bol vyladeny pre publikum, skor su to take moje poznamky pre seba, aby som vedel co som si ako nasetupoval ked som to robil.

Verim, ze by ti to mohlo pomoct.

Poznamka: Niesom sysadmin, ale ako odrazovy mostik to stacit bude.

Re:Správa infrastruktury pro webové aplikace
« Odpověď #3 kdy: 14. 10. 2023, 09:50:03 »
Jaké jsou reálné poklesy rychlosti aplikace s Dockerem? Netvrďte mi, že žádné.

Kolik času strávíte učením Dockeru, Kubernetes, Terraformu a kolik času pak pří správě ušetříte?

i-PRESS

  • ***
  • 100
  • NodeJS, Python, Perl, Lua, PHP
    • Zobrazit profil
Re:Správa infrastruktury pro webové aplikace
« Odpověď #4 kdy: 14. 10. 2023, 10:21:57 »
Pokud to jsou state-less aplikace, šel bych cestou Kubernetes, provozujeme to tak již roky. Na všechny fyzické stroje Proxmox. Vyrobit VM pro Kubernetes, vždy bych se držel toho, mí na každém nodu jak master, tak alespoň 1 worker. Takže vždy VM jako master (control plane + etcd) a alespoň 1 VM jako worker. Jsou i nástroje na deploy a managování těch clusterů, to se hodí zvláště pokud jich je více (test, prod, ,...). Jde to pak hromadně updatovat apod.


Aplikace pak deployovat třeba pomocí Helmu. Jistě, je tam nějaká vstupní bariéra, ale získáš tím do budoucna téměř neomezené možnosti škálování a Kubernetes s Proxmoxem tě ušetří noční zásahů v případě pádu aplikace/serveru. V zásadě to je nezničitelné, pár trablů se řešilo jen v souvislosti s nedomyšleným upgradem, nebo ručním zásahem.


Databáze držíme prozatím na samostatných VM, na ty monitorovací a logovací nástroje jde vytočit extra cluster, je zbytečné plýtvat zdroji (samostatné VM).


Re:Správa infrastruktury pro webové aplikace
« Odpověď #5 kdy: 14. 10. 2023, 12:37:16 »
Jaké jsou reálné poklesy rychlosti aplikace s Dockerem? Netvrďte mi, že žádné.

Kolik času strávíte učením Dockeru, Kubernetes, Terraformu a kolik času pak pří správě ušetříte?

Že to běží v Dockeru na výkonu asi nepoznáte, pokud neprovozujete nějakou aplikaci která vyžaduje extrémní propustnost nebo velmi nízké latence (což jistě není případ tazatele). Síťový filesystém může být znát, záleží jak to máte vyladěné.

FKoudelka

Re:Správa infrastruktury pro webové aplikace
« Odpověď #6 kdy: 14. 10. 2023, 13:57:02 »
Ahoj

Ja bezim uz takmer 3 roky na dvoch kusoch Raspberry PI 4 s 8GB ram. Primarne mi tam bezia nejake  drobne weby napisane v Ruby on Rails. 

Moj tech stack je nasledovny:
- Docker - kazda RoR app ma svoj docker container
- Docker Swarm - bezim v Docker swareme, mam master a worker node (lepsie by bolo mat aj treti cisto pre load balancer)
- GlusterFS - distribuovany file system (ak mi umrie jedno Raspberry PI, tak to druhe ma realtime zalohu uplodnutych dokumentov)
- Traefik - proxy, ktora je na vstupnom bode a rozhadzuje prichadzajuce requesty na konkretne docker kontajnery (zjednodusene). Vie sama riesit aj Letsencrypt automaticke obnovovanie certifikatov
- PostgreSQL - databaza, ktora vdaka Patroni vie bezat v High Availability rezime (realne sa mi synchronizuju navzajom, takze ked mi zobrie jedno RPI, mam realtime zalohu na druhom RPI)
- Portainer - GUI manazment pre Docker kontajnery a Docker Swarm
- Zabbix - monitoring infra
- UptimeRobot - externy monitoring dostupnosti webov
- Cloudflare - DDOS ochrana webov

Clanok najdes na https://github.com/Matho/dockerize-pi-2 Len upozornujem ze nie je to tutorial ktory by bol vyladeny pre publikum, skor su to take moje poznamky pre seba, aby som vedel co som si ako nasetupoval ked som to robil.

Verim, ze by ti to mohlo pomoct.

Poznamka: Niesom sysadmin, ale ako odrazovy mostik to stacit bude.
Můžes prosím rozvést ten cloudflare ? Co jak za kolik ?

Re:Správa infrastruktury pro webové aplikace
« Odpověď #7 kdy: 14. 10. 2023, 16:12:05 »
Ku tomu Cloudflare:

Pozri ich web - https://www.cloudflare.com  Pricing najdes na linku https://www.cloudflare.com/plans/ Zakladny balik je zdarma.

Ochrana voci DDOS spociva v tom, ze musis zmenit DNS NS (nameserveri) na danej domene na Cloudflare. Tym padom vlastne vsetok traffic na domene bude routovany cez Cloudflare. Vdaka tomu ak zistia mozny DDOS utok na danej domene, vedia prepnut nastavenie uctu do Under Attack modu a zobrazit navstevnikom webu nejaky jednoduchy javascript challenge. Nieco ako recaptcha. To by malo odfiltrovat botov a utocnikov a umoznit beznym navstevnikom webu zobrazit web a tym znizit load servera. Je tam moznost si vyklikat aj nejake pravidla, pripadne si to zapnut rucne, ak zistis sam, ze na teba niekto utoci.

Okrem tejto DDOS ochrany tam maju kopec analytickych reportov ale i moznost vyuzivat ich ssl certifikat, teda nemusis si riesit auto obnovovanie letsencrypt certifikatu na serveri.

Je tam aj moznost status page. Tj ak mam server down (ale ze uplne down) tak to zobrazi ich status page, ze navstevnikova internetova konektivita je v poriadku a ze problem je len s nedostupnostou webu. V platenej verzii sa da ta status page kustomizovat.

Zaroven sa da Cloudflare vyuzit aj ako CDN.

Maju tam vela moznych nastaveni, len neviem uplne co vsetko je for free. Tym free balickom sa ta snazia nalakat aby si casom presiel na paid verziu.

Nie kazdy vsak je ochotny menit DNS NS zaznamy. Ale ak uz budes, pomoze ti tento tool na verifikaciu stavu DNSSEC https://dnsviz.net/


FKoudelka

Re:Správa infrastruktury pro webové aplikace
« Odpověď #8 kdy: 14. 10. 2023, 18:01:20 »
dik moc
 
Ku tomu Cloudflare:

Pozri ich web - https://www.cloudflare.com  Pricing najdes na linku https://www.cloudflare.com/plans/ Zakladny balik je zdarma.

Ochrana voci DDOS spociva v tom, ze musis zmenit DNS NS (nameserveri) na danej domene na Cloudflare. Tym padom vlastne vsetok traffic na domene bude routovany cez Cloudflare. Vdaka tomu ak zistia mozny DDOS utok na danej domene, vedia prepnut nastavenie uctu do Under Attack modu a zobrazit navstevnikom webu nejaky jednoduchy javascript challenge. Nieco ako recaptcha. To by malo odfiltrovat botov a utocnikov a umoznit beznym navstevnikom webu zobrazit web a tym znizit load servera. Je tam moznost si vyklikat aj nejake pravidla, pripadne si to zapnut rucne, ak zistis sam, ze na teba niekto utoci.

Okrem tejto DDOS ochrany tam maju kopec analytickych reportov ale i moznost vyuzivat ich ssl certifikat, teda nemusis si riesit auto obnovovanie letsencrypt certifikatu na serveri.

Je tam aj moznost status page. Tj ak mam server down (ale ze uplne down) tak to zobrazi ich status page, ze navstevnikova internetova konektivita je v poriadku a ze problem je len s nedostupnostou webu. V platenej verzii sa da ta status page kustomizovat.

Zaroven sa da Cloudflare vyuzit aj ako CDN.

Maju tam vela moznych nastaveni, len neviem uplne co vsetko je for free. Tym free balickom sa ta snazia nalakat aby si casom presiel na paid verziu.

Nie kazdy vsak je ochotny menit DNS NS zaznamy. Ale ak uz budes, pomoze ti tento tool na verifikaciu stavu DNSSEC https://dnsviz.net/

Re:Správa infrastruktury pro webové aplikace
« Odpověď #9 kdy: 14. 10. 2023, 18:06:35 »
Jaké jsou reálné poklesy rychlosti aplikace s Dockerem? Netvrďte mi, že žádné.

Kolik času strávíte učením Dockeru, Kubernetes, Terraformu a kolik času pak pří správě ušetříte?
Nedokazal jsem na linuxu zmerit zadne poklesy rychlosti.
Tohle jsou vsechno ruzne technologie a jedna na druhe nezavisi. Docker je v dnesni dobe IMHO nutnost. Bez ostatnich se da obejit.
Děkuji za možnost editace příspěvku.

Re:Správa infrastruktury pro webové aplikace
« Odpověď #10 kdy: 14. 10. 2023, 20:43:00 »
Jaké jsou reálné poklesy rychlosti aplikace s Dockerem? Netvrďte mi, že žádné.

Ja pouzivam Ubuntu, ale ak pouzivas MacOS tak tam bezi Docker pomalsie ako na Linuxe. Ako je to s Windowsom neviem. Ak pogooglis, mozno najdes aj nejake zdroje so statistikami.

Citacia z clanku co som nasiel na webe:
Citace
Docker containers run on top of a Linux kernel; meaning Docker on Linux can use the native kernel and the underlying virtual file system is shared between the host and container.

On Mac, you’re using Docker Desktop. This native MacOS application is bundled with an embedded hypervisor named HyperKit which provides the kernel capabilities of Linux. However, unlike Docker on Linux, any file system changes need to be passed between the host and container via Docker Desktop, which can soon add a lot of additional computational overhead, therefore causing performance problems when dealing with high-throughput applications.

Re:Správa infrastruktury pro webové aplikace
« Odpověď #11 kdy: 15. 10. 2023, 08:16:51 »
Na Macu je výkonnostní propad daný pouze u shared volumes. Ale kluci co mají apple čpí říkají ze oproti Intelu to urychlilo výrazně. Widle neřeším, to je na hivno pokud zrovna nedělas .Net
Děkuji za možnost editace příspěvku.

lojdr

Re:Správa infrastruktury pro webové aplikace
« Odpověď #12 kdy: 15. 10. 2023, 13:32:36 »
Vzhledem k tomu, že "kamarád" o technologiích jako Kubernetes, Docker, Terraform jen slyšel, tak bych se na Kubernetes v produkci zatím vykašlal. Šel bych cestou HA clusterů postavených třeba na Pacemakeru (Apache, Nginx... podle preferencí). Podobně i u databází (MySQL, Redis).
To je něco co člověk znalý Proxmoxu, Linuxu a PHP vytvoří myslím relativně rychle.

Tím bude standardizované prostředí, které podle mě poskytne požadované HA řešení a sníží i nároky na údržbu, čím uvolní čas pro učení se Kubernetu.

Pak bych prošel internet a hledal:
- Základy Kubernetes (deployment, údržba) -> Koukni třeba na Kubespray
- Specifika aplikací provozovaných na Kubernetu. Není to vždycky jen tak, že existující aplikace "se zabalí do Dockeru" a mám Kubernetes aplikaci.
- Zjistit, co je to CI/CD, jak automaticky provádět buildění a nasazování nových verzí. -> Mezi produky co sledovat jsou třeba Jenkins, Tekton, ArgoCD...

Ze začátku to bude trochu bolet, ale po nějakém čase už kamarád bude vědět sám jakým směrem jít. :-)

BTW. Pro produkční prostředí bych nepoužíval co zde zaznělo (1 control-plane + 1 worker). To totiž dost redukuje (odstraňuje) jednu z výhod Kubernetu co se týká vysoké dostupnosti a schopnosti se zotavit z pádu HV nebo VM na kterém Kubernetes běží.
Vše by mělo existovat minimálně dvakrát, ideálně 3x (z pohledu Kubernetu u aplikacích na něm běžících to může být jiné).

Re:Správa infrastruktury pro webové aplikace
« Odpověď #13 kdy: 16. 10. 2023, 19:21:42 »
Ahoj, moc děkuji všem za váš čas a vaše inspirativní pohledy na věc. :-)

Jdu studovat a taky se porozhlédnu po nějakém školení, protože času na samostudium je fakt málo.

J.D.