Cloister β†’ просто ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° OTP ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€

ΠŸΠΎΡ‡Ρ‚ΠΈ всяко ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ бизнСс ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ късно Π½Π°Π²Π»ΠΈΠ·Π° във Ρ„Π°Π·Π°, Π² която Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅. Π’ ΠΌΠ½ΠΎΠ³ΠΎ случаи ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° стартиратС Π½ΠΎΠ² СкзСмпляр ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ срСдното Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅. Но ΠΈΠΌΠ° ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΈ случаи, Π² ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ възли знаят Π΅Π΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ ΠΈ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ разпрСдСлят Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ.

Cloister β†’ просто ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° OTP ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€

Оказа сС Ρ‚Π°ΠΊΡŠΠ² ΠΊΡŠΡΠΌΠ΅Ρ‚, Ρ‡Π΅ Π΅Ρ€Π»Π°Π½Π³, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π±Ρ€Π°Ρ…ΠΌΠ΅ Π·Π°Ρ€Π°Π΄ΠΈ приятния ΠΌΡƒ синтаксис ΠΈ ΡˆΡƒΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ Π½Π΅Π³ΠΎ, ΠΈΠΌΠ° ΠΏΡŠΡ€Π²ΠΎΠΊΠ»Π°ΡΠ΅Π½ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ систСми. На тСория Ρ‚ΠΎΠ²Π° Π·Π²ΡƒΡ‡ΠΈ напълно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΎ:

ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ процСси Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ възли, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈ, Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ […]

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° всичко Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-слоТно. Π Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π΅Ρ€Π»Π°Π½Π³ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½, ΠΊΠΎΠ³Π°Ρ‚ΠΎ β€žΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€β€œ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° голяма ТСлязна кутия Π·Π° ΠΊΠΎΡ€Π°Π±ΠΎΠΏΠ»Π°Π²Π°Π½Π΅, Π° β€žΠ΄ΠΎΠΊΠ΅Ρ€β€œ Π΅ просто синоним Π½Π° ΠΊΡ€Π°ΠΉΠ±Ρ€Π΅ΠΆΠ½ΠΈΠΊ. IN IP4 имашС ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π·Π°Π΅Ρ‚ΠΈ адрСси, ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡΡ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ бяха ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ ΠΏΠ»ΡŠΡ…ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΡŠΠ²Ρ‡Π΅Ρ…Π° ΠΊΠ°Π±Π΅Π»Π°, Π° срСдното Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° производствСната систСма сС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°ΡˆΠ΅ Π² дСсСтилСтия.

Π‘Π΅Π³Π° всички Π½ΠΈΠ΅ смС нСвСроятно ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π΅Ρ€Π»Π°Π½Π³ Π² срСда, Π² която Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈΡ‚Π΅ IP адрСси сС Ρ€Π°Π·Π΄Π°Π²Π°Ρ‚ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° голяма произволност ΠΈ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС появяват ΠΈ ΠΈΠ·Ρ‡Π΅Π·Π²Π°Ρ‚ ΠΏΠΎ прищявка Π½Π° лявата ΠΏΠ΅Ρ‚Π° Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ°. Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΊΡƒΠΏΠΈΡ‰Π° шаблонСн ΠΊΠΎΠ΄ във всСки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π΅Ρ€Π»Π°Π½Π³, Π·Π° Π±ΠΎΡ€Π±Π° с Π²Ρ€Π°ΠΆΠ΄Π΅Π±Π½Π°Ρ‚Π° срСда Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΏΠΎΠΌΠΎΡ‰.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Наясно съм, Ρ‡Π΅ ΠΈΠΌΠ° libcluster. Наистина Π΅ страхотно, ΠΈΠΌΠ° Π½Π°Π΄ хиляда Π·Π²Π΅Π·Π΄ΠΈ, Π°Π²Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ извСстСн Π² общността ΠΈ всичко Ρ‚ΠΎΠ²Π°. Ако ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π½ΠΈΡ‚Π΅ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° създаванС ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ са Π²ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Ρ€Π°Π΄Π²Π°ΠΌ сС Π·Π° вас. Π—Π° съТалСниС ΠΈΠΌΠ°ΠΌ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅. Искам Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΠΌ настройката Π² Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ ΠΈ Π΄Π° Π½Π΅ бъда външСн Π·Ρ€ΠΈΡ‚Π΅Π» Π² Ρ‚Π΅Π°Ρ‚ΡŠΡ€Π° Π½Π° рСорганизацията Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

Изисквания

Π’ΠΎΠ²Π°, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ Π°Π· Π»ΠΈΡ‡Π½ΠΎ ΠΈΠΌΠ°Ρ… Π½ΡƒΠΆΠ΄Π°, бСшС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, която Π΄Π° ΠΏΠΎΠ΅ΠΌΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ Π΄Π° ΠΈΠΌΠ° слСднитС свойства:

  • ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠ°ΠΊΡ‚ΠΎ с Ρ‚Π²ΡŠΡ€Π΄ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ списък ΠΎΡ‚ възли, Ρ‚Π°ΠΊΠ° ΠΈ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Ρ‡Ρ€Π΅Π· услуги Π΅Ρ€Π»Π°Π½Π³;
  • напълно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π·Π° всяка промяна Π½Π° топологията (възСл Ρ‚Π°ΠΌ, възСл Ρ‚ΡƒΠΊ, нСстабилност Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, раздСлянС);
  • ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π΅Π½ интСрфСйс Π·Π° стартиранС Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ с дълги ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΈ ΠΈΠΌΠ΅Π½Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ :nonode@nohost;
  • Docker ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΎΡ‚ кутията, Π±Π΅Π· Π΄Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ инфраструктурСн ΠΊΠΎΠ΄.

ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ слСд ΠΊΠ°Ρ‚ΠΎ тСствах ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π² :nonode@nohost, ΠΈΠ»ΠΈ Π² изкуствСно Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° срСда, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰Π° test_cluster_task, просто искам Π΄Π° бягам docker-compose up --scale my_app=3 ΠΈ Π²ΠΈΠΆΡ‚Π΅ ΠΊΠ°ΠΊ изпълнява Ρ‚Ρ€ΠΈ СкзСмпляра Π² Π΄ΠΎΠΊΠ΅Ρ€ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°. Искам ΠΈ зависими прилоТСния ΠΊΠ°Ρ‚ΠΎ mnesia - ΠΊΠΎΠ³Π°Ρ‚ΠΎ топологията сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π·Π°Π΄ кулиситС Ρ‚Π΅ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Ρ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° ΠΆΠΈΠ²ΠΎ Π±Π΅Π· Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΡƒΠ΄Π°Ρ€ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

манастир Π½Π΅ Π΅ Π±ΠΈΠ»Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Π΄Π° бъдС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, способна Π½Π° всичко - ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π΄ΠΎ приготвянС Π½Π° ΠΊΠ°Ρ„Π΅. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΡΡ€Π΅Π±ΡŠΡ€Π΅Π½ ΠΊΡƒΡ€ΡˆΡƒΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° Π·Π° Ρ†Π΅Π» Π΄Π° ΠΏΠΎΠΊΡ€ΠΈΠ΅ всички възмоТни случаи ΠΈΠ»ΠΈ Π΄Π° бъдС Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ‡Π½ΠΎ пълно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² смисъла, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΡ‚ CS поставСни Π² Ρ‚ΠΎΠ·ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½. Π’Π°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° Π΄Π° слуТи Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ясна Ρ†Π΅Π», Π½ΠΎ Π²ΡŠΡ€ΡˆΠΈ своята Π½Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ голяма Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠ΅Ρ€Ρ„Π΅ΠΊΡ‚Π½ΠΎ. Π’Π°Π·ΠΈ Ρ†Π΅Π» Ρ‰Π΅ бъдС Π΄Π° сС осигури пълна прозрачност ΠΌΠ΅ΠΆΠ΄Ρƒ мСстната срСда Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΈ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Сластична срСда, пълна с Π²Ρ€Π°ΠΆΠ΄Π΅Π±Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

Π˜Π·Π±Ρ€Π°Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

манастир Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° сС изпълнява ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π½Π°ΠΏΡ€Π΅Π΄Π½Π°Π»ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° работят с асСмблиранСто ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Ρ€ΡŠΡ‡Π½ΠΎ Ρ‡Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ стартиранС Cloister.Manager Π² Π΄ΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π° Π½Π°Π΄Π·ΠΎΡ€Π½ΠΈΠΊΠ° Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠšΠΎΠ³Π°Ρ‚ΠΎ сС изпълнява ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° config, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‡Π΅Ρ‚Π΅ слСднитС основни стойности:

config :cloister,
  otp_app: :my_app,
  sentry: :"cloister.local", # or ~w|n1@foo n2@bar|a
  consensus: 3,              # number of nodes to consider
                             #    the cluster is up
  listener: MyApp.Listener   # listener to be called when
                             #    the ring has changed

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‚ Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ слСдното: манастир ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° OTP ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ :my_app, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° услуга erlang Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° възли, Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ Ρ‚Ρ€ΠΈ, ΠΈ MyApp.Listener ΠΌΠΎΠ΄ΡƒΠ» (внСдряванС @behaviour Cloister.Listener) Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° извСстия Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² топологията. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаниС Π½Π° ΠΏΡŠΠ»Π½Π°Ρ‚Π° конфигурация ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² докумСнтация.

Π‘ Ρ‚Π°Π·ΠΈ конфигурация ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ манастир Ρ‰Π΅ стартиранС Π½Π° Π΅Ρ‚Π°ΠΏΠΈ, забавянС Π½Π° процСса Π½Π° стартиранС Π½Π° основното ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ постиганС Π½Π° консСнсус (Ρ‚Ρ€ΠΈ възСла са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅.) Π’ΠΎΠ²Π° Π΄Π°Π²Π° Π½Π° основното ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ стартира, ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Π²Π΅Ρ‡Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½. ВсСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ топологията сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ (Ρ‰Π΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ тях, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π½Π΅ стартират напълно синхронно), ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ бъдС ΠΈΠ·Π²ΠΈΠΊΠ°Π½ MyApp.Listener.on_state_change/2. ΠŸΡ€Π΅Π· ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ дСйствиС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ %Cloister.Monitor{status: :up}, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°: β€žΠ—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅, ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Π΅ сглобСн.β€œ

Π’ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи инсталация consensus: 3 Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΄ΠΎΡ€ΠΈ Π΄Π° ΠΎΡ‡Π°ΠΊΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ възли Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ°Ρ‚, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ status: :rehashing β†’ status: :up Π½Π° всСки Π½ΠΎΠ²ΠΎΠ΄ΠΎΠ±Π°Π²Π΅Π½ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ възСл.

ΠšΠΎΠ³Π°Ρ‚ΠΎ стартиратС Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, просто трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ consensus: 1 ΠΈ манастир с радост Ρ‰Π΅ пропуснС Ρ‡Π°ΠΊΠ°Π½Π΅Ρ‚ΠΎ Π·Π° сглобяванС Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈ :nonode@nohostИли :node@hostИли :[email protected] - Π² зависимост ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π²ΡŠΠ·Π΅Π»ΡŠΡ‚ (:none | :shortnames | :longnames).

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ прилоТСния

Π Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ‚Π΅ прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са във Π²Π°ΠΊΡƒΡƒΠΌ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ зависимости, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ mnesia. Π—Π° нас Π΅ лСсно Π΄Π° сС справим с тяхното ΠΏΡ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ on_state_change/2. Π•Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаниС ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ mnesia Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ докумСнтация манастир.

ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ прСдимство Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ манастир Π΅, Ρ‡Π΅ изпълнява всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° слСд промяна Π½Π° топологията ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΠΊΠ°. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ просто Ρ€Π°Π±ΠΎΡ‚ΠΈ във Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° срСда, ΠΊΠ°Ρ‚ΠΎ всички възли са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ, нСзависимо Π΄Π°Π»ΠΈ Π·Π½Π°Π΅ΠΌ IP адрСситС ΠΈ слСдоватСлно ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΈΠ»ΠΈ Ρ‚Π΅ са Π±ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ присвоСни/ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ. Π’ΠΎΠ²Π° Π½Π΅ изисква Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ спСциални настройки Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ€ΠΈ ΠΈ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° прилоТСния няма Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° срСда ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π² Π»ΠΎΠΊΠ°Π»Π½Π°. :nonode@nohost. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Π² докумСнтация.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ слоТното ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² топологията Π΅ възмоТно Ρ‡Ρ€Π΅Π· пСрсонализирано внСдряванС MyApp.Listener, Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΊΡ€Π°ΠΉΠ½ΠΈ случаи, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Π΅Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈ ограничСния ΠΈ отклонСния Π² конфигурацията сС ΠΎΠΊΠ°Π·Π²Π°Ρ‚ ΠΊΡ€Π°ΠΉΡŠΠ³ΡŠΠ»Π½ΠΈΡ‚Π΅ камъни Π½Π° внСдряванСто. Всичко Π΅ Π½Π°Ρ€Π΅Π΄, просто Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π³ΠΎΡ€Π½ΠΎΡ‚ΠΎ libcluster, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ с ΠΏΠΎ-ΠΎΠ±Ρ‰ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° управляватС сами ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ. Π¦Π΅Π»Ρ‚Π° Π½Π° Ρ‚Π°Π·ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ Π΅ Π΄Π° ΠΏΠΎΠΊΡ€ΠΈΠ΅ всСки възмоТСн сцСнарий, Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π°ΠΉ-чСсто срСщания сцСнарий Π±Π΅Π· Π½Π΅Π½ΡƒΠΆΠ½Π° Π±ΠΎΠ»ΠΊΠ° ΠΈ Ρ‚Ρ€ΠΎΠΌΠ°Π²ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ ΠΈ поставянС.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° имашС Ρ„Ρ€Π°Π·Π°Ρ‚Π° "Happy clustering!", Π° Yandex, с ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π°ΠΌ (Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° ΠΌΠΈΠ½Π°Π²Π°ΠΌ ΠΏΡ€Π΅Π· Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ), ΠΌΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ опцията "Happy clustering!" МоТС Π±ΠΈ Π΅ нСвъзмоТно Π΄Π° си прСдставим ΠΏΠΎ-Π΄ΠΎΠ±ΡŠΡ€ ΠΏΡ€Π΅Π²ΠΎΠ΄, особСно Π² свСтлината Π½Π° настоящата гСополитичСска ситуация.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€