Který NFS cluster pro replikaci na více strojů?

Který NFS cluster pro replikaci na více strojů?
« kdy: 17. 08. 2019, 15:17:34 »
Zdravím,
mám několik serverů a chtěl bych tedy udělat nfs cluster pro web a jiné aplikace (prostě mirror, data minimálně na 3 serverech a při výpadku jednoho se nic neděje).

Zkoušel jsem glusterfs (verzi 4), který by byl skvělý, kdyby čtení dat nebylo 100x pomalejší než na normální disku. Kontroluje si to při každém čtení integritu souborů a to jsem nedokázal vypnout (jde to vůbec vypnout?). Takže webová stránka se načítá moc dlouho. Strávil jsem nad tím několik dní a nepodařilo se to vyřešit. Z diskuzí na jiných fórech se to nepodařilo vyřešit nikomu i na jiných verzích.
Hledám tedy něco podobného, co by bylo rychlé jako normální disk (ideálně umí využít i ram na často čtená data). Priorita je rychlost čtení, zápis může mít zpoždění několik sekund.


Díky za každou radu


Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #1 kdy: 17. 08. 2019, 15:22:13 »
Neexistuje na to žádné univerzální řešení.
Architektura aplikace musí počítat s rychlými a pomalými daty a podle toho být nastavená.
Ani Google nedokáže zajistit, že dva stejné dotazy, ze dvou počítačů ve stejné ulici dostanou stejné výsledky.

Některá data (apliace, scripty, ...), se musí řešit mechanismem deplyoe a přepínáním poolů po deployi.
Nedůležitá data mohou být synchronizována se zpožděním (s tím, že tu a tam nedostane uživatel přesný výsledek).
Některá data musí být synchronizována úplně a tam není žádná pomoc, tam se musí čekat třeba 100x déle (příkladem je např. login do google či microsoft služeb, kde ověření trvá dlouhé sekundy až desítky sekund, aby byla jistota, že data jsou všude stejná).

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #2 kdy: 17. 08. 2019, 17:26:04 »
Hm, tak nějaká filecache by to vyřešila. Zkusím něco najít na úroveň mezi php a filesystém.

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #3 kdy: 17. 08. 2019, 17:29:16 »
Hm, tak nějaká filecache by to vyřešila. Zkusím něco najít na úroveň mezi php a filesystém.

Jestli nehledáte něco, co se nedá najít. Pokud chcete mít vše na všech místech 100 % konzistentní, potřebuje to čas na synchronizaci.

Proto se v praxi spíš počítá s tím, že server může vypadnout - a pak přicházejí na řadu mechanismy, jak zajistit v databázi konzistenci, jak zachovat číselné řady (např. dokladů), ... Zjednodušeně: zaměřte svoji pozornost na starý dobrý osvědčený koncept hot-standby serverů.

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #4 kdy: 18. 08. 2019, 13:16:55 »
drbd, syncthing, ceph, atd. by mohly byt reseni, zalezi na pozadavcich.


Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #5 kdy: 18. 08. 2019, 18:46:39 »
Není to 100x pomalejší prostě proto, že je síťové úložiště pomalejší než přístup k samotnému hardware? Podle mě to všichni provozují s nějakou cache (možná bcache, dm-cache, ...??).

Jinak PHP generovalo také dost provozu i pro pouhou kontrolu, zda se php skript změnil a zda je potřeba jej načíst. I pokud se nezměnil tak include nebo require dost zdržoval. U autoloaderu to tolik nevadilo, nicméně na to byly založeny i nějaké issues a s hosterem jsme to tehdy řešili dost dlouho (stránky se načítali desítky sekund a to i při zapnuté opcache). Jak je to teď už nevím, PHP už nesleduji...

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #6 kdy: 18. 08. 2019, 19:36:09 »
Hm, tak nějaká filecache by to vyřešila. Zkusím něco najít na úroveň mezi php a filesystém.

Hmm neco mezi PHP a Filesystemem? Doporucoval prestat psat v sablonovacim systemu a zvolil neco normalnejsiho. DRBD ti musi stacit, NFS ti na tom pobezi a nezapomen, ze jaky si to nastavis takovy to mas. Jestli cpes nejakou file cache na NFS uloziste tak ses jednoznacne PHP programator, nezapomen si napsat vlastni CDN a nejlepe zacni prepisovat L2-L4 do PHP skriptu, abys vyresil ten problem cos nadesignoval.

Sorry, not sorry.
Funny, Not funny.

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #7 kdy: 20. 08. 2019, 11:27:43 »
Ahoj,

Asi by bylo dobre si predem nadefinovat co chces v distribuovanem (file)systemu ukladat. Pokud PHP soubory, tak to asi nebude uplne nejlepsi. Ale pro ukladani treba fotek k produktum mi to prijde jako dobra volba. PHP muzes nahravat napriklad pomoci jobu na jenkins, a nebo jak nedo zminoval DRDB. Pro uloziste fotek produktu uz muze byt vhodne pouzit distribuovana reseni, viz nize.

GlusterFS nevypada spatne, mozna ho misto NFS pripojit pres FUSE. Pry by to melo mit vetsi vykon. Pripadne se podivat zdali nemaji nejake API a pote zkusit cist primo pres API a treba i udrzovat otevrena TCP spojeni na jednotlive nody a minimalizovat cas navazani spojeni. Pridal bych jeste nejakou HTTP cache/CDN(NGIX, Squid, ... )

Dalsi moznosti by mohl byt CEPH. Ten ma dokonce primo Object Storage, kde muzes komunikovat primo pres API. Opet si muzes udrzovat v poolu otevrena TCP spojeni a tim zrychlit nacitani souboru.

Jako posledni muzes zkusit nejakou databazi ktera podporuje replikacni model jako Apache Cassandra. Nastavis si replikaci treba na 3. Takze minimalne 3 nody maji ulozen dany klic. Klicem je nejake ID souboru a hodnotou obsah souboru. Pro soubory vetsi nez XX MB muzes soubor rozdelit a ulozit jako vice klicu. Je dobre mit klic hodne nahodny, treba hash. Pak se  hodnoty dobre rozprostrou po celem clusteru. U Apache Casandra dokonce pak vis i na kterych nodech dany klic lezi a muzes komunikovat primo s nody ktere maji dany klic. Pokud honis opravdu o nizkou latenci, muzes poslat dalsi pozadavek na druhy nod pokud z prvniho nedorazi odpoved do 20ms. Pote si jen vezmes data z toho pozadavku co dorazil nejdrive. Toto reseni pry dokaze hodne snizit tail latency.

Radek

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #8 kdy: 20. 08. 2019, 13:40:28 »
v podstatě jediné řešení, které by to pro tebe asi bylo je použít ceph a následně cephfs
nfs cluster neexistuje ve freewaru a je pouze komerční = velmi předražený
základem ovšem je mít správný hw a infrastrukturu. Pokud chceš aby ti ze sdíleného storage data tekla stejně rychle (+/- pár mb) je potřeba na to mít taky infrastrukturu. Tzn. 10gb síť a správné disky tzn ssdčka.

glusterfs je pomalej to se o něm ví. Ten je vhodný na ukládání dat co potřebuješ mít sdílené napříč nějakými stroji ale nevyžaduješ od toho žádnou rychlost. Např. pro ssl certifikáty a podobný věci na který se moc nesahá.

nfs protokol zpomaluje rychlost přístupu k datům to jsem si už bohužel ověřil před několika lety. Avšak po přechodu na cephfs je všechno krásně rychlé.

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #9 kdy: 20. 08. 2019, 14:05:16 »
Tak to zalezi jak ktere nfs. Nam to bezi dostatecne rychle a efektivne. Cluster lze postavit i bez zaplaceni nejakeho reseni. Oproti tomu cephfs je narocnejsi na zdroje vcetne udrzby, proti tomu je nfs velmi jednoduche a v pripade recovery jeste snazsi.

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #10 kdy: 21. 08. 2019, 19:16:55 »
a muzu se zeptat jak to mate resene?Alespon nastin pokud to je firemni knowhow :) ;)

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #11 kdy: 22. 08. 2019, 10:08:28 »
a muzu se zeptat jak to mate resene?Alespon nastin pokud to je firemni knowhow :) ;)

2x hw node debian 9 s drbd8, pacemaker/corosync. Pouziva R1 vzdy ze dvou disku (startovni setup) ssd.
Napr. pro Intel S3510:
HW fio randrw vuci 1x ssd [kiops]: read 93, write 73, randrw 49/16
VM fio nyni (v behu produkce), 2x ssd v drbd pres nfs4 [kiops]: randrw 15.5/5

V te dobe byl ceph nekolikrat pomalejsi, napr. pro NVME R1 byl randrw 31/10, pricemz 1xNVME ma randrw 167/55...

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #12 kdy: 22. 08. 2019, 11:24:34 »
aha takže active-standby a ještě ke všemu na drbd. Tak to jen doufám že drbd udělalo pokrok od starších verzí a už se samo od sebe nerozhoduje zahodit data.
S tím u nás ve firmě jsou jen špatné zkušenosti

a asi bych to nepovažoval za cluster, ale spíše za HA řešení.

on cephfs byl dlouhou dobu v experimental fázi a nebyl v jádrech delší dobu pořádnej klient. Až od jader 4.x. Ale teď už to je v pohodě.

Nicméně s tim co zakladatel tématu má v požadavku
Citace
(prostě mirror, data minimálně na 3 serverech a při výpadku jednoho se nic neděje)
tak by pro něj byl ceph ideální jelikož už nějaký hw má tak by náklady měly být menší. A můžou mi vypadnout dva a bude pořád v pohodě

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #13 kdy: 26. 09. 2020, 17:21:03 »
Nakonec jsem poskládal víc jednodušších řešení do sebe.
Teď mám 1 webserver jakoby hlavní a z něj se vše kopíruje na další přes lsync(to je auto rsync, co hlídá, jestli se něco změnilo), takže když se podělá hlavní část, ostatní dál jedou.
Ten hlavní server byl ale stále single point of failure a běží tam různé scripty, takže delší výpadek také není dobrý, takže jsem ještě udělal jeho kopii a na tu se také kopírují soubory. V případě potřeby tam stačí zapnout crontab a lsync.
« Poslední změna: 26. 09. 2020, 17:26:48 od kotelgg »

Re:Který NFS cluster pro replikaci na více strojů?
« Odpověď #14 kdy: 26. 09. 2020, 17:35:13 »
Ceph jsem zkoušel rozjet, ale nakonec jsem zjistil, že bych na něj musel vyhradit extra disky. Chci se vyhnout komplikovaným řešením, protože když se něco podělá, tak není čas to dávat týden dohromady.