เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเบซเบฒเบšเบฑเบ™เบซเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบ‚เบญเบ‡ PostgreSQL, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเบถเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ•เปเปˆเบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ—เบตเปˆเบชเบธเบ”.

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เบชเบนเบ‡โ€‹: 2,5 เบฅเป‰เบฒเบ™โ€‹เบœเบนเป‰โ€‹เบŠเบปเบกโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เบ—เบปเปˆเบงโ€‹เป‚เบฅเบโ€‹, 50K+ เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบเบฒเบ™โ€‹เป€เบ„เบทเปˆเบญเบ™โ€‹เป„เบซเบงโ€‹เปƒเบ™โ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบกเบทเป‰โ€‹. เป€เบŠเบตเบšเป€เบงเบตเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ Amazone เปƒเบ™เป€เบ‚เบ”เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ›เบฐเป€เบ—เบ”เป„เบญเปเบฅเบ™: 100+ เป€เบŠเบตเบšเป€เบงเบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เป€เบเบทเบญเบš 50 เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

backend เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Java เบ—เบตเปˆเบกเบตเบฅเบฑเบ” monolithic เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบฎเบฑเบเบชเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ websocket เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ. เป€เบกเบทเปˆเบญเบœเบนเป‰เปƒเบŠเป‰เบซเบผเบฒเบเบ„เบปเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบžเป‰เบญเบกเป†เบเบฑเบ™เบขเบนเปˆเปƒเบ™เบเบฐเบ”เบฒเบ™เบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบ—เบถเบเบ—เบธเบเป†เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ›เบฐเบกเบฒเบ™ 10K เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเบ•เปเปˆเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เบชเบธเบ”เปƒเบ™ Redis เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป 80-100K เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต.
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบ›เปˆเบฝเบ™เบˆเบฒเบ Redis เป„เบ› PostgreSQL

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Redis, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ RAM เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.

เบ‚เปเป‰เบ”เบตเบ‚เบญเบ‡ Redis:

  1. เบ„เบงเบฒเบกเป„เบงเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบชเบนเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒ เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ;
  2. เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบˆเปเบฒโ€‹เบฅเบญเบ‡โ€‹.

เบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡ Redis เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ:

  1. เบšเปเปˆเบกเบตเบ—เบธเบฅเบฐเบเปเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบฎเบฝเบ™เปเบšเบšเบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบœเบปเบ™เบ”เบตเบชเบฐเป€เบซเบกเบตเปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ.
  2. เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เป‚เบ”เบเบˆเปเบฒเบ™เบงเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. เป€เบกเบทเปˆเบญเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบˆเบฐเป€เบ•เบตเบšเป‚เบ•, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบฅเบทเบญเบ, เป€เบŠเบดเปˆเบ‡เปƒเบ™ AWS เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบ›เบฐเป€เบžเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡.
  3. เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเบฅเบฐเบ”เบฑเบš latency เบ•เปˆเปเบฒเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒ เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบซเบผเบฒเบ. เบฅเบฐเบ”เบฑเบš latency เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™ 17-20 ms. เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡ 30-40 ms, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบงเบ•เปเปˆเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบŠเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เป€เบ”เบทเบญเบ™เบเบฑเบ™เบเบฒ 2018, เป€เบกเบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบต Redis เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ latency เบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒเบ›เบปเบเบเบฐเบ•เบด 2 เป€เบ—เบปเปˆเบฒ. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบ™เบเบฒเบ‡เบงเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเปเบฅเบฐเบ›เปˆเบฝเบ™เปเบ—เบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ Redis เบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒ.
  4. เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบ‚เปเป‰เบกเบนเบ™เบ™เบฑเป‰เบ™.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ‚เปเป‰เป€เบชเบเปเบฅเบฐเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเป‰เบฒเบเป„เบ›เบชเบนเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฐเบ”เบงเบเบเบงเปˆเบฒ, เบ”เป‰เบงเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบšเบšเบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช latency เบซเบ™เป‰เบญเบเบฅเบปเบ‡. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบงเบดเป€เบ„เบฒเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบซเบผเบฒเบเบขเปˆเบฒเบ‡เปเบฅเบฐเป€เบฅเบทเบญเบ PostgreSQL.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเป‰เบฒเบเป„เบ›เบซเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบš 1,5 เบ›เบตเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบฅเบฐเป„เบ”เป‰เป‚เบญเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบ™เป‰เบญเบเป†เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบžเป‰เบญเบกเป†เบเบฑเบ™เบเบฑเบš Redis เปเบฅเบฐ PostgreSQL. เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ เบšเบปเบ”เบ„เบงเบฒเบกเป‚เบ”เบเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ.

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปเบกเปˆเบšเบปเบ” Redis เปเบฅเบฐ PostgreSQL. เบเบธเปˆเบก PostgreSQL เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเปเบกเปˆเบšเบปเบ”เปเบฅเบฐเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบšเบš asynchronous. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ:
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” PgBouncer

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒ: เบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš PostgreSQL เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบซเบกเบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. PostgreSQL เบชเป‰เบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบฅเบฐเบšเปเบฅเบดเป‚เบžเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ–เบดเบ‡เบˆเบธเบ”เปƒเบ”เบซเบ™เบถเปˆเบ‡, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบˆเบฐเบขเบทเบ™เบขเบนเปˆเบ—เบฒเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ: Pgpool เปเบฅเบฐ PgBouncer. เปเบ•เปˆเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบทเบญเบ PgBouncer.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบ™เบถเปˆเบ‡ PgBouncer, เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบกเบตเปเบกเปˆเบšเบปเบ” PostgreSQL, เปเบฅเบฐเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เปเบกเปˆเบšเบปเบ”เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบกเบตเบซเบ™เบถเปˆเบ‡ replica เบเบฑเบšเบเบฒเบ™ replication asynchronous.
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ PostgreSQL เปเบฅเบฐเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™เบ•เปเปˆเบžเบงเบเป€เบฎเบปเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบก sharding PostgreSQL เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰: เป€เบกเบทเปˆเบญเป€เบžเบตเปˆเบก PostgreSQL shard เปƒเบซเบกเปˆ, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PgBouncer เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš shard เปƒเบซเบกเปˆเป„เบ”เป‰เบ—เบฑเบ™เบ—เบต.

PgBouncer เบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบˆเบปเบ™โ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ PgBouncer เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เป€เบชเบโ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹. เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™ AWS, เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เบธเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบฎเบฒเบ”เปเบงเบ—เบตเปˆเบ•เบฒเบเป€เบ›เบฑเบ™เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ•เบปเบงเบขเปˆเบฒเบ‡เบžเบฝเบ‡เปเบ•เปˆเบเป‰เบฒเบเป„เบ›เบซเบฒเบฎเบฒเบ”เปเบงเปƒเบซเบกเปˆเปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบญเบฑเบ™เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบš PgBouncer, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰. เบœเบปเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบฑเบ”โ€‹เบ‚เป‰เบญเบ‡โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบŠเป‰โ€‹เป„เบ”เป‰โ€‹เป€เบ›เบฑเบ™โ€‹เป€เบงโ€‹เบฅเบฒ 25 เบ™เบฒโ€‹เบ—เบต. เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, AWS เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เปƒเบŠเป‰เบŠเป‰เปเบฒเบŠเป‰เบญเบ™เปƒเบ™เบ”เป‰เบฒเบ™เบœเบนเป‰เปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ„เบดเบ”เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ‚เบญเบ‡เบเบธเปˆเบก PgBouncer เปเบฅเบฐ PostgreSQL, เป€เบžเบฒเบฐเบงเปˆเบฒเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบ—เบธเบเป†เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™เบšเบฑเบ™เบŠเบต AWS เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ” PgBouncer เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ Network Load Balancer, เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบกเบตเบชเบญเบ‡ PgBouncers. เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบ‚เบญเบ‡ PgBouncers เป€เบšเบดเปˆเบ‡ PostgreSQL เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ shard. เบ–เป‰เบฒเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ AWS เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบŠเป‰เบณ, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเป‚เบญเบ™เบœเปˆเบฒเบ™ PgBouncer เบญเบทเปˆเบ™. เบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡ Network Load Balancer เปเบกเปˆเบ™เบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบ AWS.

เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ PgBouncer เปƒเปเปˆเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ.
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบก PostgreSQL Failover Cluster

เป€เบกเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™: เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, repmgr, AWS RDS, Patroni.

เบชเบฐเบ„เบฃเบดเบšเบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡

เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เปเบกเปˆเบšเบปเบ”เปเบฅเบฐ, เบ–เป‰เบฒเบกเบฑเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง, เบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบเบฑเบšเปเบกเปˆเบšเบปเบ”เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PgBouncer.

เบ‚เปเป‰เบ”เบตเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบชเบนเบ‡เบชเบธเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบชเบฐเบ„เบดเบšเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”.

Cons:

  • เปเบกเปˆเบšเบปเบ”เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ•เบฒเบ; เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง, เบšเปเปˆเบฎเบนเป‰เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบˆเบฐเบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบเบฑเบšเปเบกเปˆเบšเบปเบ”, เปเบฅเบฐเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบ™เบšเบปเบ”เบšเบฒเบ”เปเบกเปˆเบšเบปเบ”เปเบฅเบฐเบˆเบฐเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเปƒเบ”เบกเบตเบ‚เปเป‰เบกเบนเบ™เบซเบผเป‰เบฒเบชเบธเบ”เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™. เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰เบเบฑเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบชเบฐเบซเบกเบญเบ‡;
  • เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบ›เบฐเป„เบงเป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡. เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเบซเบ™เบถเปˆเบ‡ replica, เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ›เปˆเบฝเบ™ replica เป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡เป€เบชเบตเบกเป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบต replicas เบ•เปเปˆเป„เบ›เบญเบตเบเปเบฅเป‰เบง, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบก replica เปƒเบซเบกเปˆเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡;
  • เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบผเบงเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบกเบต 12 PostgreSQL shards, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒ 12 เบเบธเปˆเบก. เป€เบกเบทเปˆเบญเป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ shards, เบ—เปˆเบฒเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เบˆเบทเปˆเบˆเปเบฒเบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบผเบง.

เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบงเบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เป€เบšเบดเปˆเบ‡เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ. เบ”เป‰เบงเบเบเบธเปˆเบก PostgreSQL เบ”เบฝเบง, เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเบ‚เบฐเบซเบ™เบฒเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

Repmgr

Replication Manager เบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบก PostgreSQL, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบเบธเปˆเบก PostgreSQL. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบกเบฑเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™ "wrapper" เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบฒเบ”เบˆเบฐเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเบเบฑเบš script เบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบก Repmgr.

AWS RDS

เบกเบฑเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹, เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เปเบฅเบฐโ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบชเบฐโ€‹เบ™เบธเบโ€‹เป€เบเบตโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹. เบกเบฑเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”: เป€เบกเบทเปˆเบญเปเบกเปˆเบšเบปเบ”เป€เบชเบเบŠเบตเบงเบดเบ”, replica เบเบฒเบเป€เบ›เบฑเบ™เปเบกเปˆเบšเบปเบ”เปƒเบซเบกเปˆ, เปเบฅเบฐ AWS เบ›เปˆเบฝเบ™เบšเบฑเบ™เบ—เบถเบ DNS เบเบฑเบšเปเบกเปˆเบšเบปเบ”เปƒเบซเบกเปˆ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ replicas เบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ AZs เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบ‚เปเป‰เป€เบชเบเบฅเบงเบกเป€เบ–เบดเบ‡เบเบฒเบ™เบ‚เบฒเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบฑเบ™เบ”เบตเบ‡เบฒเบก. เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบฅเบฐเบญเบฝเบ”: เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ tcp, เป€เบŠเบดเปˆเบ‡, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™ RDS:

net.ipv4.tcp_keepalive_time=10
net.ipv4.tcp_keepalive_intvl=1
net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_retries2=3

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, AWS RDS เปเบกเปˆเบ™เป€เบเบทเบญเบšเบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบฅเบฒเบ„เบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ›เบปเบเบเบฐเบ•เบด, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™เบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ–เบดเป‰เบกเบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰.

Patroni

เบ™เบตเป‰เปเบกเปˆเบ™เปเบกเปˆเปเบšเบš python เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡ PostgreSQL เบ—เบตเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบ”เบต, เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบงเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เปƒเบ™ github.

เบ‚เปเป‰โ€‹เบ”เบตโ€‹เบ‚เบญเบ‡ Patroniโ€‹:

  • เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”;
  • เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบฅเบปเป‰เบกเป€เบซเบฅเบงเป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡;
  • เบ‚เบฝเบ™เปƒเบ™ python, เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡เบ‚เบฝเบ™เบซเบผเบฒเบเปƒเบ™ python, เบกเบฑเบ™เบˆเบฐเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบšเบฑเบ™เบซเบฒเปเบฅเบฐ, เบšเบฒเบ‡เบ—เบต, เปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบŠเปˆเบงเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™;
  • เบ„เบงเบšเบ„เบธเบก PostgreSQL เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เบ—เบธเบ nodes เบ‚เบญเบ‡ cluster เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เปเบฅเบฐเบ–เป‰เบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเบกเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ cluster, เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เป‚เบ”เบเปƒเบŠเป‰ Patroni.

Cons:

  • เบกเบฑเบ™เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบเบฑเบš PgBouncer. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเป‚เบ—เบซเบฒเบ™เบตเป‰เบฅเบปเบš, เป€เบžเบฒเบฐเบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡ Patroni เปเบกเปˆเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡ PostgreSQL, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš Patroni เป€เบฎเบฑเบ”เบงเบฝเบเปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเป‰เบง;
  • เบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Patroni เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบซเบผเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบˆเบฒเบ scratch.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบ Patroni เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบธเปˆเบกเบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบง.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Patroni

เบเปˆเบญเบ™ Patroni, เบžเบงเบเป€เบฎเบปเบฒเบกเบต 12 PostgreSQL shards เปƒเบ™เบซเบ™เบถเปˆเบ‡เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเบซเบ™เบถเปˆเบ‡ replica configuration เบเบฑเบš asynchronous replication. เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบœเปˆเบฒเบ™ Network Load Balancer, เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบกเบตเบชเบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบต PgBouncer, เปเบฅเบฐเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ PostgreSQL เบ—เบฑเบ‡เบซเบกเบปเบ”.
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ” Patroni, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบทเบญเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบธเปˆเบกเบ—เบตเปˆเปเบˆเบเบขเบฒเบ. Patroni เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเปเบˆเบเบขเบฒเบเป€เบŠเบฑเปˆเบ™: etcd, Zookeeper, Consul. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบธเปˆเบก Consul เป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบšเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบš Vault เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบกเบฑเบ™เบญเบตเบเบ•เปเปˆเป„เบ›. เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Consul เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบ•เบปเบ™.

Patroni เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”เบเบฑเบšเบเบปเบ‡เบชเบธเบ™

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบธเปˆเบก Consul, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฒเบก nodes, เปเบฅเบฐเบเบธเปˆเบก Patroni, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบœเบนเป‰เบ™เปเบฒเปเบฅเบฐ replica (เปƒเบ™ Patroni, เปเบกเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบœเบนเป‰เบ™เปเบฒเบเบธเปˆเบก, เปเบฅเบฐเบชเปเบฒเบฅเบญเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒ replicas). เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบเบธเปˆเบก Patroni เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบกเบเบปเบ‡เบชเบธเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบˆเบฒเบเบเบปเบ‡เบชเบธเบ™เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบเบธเปˆเบก Patroni เปเบฅเบฐเปƒเบœเป€เบ›เบฑเบ™เบœเบนเป‰เบ™เปเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Patroni เบเบฑเบš Consul, เบžเบฝเบ‡เปเบ•เปˆเบชเบถเบเบชเบฒเป€เบญเบเบฐเบชเบฒเบ™เบ—เบฒเบ‡เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบšเบญเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบˆเบปเป‰เบฒเบžเบฒเบšเปƒเบ™เบฎเบนเบšเปเบšเบš http เบซเบผเบท https, เบ‚เบถเป‰เบ™เบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Consul, เปเบฅเบฐเปเบœเบ™เบงเบฒเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบ—เบฒเบ‡เป€เบฅเบทเบญเบ:

host: the host:port for the Consul endpoint, in format: http(s)://host:port
scheme: (optional) http or https, defaults to http

เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆ pitfalls เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบเบฑเบš Consul เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบœเปˆเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบ›เบญเบ”เป„เบžเบœเปˆเบฒเบ™ https เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰:

consul:
  host: https://server.production.consul:8080 
  verify: true
  cacert: {{ consul_cacert }}
  cert: {{ consul_cert }}
  key: {{ consul_key }}

เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบฑเป‰เบ™. เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, Patroni เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš Consul เป„เบ”เป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเบœเปˆเบฒเบ™ http.

เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Patroni เบŠเปˆเบงเบเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ. เบกเบฑเบ™เบ”เบตเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ python. เบกเบฑเบ™เบ›เบฐเบเบปเบ”เบงเปˆเบฒเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป‚เบฎเบ”เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐเปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เปเบฅเบฐเป‚เบ›เป‚เบ•เบ„เบญเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เบฑเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Consul เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ:

consul:
  host: server.production.consul:8080
  scheme: https
  verify: true
  cacert: {{ consul_cacert }}
  cert: {{ consul_cert }}
  key: {{ consul_key }}

Consul-เปเบกเปˆเปเบšเบš

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบทเบญเบเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒ PgBouncer เบˆเบฐเบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบกเบฑเบ™เปเบ™เบงเปƒเบ”เป€เบกเบทเปˆเบญเบœเบนเป‰เบ™เปเบฒเบ›เปˆเบฝเบ™เบขเบนเปˆเปƒเบ™เบเบธเปˆเบก Patroni. เบšเปเปˆเบกเบตเบ„เปเบฒเบ•เบญเบšเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš PgBouncer เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

เปƒเบ™เบเบฒเบ™เบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบšเบปเบ”เบ„เบงเบฒเบก (เบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ‚เป‰เบญเบเบšเปเปˆเบˆเบทเปˆเบŠเบทเปˆ), เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เบงเปˆเบฒ Consul-templates เบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบชเบปเบกเบ—เบปเบš PgBouncer เปเบฅเบฐ Patroni. เบ™เบตเป‰เป„เบ”เป‰เบเบฐเบ•เบธเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบถเบเบชเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ Consul-template.

เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒ Consul-template เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบเบธเปˆเบก PostgreSQL เบขเบนเปˆเบเบปเบ‡เบชเบธเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เป€เบกเบทเปˆเบญเบœเบนเป‰เบ™เปเบฒเบ›เปˆเบฝเบ™เปเบ›เบ‡, เบกเบฑเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PgBouncer เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบžเบทเปˆเบญเป‚เบซเบฅเบ”เบกเบฑเบ™เปƒเบซเบกเปˆ.

เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เบ›เบฐเป‚เบซเบเบ”เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบกเบทเปˆเบญเป€เบžเบตเปˆเบก shard เปƒเบซเบกเปˆ, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเปƒเบซเบกเปˆเปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เปเบกเปˆเปเบšเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบซเบผเบฑเบเบเบฒเบ™เบฅเบฐเบซเบฑเบ”.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปƒเบซเบกเปˆเบเบฑเบš Patroni

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ balancer โ†’ เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบกเบฑเบ™เบกเบตเบชเบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ PgBouncer โ†’ เปƒเบ™เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡ Consul-template เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบŠเบดเปˆเบ‡เบเบงเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบเบธเปˆเบก Patroni เปเบฅเบฐเบ•เบดเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PgBouncer, เป€เบŠเบดเปˆเบ‡เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเบœเบนเป‰เบ™เปเบฒเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™. เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบเบธเปˆเบก.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ”เป‰เบงเบเบกเบท

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบผเบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบตเบ”เบเบฐเบ”เบฒเบ™, เบเป‰เบฒเบเบชเบฐเบ•เบดเบเป€เบเบตเปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™ "เบ‚เป‰เบฒ" เบœเบนเป‰เบ™เปเบฒเบ‚เบญเบ‡เบเบธเปˆเบก. เปƒเบ™ AWS, เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบกเปˆเบ™เบ›เบดเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบœเปˆเบฒเบ™ console.

เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เบชเบฐเบ•เบดเบเป€เบเบตเบเบฑเบšเบ„เบทเบ™เบกเบฒเบžเบฒเบเปƒเบ™ 10-20 เบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบตเปˆเบกเป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเบธเปˆเบก Patroni เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡: เบกเบฑเบ™เบ›เปˆเบฝเบ™เบœเบนเป‰เบ™เปเบฒ, เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เป„เบ›เบซเบฒ Consul, เปเบฅเบฐ Consul-templates เป„เบ”เป‰เป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบ—เบฑเบ™เบ—เบต, เบ›เปˆเบฝเบ™เปเบ—เบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PgBouncer เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบซเป‰เป‚เบซเบผเบ”เปƒเบซเบกเปˆ.

เบงเบดเบ—เบตเบเบฒเบ™เบขเบนเปˆเบฅเบญเบ”เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เปเบฅเบฐเบฎเบฑเบเบชเบฒเป€เบงเบฅเบฒเบขเบธเบ”เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”?

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™! เปเบ•เปˆเบ„เปเบฒเบ–เบฒเบกเปƒเบซเบกเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™: เบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เป„เบ”เป‰เปเบ™เบงเปƒเบ”? เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเป„เบงเปเบฅเบฐเบ›เบญเบ”เป„เบžเบกเป‰เบงเบ™เบญเบญเบเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”?

เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป‚เบซเบผเบ”เบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ—เปเบฒเบญเบดเบ”. เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบฅเบฐเป„เบ”เป‰เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบกเบฒเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบžเบฝเบ‡เปเบ•เปˆ "เบ‚เป‰เบฒ" เบซเบ™เบถเปˆเบ‡เปƒเบ™เปเบกเปˆเบšเบปเบ” PostgreSQL เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™. เปเบ•เปˆเบเปˆเบญเบ™เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบต PostgreSQL shards เบซเบผเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”เบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเปˆเบญเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบงเบฝเบเบ‡เบฒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เป€เบšเบดเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบ—เบฐเป€เบเบตเบ—เบฐเบเบฒเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบต PostgreSQL 9.6. เบšเบฒเบ‡เบ—เบตเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบญเบฑเบšเป€เบ”เบ”เป€เบ›เบฑเบ™ 11.2 เป„เบ”เป‰เบ—เบฑเบ™เบ—เบตเบšเป?

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปเบ™เบงโ€‹เบ™เบตเป‰โ€‹เปƒเบ™ 2 เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹: เบ„เบฑเป‰เบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบชเบฐโ€‹เบšเบฑเบš 11.2โ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เป€เบ›เบตเบ” Patroniโ€‹.

เบญเบฑเบšเป€เบ”เบ” PostgreSQL

เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบชเบฐเบšเบฑเบš PostgreSQL เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -k, เปƒเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบเปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เปเบœเปˆเบ™เปเบฅเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบฑเบ”เบฅเบญเบเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 300-400 GB, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒ 1 เบงเบดเบ™เบฒเบ—เบต.

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบผเบฒเบ shards, เบชเบฐเบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบฎเบฑเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ‚เบฝเบ™ Ansible playbook เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ:

/usr/lib/postgresql/11/bin/pg_upgrade 
<b>--link </b>
--old-datadir='' --new-datadir='' 
 --old-bindir=''  --new-bindir='' 
 --old-options=' -c config_file=' 
 --new-options=' -c config_file='

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบเบปเบเบฅเบฐเบ”เบฑเบš, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เบ”เป‰เบงเบเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต --เบเบงเบ”โ€‹เบชเบญเบšเป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบเบปเบเบฅเบฐเบ”เบฑเบšเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบชเบฐเบ„เบฃเบดเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ—เบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบญเบฑเบšเป€เบเบฃเบ”. script เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเป€เบฅเบฑเบ”เปƒเบ™ 30 เบงเบดเบ™เบฒเบ—เบต, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”.

เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบญเบ‡ Patroni

เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเบชเบญเบ‡, เบžเบฝเบ‡เปเบ•เปˆเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Patroni. เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบต initdb, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเป€เบกเบทเปˆเบญ Patroni เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบญเบปเบฒเบชเปˆเบงเบ™เบ™เบตเป‰เบญเบญเบเบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ.

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบดเบ”เบ•เบฑเป‰เบ‡ Patroni เปƒเบ™เบเบธเปˆเบก PostgreSQL เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเปเบฅเป‰เบงเปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบกเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบžเบปเบšเบšเบฑเบ™เบซเบฒเปƒเบซเบกเปˆ: เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบฑเบ‡เบชเบญเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเป€เบ›เบฑเบ™เบœเบนเป‰เบ™เปเบฒ. Patroni เบšเปเปˆเบฎเบนเป‰เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบธเปˆเบกเปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบ›เบฑเบ™เบชเบญเบ‡เบเบธเปˆเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบถเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ‚เปเป‰เบกเบนเบ™เบขเบนเปˆเปƒเบ™ slave:

rm -rf /var/lib/postgresql/

เบญเบฑเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบ•เปˆเบ‚เป‰เบฒเบ—เบฒเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™!

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ replica เบ—เบตเปˆเบชเบฐเบญเบฒเบ”, Patroni เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบนเป‰เบ™เปเบฒ basebackup เปเบฅเบฐเบŸเบทเป‰เบ™เบŸเบนเบกเบฑเบ™เบเบฑเบš replica, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ catches up เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ›เบฐเบˆเบธเบšเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰ wal logs.

เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบžเบปเบšเปเบกเปˆเบ™เบงเปˆเบฒเบเบธเปˆเบก PostgreSQL เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ•เบปเป‰เบ™เบ•เปเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เป€เบกเบทเปˆเบญเปเบ•เปˆเบฅเบฐเบเบธเปˆเบกเบšเปเปˆเบฎเบนเป‰เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฑเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ›เบปเบเบเบฐเบ•เบด. เปเบ•เปˆเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ Patroni, เบเบธเปˆเบกเบ—เบฑเบ‡เปเบปเบ”เบ•เป‰เบญเบ‡เบกเบตเบŠเบทเปˆเบชเบฐเป€เบžเบฒเบฐ. เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบŠเบทเปˆเบเบธเปˆเบกเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PostgreSQL.

เป‚เบซเบผเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบˆเปเบฒเบฅเบญเบ‡เบงเบดเบ—เบตเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบเบฐเบ”เบฒเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เป‚เบซเบผเบ”เป„เบ”เป‰เบšเบฑเบ™เบฅเบธเบชเบฐเป€เบฅเปˆเบเบ›เบฐเบˆเปเบฒเบงเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ”เบฝเบงเบเบฑเบ™เบ„เบทเบเบฑเบ™เบญเป‰เบญเบเบ•เป‰เบญเบ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบดเบ”เบซเบ™เบถเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบœเบนเป‰เบ™เปเบฒ PostgreSQL. เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบผเบงเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เป„เบงเป‰: Patroni เบ›เปˆเบฝเบ™เบœเบนเป‰เบ™เปเบฒ, Consul-template เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ PgBouncer เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบซเป‰เป‚เบซเบผเบ”เปƒเบซเบกเปˆ. เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบŸเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™ Grafana, เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบฅเปˆเบฒเบŠเป‰เบฒ 20-30 เบงเบดเบ™เบฒเบ—เบตเปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบด, เบ„เบธเบ™เบ„เปˆเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ›เบฑเบ™เบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเปเบ™เปˆเบ™เบญเบ™เบ”เบตเบเปˆเบงเบฒเป€เบงเบฅเบฒเบขเบธเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.

เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบญเบ‡ Patroni เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบกเบตเปเบœเบ™เบเบฒเบ™เบ”เบฑเปˆเบ‡เบ™เบตเป‰:

  • Deploy Consul-template เบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต PgBouncer เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบง;
  • PostgreSQL เบญเบฑเบšเป€เบ”เบ”เป€เบ›เบฑเบ™เป€เบงเบตเบŠเบฑเปˆเบ™ 11.2;
  • เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบŠเบทเปˆเบเบธเปˆเบก;
  • เป€เบ›เบตเบ”เบ•เบปเบงเบเบธเปˆเบก Patroni.

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบˆเบธเบ”เบ—เปเบฒเบญเบดเบ”เป€เบเบทเบญเบšเบ—เบธเบเป€เบงเบฅเบฒ; เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒ PgBouncer เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบญเบญเบเบˆเบฒเบเบงเบฝเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบง consul-templates. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰ Ansible, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบ›เบทเป‰เบกเบซเบผเบดเป‰เบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเป‰เบง, เปเบฅเบฐเป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ„เบดเบšเป€เบ•เบฑเบกเปเบกเปˆเบ™เบˆเบฒเบ 1,5 เบซเบฒ 2 เบ™เบฒเบ—เบตเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ shard. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบกเป‰เบงเบ™เบญเบญเบเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเปเบ•เปˆเบฅเบฐ shard เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบขเบธเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบ›เบดเบ” PostgreSQL เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบซเบผเบฒเบเบ™เบฒเบ—เบต. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰, เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™ shard เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ™เบตเป‰, เปเบฅเบฐโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบเบญเบกโ€‹เบฎเบฑเบšโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒ.

เบงเบดเบ—เบตเบเบฒเบ™เบญเบญเบเบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบงเบฒเบ‡เปเบœเบ™เบเบฒเบ™เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒ, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบ—เบธเบเป† 3 เป€เบ”เบทเบญเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰, เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ›เบดเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡. เบเบฑเบ‡เบกเบตเป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡เบญเบฒเบ—เบดเบ”เบˆเบปเบ™เบเปˆเบงเบฒเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ•เปเปˆเป„เบ›, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบžเบฝเบ‡เปเบ•เปˆเบฅเปเบ–เป‰เบฒเปเบฅเบฐเบเบฐเบเบฝเบกเบ•เบทเปˆเบกเบญเบตเบ. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเปเบ–เป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เบงเบฒเบ‡เป€เบ”เบตเบกเบžเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ: เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ PostgreSQL shard เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเบปเบเป€เบญเบปเบฒเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบšเบš spare เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง, เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบซเบฅเป‰เบฒเบชเบธเบ”, เปเบฅเบฐเป€เบžเบตเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ shard, เป€เบŠเบดเปˆเบ‡เบ„เบงเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™ replica เปƒเบซเบกเปˆเปƒเบ™ Patroni. cluster, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบญเบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบฅเบถเบšเบ‚เปเป‰เบกเบนเบ™ . เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบŠเปˆเบงเบเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ„เบทเบ™เปƒเบซเบกเปˆ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐ, เบœเบนเป‰เปƒเบŠเป‰เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเปƒเบ™เบเบฒเบŸเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™.
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ™เบตเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš? เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบซเบผเบฑเบเบเบฒเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบˆเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบˆเบปเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš. เป€เบเบตเบ”โ€‹เบซเบเบฑเบ‡โ€‹เบ‚เบถเป‰เบ™? เบเบปเบ‡เบชเบธเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš; เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฐเบšเบฑเบšเบ‚เบญเบ‡ Consul เปเบกเปˆเบ™เบชเบนเบ‡เบเบงเปˆเบฒเบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบซเบ™เบถเปˆเบ‡, CPU เบฎเบปเปˆเบงเป„เบซเบผเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš consul-templates เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ›เบฑเบšเบ›เบธเบ‡เบเบปเบ‡เบชเบธเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ.

เบฃเบตเบชเบฐเบ•เบฒเบ”เบเบธเปˆเบก Patroni

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบซเบฒเปƒเบซเบกเปˆเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบชเบปเบ‡เปƒเบชเบงเปˆเบฒ. เป€เบกเบทเปˆเบญเบญเบฑเบšเป€เบ”เบ” Consul, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบญเบปเบฒ Consul node เบญเบญเบเบˆเบฒเบ cluster เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ consul leave โ†’ Patroni เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš Consul server เบญเบทเปˆเบ™ โ†’ เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ. เปเบ•เปˆเป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบฎเบญเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบธเปˆเบกเบเบปเบ‡เบชเบธเบ™เปเบฅเบฐเบชเบปเปˆเบ‡เบกเบฑเบ™เบญเบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฒเบเบเบปเบ‡เบชเบธเบ™, เบเบธเปˆเบก Patroni เบ—เบฑเบ‡เบซเบกเบปเบ”เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆ, เปเบฅเบฐเปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

ERROR: get_cluster
Traceback (most recent call last):
...
RetryFailedError: 'Exceeded retry deadline'
ERROR: Error communicating with DCS
<b>LOG: database system is shut down</b>

เบเบธเปˆเบก Patroni เบšเปเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบธเปˆเบกเบ‚เบญเบ‡เบกเบฑเบ™ เปเบฅเบฐเบ›เบดเบ”เป€เบ›เบตเบ”เบ„เบทเบ™เปƒเปเปˆ.

เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบดเบ”เบ•เปเปˆเบเบฑเบšเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ Patroni เบœเปˆเบฒเบ™เบšเบฑเบ™เบซเบฒเปƒเบ™ github. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

consul:
 consul.checks: []
bootstrap:
 dcs:
   retry_timeout: 8

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เป€เบฅโ€‹เบทเป‰เบกโ€‹เบ„เบทเบ™โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เปƒเบ™โ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบกเบตโ€‹, เปเบ•เปˆโ€‹เบซเบ™เป‰เบฒโ€‹เป€เบชเบโ€‹เบ”เบฒเบโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹.

เบšเบฑเบ™เบซเบฒเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚. เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเปเบเป‰เป„เบ‚เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เปƒเบŠเป‰ Consul-agent เปƒเบ™เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบธเปˆเบก Patroni;
  • เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เบฅเบฐเบซเบฑเบ”.

เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™: เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เบ–เบทเบ overridden เบœเปˆเบฒเบ™เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เป€เบกเบทเปˆเบญเป€เบŠเบตเบšเป€เบงเบต Consul เบชเบธเบ”เบ—เป‰เบฒเบเบ–เบทเบเป€เบญเบปเบฒเบญเบญเบเบˆเบฒเบเบเบธเปˆเบก, เบเบธเปˆเบก Consul เบ—เบฑเบ‡เปเบปเบ”เบˆเบฐเบ„เป‰เบฒเบ‡, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบเบงเปˆเบฒเปœเบถเปˆเบ‡เบงเบดเบ™เบฒเบ—เบต; เบ”เป‰เบงเบเป€เบซเบ”เบ™เบตเป‰, Patroni เบšเปเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบก เปเบฅเบฐ เบฃเบตเบชเบฐเบ•เบฒเบ”เบเบธเปˆเบกเบ—เบฑเบ‡เปเบปเบ”เบ—เบฑเบ‡เปเบปเบ”.

เป‚เบŠเบเบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบžเบปเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบญเบตเบเบ•เปเปˆเป„เบ›.

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Patroni

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบญเบ‡ Patroni เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เปเบ•เปˆเบฅเบฐเบเบธเปˆเบก. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบ•เปˆเบฅเบฐเบเบธเปˆเบกเบกเบตเบ„เบงเบฒเบกเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบ‚เบญเบ‡เบเบธเปˆเบก: เบœเบนเป‰เบ™เปเบฒเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบชเบญเบ‡ replicas, เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เปเบเบเบชเบฐเบซเบกเบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบฐเบซเบผเบฑเบš.
เบเบธเปˆเบกเบ„เบปเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง PostgreSQL + Patroni. เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”

Patroni เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฒเบเบเบงเปˆเบฒเบชเบฒเบกเป€เบ”เบทเบญเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰, เบฅเบฒเบงเป„เบ”เป‰เบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบญเบญเบ. เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰, เบœเบนเป‰เบ™เปเบฒเบ‚เบญเบ‡เบเบธเปˆเบกเบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เป€เบชเบเบŠเบตเบงเบดเบ”เปƒเบ™ AWS, เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบผเบงเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. Patroni เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบ•เบปเบ™.

เบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบชเบฑเป‰เบ™เป†เบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ Patroni:

  • เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เบซเบ™เบถเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบเบธเปˆเบกเบ—เบฑเบ‡เบซเบกเบปเบ”. เบ–เป‰เบฒเบเบฒเบ™เบ›เบดเบ”เป€เบ›เบตเบ”เป€เบ„เบทเปˆเบญเบ‡เปƒเปเปˆเป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเปเปˆ, Patroni เบˆเบฐเปเบˆเป‰เบ‡เปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. Patroni เบชเบฒเบกเบฒเบ” restart เบเบธเปˆเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบง, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบชเบฐเบ”เบงเบเบซเบผเบฒเบ.
  • เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบงเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเป„เบ”เป‰เบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบญเบญเบเปเบฅเป‰เบง.
  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ PostgreSQL เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบขเบธเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ” เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ›เบฑเบšเบ›เบธเบ‡เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เป€เบ›เบฑเบ™เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เปˆเบฝเบ™เบœเบนเป‰เบ™เปเบฒเปƒเบ™เบเบธเปˆเบก Patroni เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบœเบนเป‰เบ™เปเบฒเป€เบเบปเปˆเบฒ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบปเป‰เบกเป€เบซเบผเบงเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™