Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 8. rész: Hibatűrés

Hasonló dokumentumok
Elosztott rendszerek

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 6. rész: Szinkronizáció

Hibafelismerés: CRC. Számítógépes Hálózatok Polinóm aritmetika modulo 2. Számolás Z 2 -ben

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Számítógépes Hálózatok 2008

Bokor Péter. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 7. rész: Konzisztencia & replikáció

Számítógépes Hálózatok 2012

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Számítógépes Hálózatok. 7. gyakorlat

Autóipari beágyazott rendszerek. A kommunikáció alapjai

Elnevezési rendszerek. Szinkronizálás

Alapszintű formalizmusok

Számítógépes Hálózatok GY 6.hét

Számítógépes Hálózatok. 4. gyakorlat

Györgyi Tamás. Szoba: A 131 Tanári.

Számítógépes Hálózatok GY 7.hét

Hálózatok. Alapismeretek. A hálózatok célja, építőelemei, alapfogalmak

Számítógépes Hálózatok. 5. gyakorlat

The Flooding Time Synchronization Protocol

2. fejezet Hálózati szoftver

S04-2 Elosztott alkalmazások készítése

Hibafelismerés: CRC. Számítógépes Hálózatok Polinóm aritmetika modulo 2. Számolás Z 2 -ben

V2V - routing. Intelligens közlekedési rendszerek. VITMMA10 Okos város MSc mellékspecializáció. Simon Csaba

Modellezés Petri hálókkal. dr. Bartha Tamás dr. Majzik István dr. Pataricza András BME Méréstechnika és Információs Rendszerek Tanszék

Adatbázisok elmélete 24. előadás

Szinkronizálás. 9. előadás

Autóipari beágyazott rendszerek. Local Interconnection Network

Hálózati Technológiák és Alkalmazások

Programozható vezérlő rendszerek KOMMUNIKÁCIÓS HÁLÓZATOK 2.

Elosztott rendszerek alapszolgáltatásai

Számítógépes Hálózatok ősz Adatkapcsolati réteg Hibafelismerés és javítás, Hamming távolság, blokk kódok

Elnevezési rendszerek. 7. előadás

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Adatkapcsolati réteg (Data Link Layer) Számítógépes Hálózatok Az adatkapcsolati réteg lehetséges szolgáltatásai

Hálózati Technológiák és Alkalmazások. Vida Rolland, BME TMIT november 5. HSNLab SINCE 1992

Számítógépes Hálózatok 2013

Operációs rendszerek. Az X Window rendszer

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 1. rész: Bevezetés

* Rendelje a PPP protokollt az TCP/IP rétegmodell megfelelő rétegéhez. Kapcsolati réteg

Szállítási réteg (L4)

Alapszintű formalizmusok

Az Oracle rendszer komponensei

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

Kommunikáció. 3. előadás

webalkalmazások fejlesztése elosztott alapon

A számítógép hálózatok kialakulásának okai:

Címkék és ágak kezelése i. Címkék és ágak kezelése

Elosztott rendszerek. Az elıadás. Az elosztott rendszer definíciója. Köztesrétegként felépülı elosztott rendszer

SQL Server High Availability

ERLANG PROGRAMOK TRANSZFORMÁCI CIÓJA ERLANG

Elosztott rendszerek

Számítógépes Hálózatok. 5. gyakorlat

Hálózati Technológiák és Alkalmazások. Vida Rolland, BME TMIT október 29. HSNLab SINCE 1992

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 2. rész: Architektúrák

Belépés a GroupWise levelező rendszerbe az Internet felől

IP anycast. Jákó András BME TIO

VoIP (Voice over IP)

Ellenőrzőpont támogatás PVM alkalmazások számára a magyar ClusterGriden

Fábián Zoltán Hálózatok elmélet

Újdonságok Nexus Platformon

Hálózatok Rétegei. Számítógépes Hálózatok és Internet Eszközök. TCP/IP-Rétegmodell. Az Internet rétegei - TCP/IP-rétegek

Az Internet. avagy a hálózatok hálózata

A rendszer célja. Funkciók

GOOSE üzenetküldés korszerű alállomásokban. Előadás: Rózsa Gábor

11. Elosztott állománykezelés. Operációs rendszerek. Elosztott állománykezelés. Teljesítmény növelése. Az állományokra hivatkozás. Az állományok nevei

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 4. rész: Kommunikáció

2014 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Számítógép hálózatok gyakorlat

Dr. Mileff Péter

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 5. rész: Elnevezési rendszerek

A JGrid rendszer biztonsági architektúrája. Magyaródi Márk Juhász Zoltán Veszprémi Egyetem

Elosztott adatbázis-kezelő formális elemzése

Jogi Behajtási Keretrendszer és moduljai üzemeltetése

Osztott rendszer. Osztott rendszer informális definíciója

Fine-Grained Network Time Synchronization using Reference Broadcast

Az Internet felépítése

Adatbázisok elmélete 24. előadás

Számítógépes Hálózatok. 5. gyakorlat

InFo-Tech emelt díjas SMS szolgáltatás. kommunikációs protokollja. Ver.: 2.1

I. Házi Feladat. internet. Határidő: V. 30.

UNIX: folyamatok kommunikációja

Két típusú összeköttetés PVC Permanent Virtual Circuits Szolgáltató hozza létre Operátor manuálisan hozza létre a végpontok között (PVI,PCI)

Multiprotocol encapsulation (RFC1483) - IETF Classical IP over ATM (RFC1577) - IETF LAN Emulation (LANE) - ATM Forum Multiprotocol over ATM (MPOA) -

Egyszerű simplex protokoll nyugtákkal

Szimuláció. Fault Tolerant Systems Research Group. Budapest University of Technology and Economics. Department of Measurement and Information Systems

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Tartalom. Az adatkapcsolati réteg, Ethernet, ARP. Fogalma és feladatai. Adatkapcsolati réteg. A hálókártya képe

Hálózatok I. A tárgy célkitűzése

Tranzakciókezelés PL/SQL-ben

10. fejezet Az adatkapcsolati réteg

Fájlrendszerek. A Windows operációs rendszerek fájlrendszere

Folyamatok. 6. előadás

Számítógép-hálózatok. Gyakorló feladatok a 2. ZH témakörének egyes részeihez

2. fejezet Hálózati szoftver

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Optimista konkurenciavezérlés

Valós idejű kiberfizikai rendszerek 5G infrastruktúrában

Occam 1. Készítette: Szabó Éva

Átírás:

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms Maarten van Steen 1 Kitlei Róbert 2 1 VU Amsterdam, Dept. Computer Science 2 ELTE Informatikai Kar 8. rész: Hibatűrés 2015. május 24.

Tartalomjegyzék Fejezet 01: Bevezetés 02: Architektúrák 03: Folyamatok 04: Kommunikáció 05: Elnevezési rendszerek 06: Szinkronizáció 07: Konzisztencia & replikáció 08: Hibatűrés 10: Objektumalapú elosztott rendszerek 11: Elosztott fájlrendszerek 12: Elosztott webalapú rendszerek Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 34

Megbízhatóság Alapok A komponensek feladata, hogy a kliensek számára szolgáltatásokat tesz elérhetővé. Ehhez sokszor maga is szolgáltatásokat vesz igénybe más komponensektől függ tőlük. A függéseket most főleg abból a szempontból vizsgáljuk, hogy a hivatkozott komponensek helyessége kihat a hivatkozó helyességére. Elérhetőség Megbízhatóság Biztonságosság Karbantarthatóság A komponens reagál a megkeresésre A komponens biztosítja a szolgáltatást A komponens ritkán romlik el Az elromlott komponens könnyen javítható Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 34

Terminológia Hasonló nevű, de különböző fogalmak Hibajelenség (failure): a komponens nem a tőle elvártaknak megfelelően üzemel Hiba (error): olyan rendszerállapot, amely hibajelenséghez vezethet Hibaok (fault): a hiba (feltételezett) oka Hibákkal kapcsolatos tennivalók Megelőzés Hibatűrés: a komponens legyen képes elfedni a hibákat Mérséklés: lehet mérsékelni a hibák kiterjedését, számát, súlyosságát Előrejelzés: előre becsülhető lehet a hibák száma, jövőbeli előfordulása, következményei Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 34

Lehetséges hibaokok Lehetséges hibaokok A hibáknak sok oka lehet, többek között az alábbiak. Összeomlás (crash): a komponens leáll, de előtte helyesen működik Kiesés (omission): a komponens nem válaszol Időzítési hiba (timing): a komponens helyes választ küld, de túl későn (ennek teljesítménnyel kapcsolatos oka lehet: a komponens túl lassú) Válaszhiba (response): a komponens hibás választ küld Értékhiba: a válaszként küldött érték rossz Állapotátmeneti hiba: a komponens helytelen állapotba kerül Váratlan hiba (arbitrary): véletlenszerű válaszok, gyakran véletlenszerű időzítéssel Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 34

Összeomlás Probléma A kliens számára nem különböztethető meg, hogy a szerver összeomlott vagy csak lassú. Ha a kliens a szervertől adatot vár, de nem érkezik, annak oka lehet... időzítési vagy kieséses hiba a szerveren. a szerver és a kliens közötti kommunikációs csatorna meghibásodása. Lehetséges feltételezések Fail-silent: a komponens összeomlott vagy kiesett egy válasz; a kliensek nem tudják megkülönböztetni a kettőt Fail-stop: a komponens hibajelenségeket produkál, de ezek felismerhetőek (a komponens közzéteszi, vagy időtúllépésből szűrjük le) Fail-safe: a komponens csak olyan hibajelenségeket produkál, amelyek nem okoznak (nagy) kárt Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 34

Folyamatok hibatűrése Cél Próbáljuk meg a hibákat redundanciával elfedni. Egyenlő csoport: Jó hibatűrést biztosít, mert a csoport tagjai között közvetlen az információcsere. A nagymértékű többszörözöttség azonban megnehezíti az implementálást (a vezérlés teljesen elosztott). Hierarchikus csoport: Két fél csak a koordinátoron keresztül képes kommunikálni egymással. Rossz a hibatűrése és a skálázhatósága, de könnyű implementálni. Flat group Hierarchical group Coordinator Worker (a) Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 34 (b)

Csoporttagság kezelése Csoportkezelő: Egy koordinátor kezeli a csoportot (vagy csoportokat). Rosszul skálázódik. Csoportkezelők csoportja: A csoportkezelő nem egyetlen szerver, hanem egy csoportjuk közösen. Ezt a csoportot is kezelni kell, de ezek a szerverek általában elég stabilak, így ez nem probléma: centralizált csoportkezelés elegendő. Csoportkezelő nélkül: A belépő/kilépő folyamat minden csoporttagnak üzenetet küld. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 34

Hibaelfedés csoportokban k-hibatűrő csoport k-hibatűrő csoport: olyan csoport, amely képes elfedni k tag egyszerre történő meghibásodását. Mekkorának kell a csoportnak lennie? Ha a meghibásodottak összeomlanak, csak az szükséges, hogy legyen megmaradó tag k + 1 tag Ha minden csoporttag egyformán működik, de a meghibásodottak rossz eredményt adnak 2k + 1 tag esetén többségi szavazással megkapjuk a helyes eredményt Ha a csoporttagok különbözően működnek, és mindegyikük kimenetét el kell juttatni mindenki másnak ( bizánci generálisok ) 3k + 1 tag esetén a lojális szerverek képesek megfelelő adatokat továbbítani k áruló jelenlétében is Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 34

Hibaelfedés csoportokban Az áruló folyamatok többféleképpen is tudnak helytelen adatokat továbbítani. Process 2 tells different things a 2 2 b a 1 3 1 b (a) 3 1 Faulty process Process 3 passes a different value x 1 2 y (a) b (b) 1 a 2 3 2 Az alábbi két ábra illusztrálja k = 1 esetben, hogy k áruló esetén 3k + 1 folyamat elegendő, de 3k még nem. Először mindenki elküldi a saját értékét, majd minden beérkezett értéket ismét továbbítanak. 2 1 2 1 1 x 2 1 4 y 2 4 4 3 4 z Faulty process (a) 1 2 3 Got( 1, 2, x ) Got( 1, 2, y ) Got( 1, 2, 3 ) (b) 1 Got 2 Got ( 1, 2, y ) ( 1, 2, x ) ( a, b, c ) ( d, e, f ) (c) 1 2 3 4 Got( 1, 2, x, 4 ) Got( 1, 2, y, 4 ) Got( 1, 2, 3, 4 ) Got( 1, 2, z, 4 ) 1 Got 2 Got 4 Got ( 1, 2, y, 4 ) ( 1, 2, x, 4 ) ( 1, 2, x, 4 ) ( a, b, c, d ) ( e, f, g, h ) ( 1, 2, y, 4 ) ( 1, 2, z, 4 ) ( 1, 2, z, 4 ) ( i, j, k, l ) (b) (c) Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 34

Hibaelfedés csoportokban Folyamatok: Szinkron: a folyamatok azonos ütemben lépnek-e (lockstep)? Késleltetések: A kommunikációs késleltetésekre van-e felső korlát? Rendezettség: Az üzeneteket a feladás sorrendjében kézbesítik-e? Átvitel: Az üzeneteket egyenként küldjük (unicast) vagy többcíműen (multicast)? Egyezség elérése Néhány feltételrendszer, amely fennállásával elérhető, hogy kialakuljon a közös végeredmény: Ha a ütemezés szinkron és a késleltetés korlátozott. Ha az üzeneteket sorrendtartó módon, többcíműen továbbítjuk. Ha az ütemezés szinkron és a kommunikáció sorrendtartó. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 34

Hibák észlelése Időtúllépés Időtúllépés észlelése esetén feltételezhetjük, hogy hiba lépett fel. Az időkorlátok megadása alkalmazásfüggő, és nagyon nehéz A folyamatok hibázása nem megkülönböztethető a hálózati hibáktól A hibákról értesíteni kell a rendszer többi részét is Pletykálással elküldjük a hiba észlelésének tényét A hibajelenséget észlelő komponens maga is hibaállapotba megy át Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 34

Megbízható kommunikáció Csatornák A folyamatok megbízhatóságát azok csoportokba szervezésével tudtuk növelni. Mit lehet mondani az őket összekötő kommunikációs csatornák biztonságosságáról? Hibajelenségek észlelése A csomagokat ellenőrző összegekkel látjuk el (felfedi a bithibákat) A csomagokat sorszámmal látjuk el (felfedi a kieséseket) Hibajavítás A rendszer legyen annyira redundáns, hogy automatikusan meg lehessen javítani Kérhetjük a meghibásodott/elveszett utolsó N csomag újraküldését Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 34

Megbízható RPC RPC: Fellépő hibajelenségek és azok kezelése 1: A kliens nem találja a szervert. Ezt egyszerűen ki lehet jelezni a kliensnél. 2: A kliens kérése elveszett. A kliens újraküldi a kérést. 3: A szerver összeomlott. Ezt nehezebb kezelni, mert a kliens nem tudja, hogy a szerver mennyire dolgozta fel a kérést. REQ Server REQ Server REQ Server Receive Receive Receive REP Execute Execute Crash No REP No REP Reply Crash (a) (b) (c) El kell dönteni, hogy milyen módon működjön a szerver. Legalább egyszer szemantika szerint: A szerver az adott kérést legalább egyszer végrehajtja (de lehet, hogy többször is). Legfeljebb egyszer szemantika szerint: A szerver az adott kérést legfeljebb egyszer hajtja végre (de lehet, hogy egyszer sem). Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 34

Megbízható RPC RPC: Fellépő hibajelenségek és azok kezelése 4: Elveszett a szerver válasza. Nehéz felismerni, mert a szerver összeomlása is hasonló a kliens szemszögéből. Nincsen általános megoldás; ha idempotens műveleteink vannak (többszöri végrehajtás ugyanazt az eredményt adja), megpróbálhatjuk újra végrehajtani őket. 5: Összeomlik a kliens. Ilyenkor a szerver feleslegesen foglalja az erőforrásokat: árva a feladatok keletkeznek. A kliens felépülése után az árva feladatokat szükség szerint leállítja/visszagörgeti a szerver. A kliens felépülése után új korszak kezdődik: a szerver leállítja az árva feladatokat. A feladatokra időkorlát adott. A túl sokáig futó feladatokat a szerver leállítja. a Más fordításban: fattyú. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 34

Megbízható csoportcímzés Adott egy többcímű átviteli csatorna; egyes folyamatok üzeneteket küldenek rá és/vagy fogadnak róla. Megbízhatóság: Ha m üzenet csatornára küldésekor egy folyamat a fogadók közé tartozik, és köztük is marad, akkor m üzenetet kézbesíteni kell a folyamathoz. Sokszor a sorrendtartás is követelmény. Atomi csoportcímzés: Cél: elérni azt, hogy csak akkor kézbesítsük az üzenetet, ha garantáltan mindegyik fogadónak kézbesíthető. Egyszerű megoldás lokális hálózaton A küldő számon tartja az elküldött üzeneteket. Minden fogadó nyugtázza (ACK) az üzenet fogadását, vagy kéri az üzenet újraküldését (NACK), ha észreveszi, hogy elveszett. Ha minden fogadótól megérkezett a nyugta, a küldő törli az üzenetet a történetből. Ez a megoldás nem jól skálázódik: Ha sok a fogadó, a küldőhöz túl sok ACK és NACK érkezik. A küldőnek minden fogadót ismernie kell. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 34

Megbízható csoportcímzés: visszajelzés-elfojtás Hagyjuk el az ACK üzeneteket, csak a kimaradó üzenetek esetén küldjenek a fogadók NACK üzeneteket. Tegyük fel, hogy a NACK üzenetek közös csatornán utaznak, és mindenki látja őket. A P fogadó a NACK küldése előtt véletlen ideig vár; ha közben egy másik fogadótól NACK érkezik, akkor P nem küld NACK-t (elfojtás), ezzel csökkenti az üzenetek számát. A NACK hatására a küldő mindegyik fogadóhoz újra eljuttatja az üzenetet, így P-hez is. Sender receives only one NACK Receivers suppress their feedback Sender Receiver Receiver Receiver Receiver T=3 T=4 T=1 T=2 NACK NACK NACK NACK NACK Network Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 34

Megbízható csoportcímzés: hierarchikus visszajelzés-vezérlés Az előző módszer lokális hálózatban működik hatékonyan. Az átméretezhetőség javításához a lokális hálózatokból építsünk fát; az üzenetek a fában felfelé, a NACK üzenetek felfelé utaznak. Probléma: a fát dinamikusan kell építeni, a meglévő hálózatok átkonfigurálása nehéz lehet. (Long-haul) connection Coordinator S Sender Local-area network C C Receiver R Root Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 34

Megbízható csoportcímzés: elemi csoportcímzés A folyamatok számon tartják, hogy kik a csoport tagjai: nézet (view). Egy üzenetet csak akkor kézbesítenek, ha az eljutott az adott nézet minden tagjához. Mivel a nézetek időben változhatnak, ez ún. látszólagos szinkronizáltságot (virtual synchrony) ad. Reliable multicast by multiple P1 joins the group point-to-point messages P3 crashes P3 rejoins P1 P2 P3 P4 G = {P1,P2,P3,P4} G = {P1,P2,P4} G = {P1,P2,P3,P4} Partial multicast from P3 is discarded Time Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 34

Elosztott véglegesítés: 2PC 2PC Egy elosztott számítás végén szeretnénk elérni, hogy vagy minden folyamat véglegesítse az eredményt, vagy egyik sem. (atomiság) Ezt általában kétfázisú véglegesítéssel (two-phase commit, 2PC) szokás elérni. A számítást az azt kezdeményező kliens koordinátorként vezérli. Az egyes fázisokban a koordinátor (K) és egy-egy résztvevő (R) az alábbiak szerint cselekszik. 1/K: Megkérdez mindenkit, enged-e véglegesíteni: vote-request. 1/R: Dönt: igennel (vote-commit) vagy nem (vote-abort), utóbbi esetben rögtön el is veti a kiszámított értéket. 2/K: Ha minden válasz vote-commit, mindenkinek global-commit üzenetet küld, különben global-abort üzenetet. 2/R: Végrehajtja a kapott globális utasítást: elmenti a kiszámított adatokat (eddig csak átmenetileg tárolta őket lokálisan), illetve törli őket. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 34

Elosztott véglegesítés: 2PC A vonalak fölött a kapott, alattuk a küldött üzenetek nevei láthatóak. Commit Vote-request Vote-abort Global-abort ABORT INIT WAIT (a) Vote-commit Global-commit COMMIT A 2PC koordinátor állapotgépe Vote-request Vote-abort INIT Vote-request Vote-commit READY Global-abort ACK ABORT (b) Global-commit ACK COMMIT Egy 2PC résztvevő állapotgépe Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 34

Elosztott véglegesítés: 2PC, résztvevő összeomlása Résztvevő összeomlása Egy résztvevő összeomlott, majd felépült. Mit tegyen adott állapotban? INIT: A résztvevő nem is tudott a véglegesítésről, döntés: ABORT. ABORT: Az eredmények törlendők. Az állapot marad ABORT. COMMIT: Az eredmények elmentendők. Az állapot marad COMMIT. READY: A résztvevő a koordinátor 2/K döntésére vár, amit megkérdez tőle, vagy a koordinátor összeomlása esetén a többi résztvevőtől. Azok vagy már tudnak róla (ABORT vagy COMMIT), vagy még INIT állapotban vannak (ekkor ABORT mellett dönthetnek). Ha mindegyik résztvevő READY állapotban van, akkor megoldható a helyzet, azonban... A 2PC protokoll blokkolódhat Ha a koordinátor és legalább egy résztvevő összeomlott, és a többi résztvevő a READY állapotban van, akkor a protokoll beragad, ugyanis nem ismert, hogy a kiesett résztvevő kapott-e az összeomlása előtt valamilyen utasítást a koordinátortól. Ez szerencsére szinte sohasem fordul elő a gyakorlatban. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 34

Elosztott véglegesítés: 3PC 3PC 1/K és 1/R: Mint korábban: megkezdődik a szavazás (vote-request), és a résztvevők válaszolnak (vote-commit vagy vote-abort) 2/K: Ha van vote-abort) szavazat, minden résztvevőnek global-abort üzenetet küld, majd leáll. Ha minden szavazat vote-commit, prepare-commit üzenetet küld mindenkinek. 2/R: global-abort esetén leáll; prepare-commit üzenetre ready-commit üzenettel válaszol. 3/K: Összegyűjti a prepare-commit üzeneteket; küldi: global-commit. 3/R: Fogadja a global-commit üzenetet, és elmenti az adatokat. A 3PC protokoll nem blokkolódhat Mivel a koordinátor és a résztvevők mindig legfeljebb egy távolságban vannak az állapotaikat tekintve, ha mindegyik aktív résztvevő READY állapotban van, akkor a kiesett résztvevő még nem járhat a COMMIT fázisban. Megjegyzés: a PRECOMMIT állapotból csak véglegesíteni lehet. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 34

Elosztott véglegesítés: 3PC Commit Vote-request Vote-abort Global-abort ABORT INIT WAIT PRECOMMIT COMMIT Vote-commit Prepare-commit Ready-commit Global-commit Vote-request Vote-abort INIT Vote-request Vote-commit READY Global-abort ACK ABORT Prepare-commit Ready-commit PRECOMMIT COMMIT Global-commit ACK (a) A 3PC koordinátor állapotgépe (b) Egy 3PC résztvevő állapotgépe Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 34

Felépülés Alapok Ha hibajelenséget érzékelünk, minél hamarabb hibamentes állapotba szeretnénk hozni a rendszert. Előrehaladó felépülés: olyan új állapotba hozzuk a rendszert, ahonnan az folytathatja a működését Visszatérő felépülés: egy korábbi érvényes állapotba térünk vissza Jellemző választás Visszatérő felépülést alkalmazunk, ehhez ellenőrzőpontokat (checkpoint) veszünk fel. Konzisztens állapot szükséges Az elosztott rendszerek visszaállítását nehezíti, hogy ellenőrzőpontot a rendszer egy konzisztens állapotára szeretnénk elhelyezni, ennek megtalálásához pedig a folyamatok együttműködése szükséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 34

Stabil tárolás (stable storage) Sector has different value b a h g c d e f b a h g c d e f b a h g c d e f b a h g c d e f b a h g c d e f b a h g c d e f Bad checksum (a) (b) (c) Az ellenőrzőpontokat minél megbízhatóbban kell tárolnunk. Tegyük fel, hogy fizikailag szinte elpusztíthatatlan tárunk van (stable storage), és két másolatot használunk; mit kell tenni összeomlás után? Ha mindkét lemez tartalma azonos, minden rendben. Ha az ellenőrzőösszegek alapján kiderül, melyik a helyes, azt választjuk. Ha helyesek, de eltérnek, az első lemezt választjuk, mert oda írunk először. Ha egyik sem helyes, nehezen eldönthető, melyiket kell választani. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 34

Konzisztens rendszerállapot A folyamatok pillanatfelvételeket készítenek az állapotukról. konzisztens metszet: olyan ellenőrzőpont-gyűjtemény, amelyben minden beérkezett üzenethez a küldési esemény is el van tárolva felépülési vonal: a lehető legkésőbb készült (legfrissebb) konzisztens metszet P1 Initial state Recovery line Checkpoint Failure P2 Message sent from P2 to P1 Time Inconsistent collection of checkpoints Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 34

Dominóeffektus Vissza kell keresnünk a legutolsó konzisztens metszetet. Ezért minden folyamatban vissza kell térni egy korábbi ellenőrzőponthoz, ha elküldetlen fogadott üzenetet találunk. Így viszont további üzenetek válnak nem elküldötté, ami továbbgyűrűző visszagörgetéshez (cascaded rollback) vezethet. P1 Initial state Checkpoint P2 m m Failure Time Maarten van Steen, Kitlei Róbert Elosztott rendszerek 28 / 34

Független ellenőrzőpontok készítése Egy lehetőség, ha mindegyik folyamat egymástól függetlenül készít ellenőrzőpontokat (independent checkpointing). Jelölje CP[i](m) a P i folyamat m-edik ellenőrzőpontját. Jelölje INT[i](m) a CP[i](m 1) és CP[i](m) közötti időintervallumot. Amikor P i üzenetet küld a INT[i](m) intervallumban, hozzácsatolja i és m értékét. Amikor P j fogadja az üzenetet a INT[j](n) intervallumban, rögzíti, hogy új függőség keletkezett: INT[i](m) függ INT[j](n), és ezt CP[j](n) készítésekor a stabil tárba menti Ha P i -nek vissza kell állítania CP[i](m 1)-et, akkor P j -t is vissza kell görgetni CP[i](m 1)-ig. A függőségek egy gráfot adnak ki, ennek a vizsgálatával derül ki, melyik folyamatot pontosan melyik ellenőrzőpontig kell visszagörgetni, legrosszabb esetben akár a rendszer kezdőállapotáig. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 29 / 34

Koordinált ellenőrzőpontkészítés A dominóeffektus elkerülése végett most egy koordinátor vezérli az ellenőrzőpont készítését. Kétfázisú protokollt használunk: Az első fázisban a koordinátor minden folyamatot pillanatfelvétel készítésére szólít fel. Amikor ezt megkapja egy folyamat, elmenti az állapotát, és ezt nyugtázza a koordinátor felé. A folyamat továbbá felfüggeszti az üzenetek küldését. Amikor a koordinátor minden nyugtát megkapott, minden folyamatnak engedélyezi az üzenetek küldését. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 30 / 34

Felépülés naplózással Ahelyett, hogy pillanatfelvételt készítenénk, most megpróbáljuk újra lejátszani a kommunikációs lépéseket az utolsó ellenőrzőponttól. Ehhez mindegyik folyamat lokális naplót vezet. A végrehajtási modellről feltételezzük, hogy szakaszosan determinisztikus (piecewise deterministic): Mindegyik folyamat végrehajtását egymás után következő szakaszok sorozata Mindegyik szakasz egy nemdeterminisztikus eseménnyel kezdődik (pl. egy üzenet fogadása, szignál kezelése) A szakaszon belül a végrehajtás determinisztikus A naplóba elég a nemdeterminisztikus eseményeket felvenni, a többi lépés belőlük meghatározható. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 31 / 34

Üzenetek konzisztens naplózása P Q R m1 Q crashes and recovers m3 m2 m2 m3 Unlogged message Logged message m1 m2 is never replayed, so neither will m3 Time Úgy szeretnénk naplózni, hogy elkerüljük árva folyamatok kialakulását. Q folyamat fogadta m 1 -et és m 2 -t, és elküldte m 3 -at. Tegyük fel, hogy m 2 üzenetet se R, se Q nem naplózta Q összeomlása után a visszajátszás során ekkor senkinek sem tűnik fel, hogy m 2 kimaradt Mivel Q kihagyta m 2 -t, ezért a tőle (lehet, hogy) függő m 3 -at sem küldi el Maarten van Steen, Kitlei Róbert Elosztott rendszerek 32 / 34

Üzenetek konzisztens naplózása Jelölések HDR[m]: Az m üzenet fejléce, tartalmazza a küldő és a folyamat azonosítóját és az üzenet sorszámát. Egy üzenet stabil, ha a fejléce már biztosan nem veszhet el (pl. mert stabil tárolóra írták). COPY[m]: Azok a folyamatok, amelyekhez HDR[m] már megérkezett, de még nem tárolták el. Ezek a folyamatok képesek HDR[m] reprodukálására. DEP[m]: Azok a folyamatok, amelyekhez megérkezett HDR[m ], ahol m okozatilag függ m-től. Ha C összeomlott folyamatok halmaza, akkor Q C árva, ha függ olyan m üzenettől, amelyet csak az összeomlottak tudnának előállítani: Q DEP[m] és COPY[m] C. Ha DEP[m] COPY[m], akkor nem lehetnek árva folyamataink. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 33 / 34

Üzenetek konzisztens naplózása Pesszimista naplózóprotokoll Ha m nem stabil, akkor megköveteljük, hogy legfeljebb egy folyamat függjön tőle: DEP[m] 1. Implementáció: minden nem-stabil üzenetet stabilizálni kell továbbküldés előtt. Optimistista naplózóprotokoll Tegyük fel, hogy C a hibás folyamatok halmaza. A nem-stabil m üzenetekre, ha COPY[m] C, akkor azt szeretnénk elérni, hogy egy idő után DEP[m] C is teljesüljön. Implementáció: minden árva folyamatot visszagörgetünk olyan ellenőrzőpontig, ahol a függőség már nem áll fenn. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 34 / 34