Skip to content

Instantly share code, notes, and snippets.

@theikkila
Created December 15, 2014 17:59
Show Gist options
  • Save theikkila/e7e55681fef2c28dae5c to your computer and use it in GitHub Desktop.
Save theikkila/e7e55681fef2c28dae5c to your computer and use it in GitHub Desktop.
<h1 id="protokollakuvaus">Protokollakuvaus</h1>
<script src="http://cdn.rawgit.com/knsv/mermaid/master/dist/mermaid.full.min.js"></script>
<h2 id="yleisesti">Yleisesti</h2>
<p>Kaikki Nodet pitävät listaa muista nodeista</p>
<p>esim klusteri G = {A, B, C, D}
<div class="mermaid">
graph TD;
A---B;
B---C;
C---A;
D---A;
D---B;
D---C;
</div>
esim.
Nodella A on lista muista nodeista ({B, C, D}) jne.</p>
<p>Heartbeat suoritetaan muodostamalla virittävä puu verkon välille, siten että viimeinen node on yhteydessä ensimmäiseen:</p>
<div class="mermaid">
graph TD;
A-->B;
B-->C;
C-->D;
D-->A;
</div>
<p>jos joku ei saa yhteyttä omaan pariinsa, oletetaan että pari on kuollut tai omat yhteydet ovat katkenneet. Yritetään ottaa yhteyttä kaikkiin muihin nodeihin, mutta jos ei onnistu asetetaan tilaksi kuollut, muuten luodaan uusi virittävä puu:
<div class="mermaid">
graph TD;
A--&gt;B;
B---|Ei heartbeattia|C;
C--&gt;|Ei heartbeattia koska C on kuollut|D;
D--&gt;A;
</div></p>
<p>Koska C-kuoli, node B on ainut joka ryhtyy toimenpiteisiin ja yrittää ottaa yhteyttä A:han ja C:hen.</p>
<p>Koska yhteys saatiin saadaan verkon kooksi enemmistö ja se on siten päätösvaltainen, verkko muodostaa virittävän puun heartbeat-verkoksi ja jatkaa toimintaansa normaalisti.</p>
<h2 id="uuden-noden-lisaaminen">Uuden noden lisääminen</h2>
<p>Uuden Noden lisääminen tapahtuu niin että uudelle nodelle (D) annetaan jokin verkon kone (A tai B) johon D ottaa yhteyttä ja autentikoituu SSL-sertifikaatilla.</p>
<p>Uusi node saa tältä nodelta muiden noodien tiedot</p>
<h3 id="esimerkki">Esimerkki</h3>
<p>Edellisestä selviytynyt verkko {A, B, D}
<div class="mermaid">
graph TD;
A---B;
B---D;
D---A;
C[kuollut C];
</div></p>
<p>Uusi node E ottaa yhteyttä nodeen B ja saa autentikoinnin seurauksena listan muista nodeista.</p>
<div class="mermaid">
graph TD;
C[kuollut C];
A---B;
B---D;
D---A;
E-->B;
</div>
<p>Uusi node suorittaa tutustumiskierroksen ja esittäytyy kaikille verkon nodeille</p>
<div class="mermaid">
graph TD;
C[kuollut C];
A---B;
B---D;
D---A;
E-->B;
E-->A;
E-->D;
</div>
<p>Verkko on nyt seuraavanlainen</p>
<div class="mermaid">
graph TD;
C[kuollut C];
A---B;
B---D;
D---A;
E---B;
E---A;
E---D;
</div>
<p>jälleen muodostetaan virittävä puu ja ratkaistaan siten heartbeat-järjestys.</p>
<div class="mermaid">
graph TD;
C[kuollut C];
A-->B;
B-->D;
D-->E;
E-->A;
</div>
<p>Virittävän puun rakentamisen aloittaa aina leader joka valitaan vaaleilla. Yksimieliseen tilanteeseen päästään ainoastaan kolmen noden avulla.</p>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment