Kdy a proč využít Docker nebo více serverů?

Kdy a proč využít Docker nebo více serverů?
« kdy: 25. 04. 2023, 11:49:25 »
Dobrý den,
mějme virtuální server na KVM u jedné česke nejmenované firmy. Poběží zde komplexní systém s webovým rozhraním pro uživatele, databází pro data, aplikace v Javě komunikující do světa, SFTP server pro přenosy dat, nějaká API pro mobilní aplikace a další systémy atd.

Na tomto serveru bude:
- Debian 11
- PostgreSQL pro data včetně replikace na jiný server
- nginx + PHP - webové rozhraní, API atd.
- Keycloak - pro ověřování uživatelů
- sftgo - SFTP server
- Zabbix agent - monitoring
- a další vlastní programy v Javě - zasílání mailů a SMS, komunikace se světem - současně stovky spojení přenášející data oběma směry, vytváření exportů a sestav v PDF pro web a sftp atd.

Chtěl bych se zeptat zkušenějších jak toho všechno provozovat?
Asi se to dá všechno nainstalovat na tento jeden server, ale to nebude to pravé.
Nabízí se Docker a nějak to rozdělit do kontejnerů.
Další možností je některé části dát na jiný virtuální server, což by řešilo případné přetížení serveru, kdyby třeba web měl takový požadavek, který by přetížil systém a zpomalil databázi atd.
Jak to postavit? Děkuji.


Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #1 kdy: 25. 04. 2023, 13:14:19 »
v první řadě kvůli bezpečnosti to nechceš provozovat vše na jednom místě, je nutné to oddělit. Osobně bych to asi oddělil do virtuálek a přidělil odpovídající zdroje, aby nedošlo k přetížení důležitých služeb.

docker není špatný, ale zase to udržovat aktualizované a debugovat nemusí být tak snadné, já třeba mám rád i systemd-nspawn, má spousty flagů pro dobrou izolaci procesů, má možnost omezit i TCP/UDP spojení podle cíle, stejně tak můžeš omezovat zdroje. Systemd a journalctl mi pak poskytuje stav a logy na jednom místě, funguje auditd, nepotřebuji nic ohýbat.

Jen to jen návrh, abys začínal přemýšlet o nějakém oddělení, většinou se snažím aspoň dát stranou věci, které jsou na kritické cestě od věcí, kde může být spouštěn kód uživatele. Stejně tak chci, aby mi i při 100 % zatížení backendů kvůli nějakému DoS fungoval přístup a monitorování.

vm1:
- zabbix agent
- Keycloak
- PostgreSQL
- nginx

vm2:
- zabbix agent
- php webové rozhraní
- sftgo
- java aplikace


jjrsk

  • ****
  • 413
    • Zobrazit profil
Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #2 kdy: 25. 04. 2023, 14:33:56 »
Dost zalezi na tom, jak co s cim komunikuje.

Databaze by vzdy mela bezet idealne oddelene, jak z duvodu vykonu tak bezpecnosti. Je ovsem otazka, jak moc s tim pocitaji ty aplikace co tam chces mit. Pripadne, jak moc bezpecne s tou databazi umi nebo neumi komunikovat. Da se to sice obchazet ruznejma tunelama, ale ...

Predpokladam, ze ten web = verejny web = opet idealne oddelit, protoze prave tam ti budou mirit scany vsemoznych scriptu. V optimalnim pripade by ti nejaky ten DOSik nemel sejmout ostatni veci.

"dalsi javove aplikace" ... typicky se resi potencielni rizika = aplikace ktera nekde neco generuje na disk je vpohode, aplikace ktera nekam neco posila uz mene, a aplikace, na kterou se da zvenku cokoli (i zprostredkovane) poslat je problem.

Vem si takovou hezkou appku, ktera jen bere data z disku, na kterej ji ty data dal nejaky servrik ... a voiala, pri trose sikovnosti ji lze primet ke spusteni tech dat.

Tudiz z pohledu provozu se takovy veci v tom smyslu oddeluji tak, aby v pripade, ze se to nekomu povede, byly skody minimalni. Tzn napriklad abych se pres tu appku nedostal treba k web serveru, kde bych pak oveckam naserviroval nejaky ten pekny scriptik, ktery by mi poslal treba jejich hesla.

Jinak je to samosebou o penezich.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #3 kdy: 25. 04. 2023, 14:37:33 »
Díky,
ještě upřesním, z hlediska funkce celého systému nevadí, když při nějakém přetížení systému chvíli nepojede web a mobilní aplikace (uživatelé to překousnou) a případně sftp (data se přenesou později).
Ale je důležité, aby jely některé komunikační java aplikace, které neustále z databáze něco čtou a ukládají do ní. Tady i výpadek 10 sekund je nežádoucí.

none_

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #4 kdy: 25. 04. 2023, 14:52:58 »
Tohle neni podle me neco, co by bylo vhodne splacat na zaklade komentaru z fora. Hlavne pokud tomu nerozumite.

Kazdy pristup ma svoje vyhody a nevyhody a nikdo tady nebude schopen tohle posoudit, protoze k vam nevidi. To se da pouze na zaklade vasich zkusenosti. At uz z vyvoje, testovani, atd.

Pokud to si nejste jistej, jak na to, doporucoval bych si zaplatit DevOps konzultanta, at vam to navrhne.


Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #5 kdy: 26. 04. 2023, 11:56:47 »
Díky,
ještě upřesním, z hlediska funkce celého systému nevadí, když při nějakém přetížení systému chvíli nepojede web a mobilní aplikace (uživatelé to překousnou) a případně sftp (data se přenesou později).
Ale je důležité, aby jely některé komunikační java aplikace, které neustále z databáze něco čtou a ukládají do ní. Tady i výpadek 10 sekund je nežádoucí.

Tak hodne stesti, to bude vyzadovat robustni HA reseni a tim i cena takoveho reseni bude jinde.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #6 kdy: 26. 04. 2023, 12:00:35 »
Takový systém provozujeme cca 15 let. Je to na Windows serveru, všechno běží na tomto jednom serveru vedle sebe. Teď stavíme nástupce, kde bychom to chtěli udělat lépe.
I toto "špatné" řešení máme vyladěné tak, že ty výpadky prostě nejsou, ač to může být k nevíře. Výpadky jsou tehdy, když restartujeme server kvůli aktualizaci OS, řádově jednotky minut.
DevOps kontultant je určitě varianta, šlo mi o nějaké základní uvedení do problematiky.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #7 kdy: 26. 04. 2023, 13:28:16 »
No skuste lepsie a znova :) 15 rokov bezite na jednom HW? Jednom Windowse a len aktualizujete? To je windows 2008? A vsetko to ide bez problemu roky? Ked je to tak ako pisete tak spravte len mirror disku a nechajte to dalsich 15 rokov tak. Ibaze by to pravda nebola...

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #8 kdy: 26. 04. 2023, 13:37:55 »
15 let provozujeme podobný server jako jsem psal v úvodním dotazu - měl jsem na mysli skladbu software.
Začali jsme na Windows Server 2008, aktuálně asi 8-9 let Windows Server 2012 R2. Letos přejdeme na Windows Server 2022.
Důvod proč stavíme nové řešení nesouvisí se spolehlivostí toho stávajícího, který pojede dále.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #9 kdy: 26. 04. 2023, 14:16:47 »
No takze v podstate to mate vyriesene. Ak vam to spolahlivo funguje nie je dovod to pchat do dockeru. Ak by sa riesila trosku vecsia infrastruktura tak tam to zmysel ma.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #10 kdy: 26. 04. 2023, 14:49:23 »
No vyřešené to úplně nemáme, protože na stávajícím serveru to běží v jednom systému (sice pod různými účty) a potenciálně tam může kdykoli nastat problém přetížení serveru nebo nějaký bezpečnostní incident.
Tady navíc bude Keycloak, se kterým aktuálně pracujeme v Dockeru a proč jej rvát přímo do systému. Taky třeba aktualizace DB serveru by nemusela být podmíněna zastavením systému po dobu instalace a migrace, ale mohl by běžet starý a nový DB server vedle sebe apod.
Jde o to, navrhnout to lépe a radostněji s vyhlídkou dobrého nastavení do budoucna.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #11 kdy: 26. 04. 2023, 16:05:24 »
Klidne bych to behal vsechno na jednom serveru, krom PHP aplikaci - ty bych dal napr do docker kontejneru.
Z pohledu vyuziti prostredku dava smysl prave DB mit jako jednu bezici instanci.

jjrsk

  • ****
  • 413
    • Zobrazit profil
Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #12 kdy: 26. 04. 2023, 16:12:12 »
Hele, lepe a radostneji by sis mel ujasnit predevsim to, co se vlastne chce. Od toho se totiz odviji, co a jak se udela.

Protoze tohle
Tady i výpadek 10 sekund je nežádoucí.

Naprosto neodpovida tomu, co tu popisujes. Zajistit takovouhle spolehlivost jednak nikdo neumi, druhak pokud by ses k tomu chtel alespon priblizit, tak pocitej ze to bude stat desitky MKc.

Kdyz ti umre ten tvuj jeden server tak bude vypadek jak dlouhy? Tyden? Tedy pokud je to postaveno na nejakem tom consumers HW = to co se da koupit v kazde garazi. Protoze pokud by to byl server, tak driv nez za mesic zadnou nahradu nesezenes a nesprovoznis.

A co kdyz ti vypnou elektrinu, japa dlouho to pobezi? Minutu nebo dve? A pak? A co kdyz ti lehne internet?

Tohle je jen nepatrny vyber situaci, ktery je treba resit. A realita je takova, ze kdyz jsem ja zakaznikovi nacenil co ho jeho pozadavek na zajisteni provozu 24/7 bude stat, tak se vzdy najednou ukazalo, ze i cele dny vypadku vlastne nejsou problem.

Pro predstavu, takova bezna "garantovana" linka na net je na 99,98. Coz mimo jine znamena, ze ta linka se povazuje za zcela funkcni, kdyz nebude kazdy mesic 14 !hodin! fungovat vubec. A co si vemes na poskytovateli kdyz to nebude fungova dyl? V nejlepsim pripade ti vrati/nevyfakturuje mesicni poplatek.

Takze prvni co potrebujes vedet je, kolik firmu bude stat, kdyz to nebude fungovat hodinu/den/tyden/mesic ... a jake to potencielne bude mit dalsi dusledky.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #13 kdy: 26. 04. 2023, 20:15:57 »
Myslím, že vím co se chce, asi jsem to měl více rozepsat nebo to takto neuvádět bez kontextu.
Stávající systém běží v cloudu, garanci mají 99,99 %, v noci se dělá snapshot celého serveru, jsou k dispozici 2 po sobě, databáze je replikována na jiný server v jiném geografickém umístění. Kdyby ten virtuál klekl a nešel ani spustit, tak spuštění ze zálohy otázka minut a dosypání dat z repliky je na pár desítek minut. Takto to funguje, vyhovuje to a nový systém bude podobný. Nakonec my takovou spolehlivost negarantujeme, při aktualizaci Windows jednou za měsíc stejně na pár minut až desítek minut nejede, než se restartuje. To není problém, je to o víkendu a v noci, kdy je relativně klid.

Těch 10 sekund uvedu na příkladu - když byl před léty systém několik hodin přetížený, tak odezva databáze byla třeba 10-20 sekund. A protože na ten server komunikují desítky jiných systémů a stále něco požadují, tak ty odpovědi trvaly a začalo to vadit.
A to je v podstatě to, čemu bychom chtěli předejít. Takže třeba web bude ukládat do hlavní DB a číst z repliky. Kdyby se stalo, že web bude vyčítat takové množství dat, že DB přetíží, tak to až tak vadit nebude, hlavní DB pojede dále.
Další věcí je zvýšení bezpečnosti, kdy nyní máme vše na jednom serveru, což nějak necítím jako dobré řešení. V neposlední řadě jde například o lepší způsob aktualizace jednotlivých částí, bez větších výpadků. Např. DB se musí zastavit, aktualizovat, spustit, migrovat atd. a to nějakou dobu trvá. Kdyby byly 2 DB servery v dockeru, spustí se replikace na novou verzi a pak se to jen přepne - skoro bez výpadků.
A nakonec chceme použít Keycloak a ten je výhodné provozovat v Dockeru, novou verzi si připravíme mimo, spustíme kontejner a přepneme.

Když se vrátím k prvnímu postu, tak mi fakt jde o zorientování se v tom, kdy třeba použít docker a na co více virtuálů.
Už hledám DevOps konzultanta.

Re:Kdy a proč využít Docker nebo více serverů?
« Odpověď #14 kdy: 27. 04. 2023, 09:34:43 »
Citace
Mohu vám odpovědět protiotázkou?

Jednoducha otazka, ale slozite to poresit. Neexistuje instantni odpoved.
1) zacni tim, ze si nakreslis konkretni schema co kde s cim apod
2) vezmi si na to konzultanta

Mas mraky veci na nez nelze odpovedet na foru: jak delas deploy? ktera cast muze byt nachylna na zahlceni a je potreba u ni resit load balancig? fakt nutne potrebujes docker a nebude vyhodnejsi treba lxc? kde a jak to bude hostovane? Pokud docker pouzijes kube nebo staci napr. docker-compose?
Děkuji za možnost editace příspěvku.