เช•เซเชฒเซ‹เช‡เชธเซเชŸเชฐ โ†’ เชธเชฐเชณ OTP เช•เซเชฒเชธเซเชŸเชฐ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ

เชฒเช—เชญเช— เชฆเชฐเซ‡เช• เชธเชซเชณ เชฌเชฟเชเชจเซ‡เชธ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชชเช›เซ€เชจเชพ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เช†เชกเซ€ เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช†เชตเชถเซเชฏเช• เช›เซ‡. เช˜เชฃเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชคเชฎเซ‡ เชซเช•เซเชค เชเช• เชจเชตเซ‹ เชฆเชพเช–เชฒเซ‹ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชฒเซ‹เชก เชเชตเชฐเซ‡เชœ เช˜เชŸเชพเชกเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชฐเช‚เชคเซ เชเชตเชพ เช“เช›เชพ เชฎเชพเชฎเซ‚เชฒเซ€ เช•เชฟเชธเซเชธเชพเช“ เชชเชฃ เช›เซ‡ เชœเซเชฏเชพเช‚ เช†เชชเชฃเซ‡ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชตเชฟเชตเชฟเชง เช—เชพเช‚เช เซ‹ เชเช•เชฌเซ€เชœเชพ เชตเชฟเชถเซ‡ เชœเชพเชฃเซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเชฐเซเช•เชฒเซ‹เชกเชจเซ‡ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชตเชฟเชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เช•เซเชฒเซ‹เช‡เชธเซเชŸเชฐ โ†’ เชธเชฐเชณ OTP เช•เซเชฒเชธเซเชŸเชฐ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ

เชคเซ‡ เช–เซ‚เชฌ เชจเชธเซ€เชฌเชฆเชพเชฐ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช…เชฐเซเชฒเช‚เช—, เชœเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเชพ เชธเซเช–เชฆ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช†เชธเชชเชพเชธเชจเชพ เชนเชพเช‡เชช เชฎเชพเชŸเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡ เชชเซเชฐเชฅเชฎ-เชตเชฐเซเช— เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชตเชฟเชคเชฐเชฟเชค เชธเชฟเชธเซเชŸเชฎเซ‹ เชฎเชพเชŸเซ‡ เช†เชงเชพเชฐ. เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚, เช† เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชคเซเชšเซเช› เชฒเชพเช—เซ‡ เช›เซ‡:

เชตเชฟเชตเชฟเชง เชจเซ‹เชกเซเชธ เชชเชฐเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชคเซ‡เชฎเชœ เชฒเชฟเช‚เช•เซเชธ เช…เชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เชตเชšเซเชšเซ‡ เชชเชธเชพเชฐ เชฅเชคเซ‹ เชธเช‚เชฆเซ‡เชถ เชชเชพเชฐเชฆเชฐเซเชถเช• เช›เซ‡ [โ€ฆ]

เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚, เชฌเชงเซเช‚ เชฅเซ‹เชกเซเช‚ เชตเชงเซ เชœเชŸเชฟเชฒ เช›เซ‡. เชตเชฟเชคเชฐเชฃ เช•เชฐเซเชฏเซเช‚ เช…เชฐเซเชฒเช‚เช— เชœเซเชฏเชพเชฐเซ‡ "เช•เชจเซเชŸเซ‡เชจเชฐ" เชจเซ‹ เช…เชฐเซเชฅ เชถเชฟเชชเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชฒเซ‹เช–เช‚เชกเชจเซ€ เชฎเซ‹เชŸเซ€ เชฌเซ‹เช•เซเชธ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เช…เชจเซ‡ "เชกเซ‹เช•เชฐ" เช เชฒเซ‹เช‚เช—เชถเซ‹เชฐเชฎเซ‡เชจเชจเซ‹ เชชเชฐเซเชฏเชพเชฏ เชนเชคเซ‹. IN IP4 เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เช…เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชธเชฐเชจเชพเชฎเชพเช‚เช“ เชนเชคเชพ, เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚ เชตเชฟเชฐเชพเชฎ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช‰เช‚เชฆเชฐเซ‹ เชฆเซเชตเชพเชฐเชพ เช•เซ‡เชฌเชฒ เชฆเซเชตเชพเชฐเชพ เชšเชพเชตเชตเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เชธเชฟเชธเซเชŸเชฎเชจเซ‹ เชธเชฐเซ‡เชฐเชพเชถ เช…เชชเชŸเชพเช‡เชฎ เชฆเชพเชฏเช•เชพเช“เชฎเชพเช‚ เชฎเชพเชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชฌเชงเชพ เช…เชฆเซเชญเซเชค เชฐเซ€เชคเซ‡ เช†เชคเซเชฎเชจเชฟเชฐเซเชญเชฐ, เชชเซ‡เช•เซ‡เชœเซเชก เช…เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เช…เชฐเซเชฒเช‚เช— เชเชตเชพ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชœเซเชฏเชพเช‚ เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เช†เชˆเชชเซ€ เชเชกเซเชฐเซ‡เชธ เชฎเชนเชพเชจ เชฐเซ‡เชจเซเชกเชฎเชจเซ‡เชธเชจเชพ เชธเชฟเชฆเซเชงเชพเช‚เชค เชชเชฐ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐเชจเซ€ เชกเชพเชฌเซ€ เชนเซ€เชฒเชจเซ€ เชงเซ‚เชจ เชชเชฐ เช—เชพเช‚เช เซ‹ เชฆเซ‡เช–เชพเชˆ เช…เชจเซ‡ เช…เชฆเซƒเชถเซเชฏ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชตเชฟเชคเชฐเชฟเชค เชšเชพเชฒเชคเชพ เชฆเชฐเซ‡เช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชฌเซ‹เชˆเชฒเชฐเชชเซเชฒเซ‡เชŸ เช•เซ‹เชกเชจเชพ เชฅเชพเช‚เชญเชฒเชพเช“เชจเซ‡ เชŸเชพเชณเชตเชพ เช…เชฐเซเชฒเช‚เช—, เชชเซเชฐเชคเชฟเช•เซ‚เชณ เชตเชพเชคเชพเชตเชฐเชฃเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเชฆเชฆเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชจเซ‹เช‚เชงเชฃเซ€: เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเซเชฏเชพเช‚ เช›เซ‡ libcluster. เชคเซ‡ เช–เชฐเซ‡เช–เชฐ เชธเชฐเชธ เช›เซ‡, เชคเซ‡เชฎเชพเช‚ เชเช• เชนเชœเชพเชฐเชฅเซ€ เชตเชงเซ เชคเชพเชฐเชพ เช›เซ‡, เชฒเซ‡เช–เช• เชธเชฎเซเชฆเชพเชฏเชฎเชพเช‚ เชชเซเชฐเช–เซเชฏเชพเชค เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชฌเชงเซเช‚. เชœเซ‹ เช•เซเชฒเชธเซเชŸเชฐ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เช† เชชเซ‡เช•เซ‡เชœ เชฆเซเชตเชพเชฐเชพ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชชเชฆเซเชงเชคเชฟเช“ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซ€ เช›เซ‡, เชคเซ‹ เชนเซเช‚ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช–เซเชถ เช›เซเช‚. เช•เชฎเชจเชธเซ€เชฌเซ‡, เชฎเชพเชฐเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚ เชœเซ‹เชˆเช เช›เซ‡. เชนเซเช‚ เชธเซ‡เชŸเช…เชชเชจเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชชเซเชจเชƒเชฐเชšเชจเชพ เชฅเชฟเชฏเซ‡เชŸเชฐเชฎเชพเช‚ เชฌเชนเชพเชฐเชจเชพ เชฆเชฐเซเชถเช• เชฌเชจเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚.

เชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹

เชฎเชจเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฐเซ‚เชชเซ‡ เชเช• เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เชนเชคเซ€ เชœเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เชธเช‚เชญเชพเชณเชถเซ‡ เช…เชจเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชฎเชฟเชฒเช•เชคเซ‹ เชนเชถเซ‡:

  • เชจเซ‹เชกเซเชธเชจเซ€ เชนเชพเชฐเซเชก-เช•เซ‹เชกเซ‡เชก เชธเซ‚เชšเชฟ เช…เชจเซ‡ เชธเซ‡เชตเชพเช“ เชฆเซเชตเชพเชฐเชพ เช—เชคเชฟเชถเซ€เชฒ เชถเซ‹เชง เชฌเช‚เชจเซ‡ เชธเชพเชฅเซ‡ เชชเชพเชฐเชฆเชฐเซเชถเช• เช•เชพเชฐเซเชฏ เช…เชฐเซเชฒเช‚เช—;
  • เชฆเชฐเซ‡เช• เชŸเซ‹เชชเซ‹เชฒเซ‹เชœเซ€ เชซเซ‡เชฐเชซเชพเชฐ เชฎเชพเชŸเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เช•เซ‹เชฒเชฌเซ‡เช• (เชจเซ‹เชก เชคเซเชฏเชพเช‚, เชจเซ‹เชก เช…เชนเซ€เช‚, เชจเซ‡เชŸเชตเชฐเซเช• เช…เชธเซเชฅเชฟเชฐเชคเชพ, เชตเชฟเชญเชพเชœเชจ);
  • เชฒเชพเช‚เชฌเชพ เช…เชจเซ‡ เชŸเซ‚เช‚เช•เชพ เชจเชพเชฎเซ‹ เชธเชพเชฅเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชพเชฐเชฆเชฐเซเชถเช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธ, เชœเซ‡เชฎ เช•เซ‡ :nonode@nohost;
  • เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เช•เซ‹เชก เชฒเช–เซเชฏเชพ เชตเชฟเชจเชพ, เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชกเซ‹เช•เชฐ เชธเชชเซ‹เชฐเซเชŸ.

เชฌเชพเชฆเชฎเชพเช‚เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชฎเซ‡เช‚ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเชพ เชชเช›เซ€ :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, เชœเซ‡ เชตเชงเซ เชธเชพเชฎเชพเชจเซเชฏ เชนเซ‡เชคเซ เช›เซ‡, เช…เชฅเชตเชพ เชคเซ‹ เชจเซ€เชšเชพ-เชธเซเชคเชฐเชจเชพ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เชœเชพเชคเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ‹. เช† เช•เซ‹เชก เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‹ เชงเซเชฏเซ‡เชฏ เชฆเชฐเซ‡เช• เชธเช‚เชญเชตเชฟเชค เชฆเซƒเชถเซเชฏเชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡เชตเชพเชจเซ‹ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชชเซ€เชกเชพ เช…เชจเซ‡ เชฌเซ‹เชœเชพเชฐเซ‚เชช เช•เซ‰เชชเชฟ-เชชเซ‡เชธเซเชŸ เชตเชฟเชจเชพ เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชฆเซƒเชถเซเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃ: เชฎเซ‚เชณเชฎเชพเช‚ เช† เชฌเชฟเช‚เชฆเซเช "เชนเซ‡เชชเซเชชเซ€ เช•เซเชฒเชธเซเชŸเชฐเชฟเช‚เช—!" เชตเชพเช•เซเชฏ เชนเชคเซเช‚, เช…เชจเซ‡ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ, เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชนเซเช‚ เช…เชจเซเชตเชพเชฆ เช•เชฐเซเช‚ เช›เซเช‚ (เชฎเชพเชฐเซ‡ เชฎเชพเชฐเซ€ เชœเชพเชคเซ‡ เชถเชฌเซเชฆเช•เซ‹เชถเซ‹เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชตเซเช‚ เชชเชกเชคเซเช‚ เชจเชฅเซ€), เชฎเชจเซ‡ "เชนเซ‡เชชเซเชชเซ€ เช•เซเชฒเชธเซเชŸเชฐเชฟเช‚เช—!" เชตเชฟเช•เชฒเซเชช เช“เชซเชฐ เช•เชฐเซเชฏเซ‹. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชญเซŒเช—เซ‹เชฒเชฟเช• เชฐเชพเชœเช•เซ€เชฏ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเชพ เชชเซเชฐเช•เชพเชถเชฎเชพเช‚ เชตเชงเซ เชธเชพเชฐเชพ เช…เชจเซเชตเชพเชฆเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเชตเซ€ เช•เชฆเชพเชš เช…เชถเช•เซเชฏ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹