Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° Patroni Π΅ Π΄Π° осигури висока наличност Π·Π° PostgreSQL. Но Patroni Π΅ само шаблон, Π° Π½Π΅ Π³ΠΎΡ‚ΠΎΠ² инструмСнт (ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ посочСно Π² докумСнтацията). На ΠΏΡ€ΡŠΠ² ΠΏΠΎΠ³Π»Π΅Π΄, слСд ΠΊΠ°Ρ‚ΠΎ настроитС Patroni Π² тСстова лаборатория, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΊΠΎ Π΅ прСкрасСн ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ ΠΈ ΠΊΠ°ΠΊ лСсно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅ Π½ΠΈ Π΄Π° Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΠΌ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. ΠžΠ±Π°Ρ‡Π΅ Π² производствСна срСда, Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ всичко сС случва Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° красиво ΠΈ Π΅Π»Π΅Π³Π°Π½Ρ‚Π½ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ Π² тСстовата лаборатория.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π©Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΌΠ°Π»ΠΊΠΎ Π·Π° сСбС си. Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ… ΠΊΠ°Ρ‚ΠΎ систСмСн администратор. Π Π°Π±ΠΎΡ‚ΠΈΡ… Π² ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. ΠžΡ‚ 2014 Π³ΠΎΠ΄ΠΈΠ½Π° работя Π² Data Egret. ΠšΠΎΠΌΠΏΠ°Π½ΠΈΡΡ‚Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π° с консалтинг Π² сфСрата Π½Π° Postgres. НиС обслуТвамС ΠΈΠΌΠ΅Π½Π½ΠΎ Postgres ΠΈ всСки Π΄Π΅Π½ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Postgres, Π·Π°Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° СкспСртиза, ΡΠ²ΡŠΡ€Π·Π°Π½Π° с Сксплоатацията.

Π’ края Π½Π° 2018 Π³ΠΎΠ΄ΠΈΠ½Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ постСпСнно Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Patroni. И Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Ρ…ΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠΏΠΈΡ‚. По някакъв Π½Π°Ρ‡ΠΈΠ½ Π³ΠΎ диагностицирахмС, настройвахмС, стигнахмС Π΄ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. И Π² Ρ‚Π°Π·ΠΈ прСзСнтация Ρ‰Π΅ говоря Π·Π° тях.

ОсвСн Postgres, ΠΎΠ±ΠΈΡ‡Π°ΠΌ Linux. ΠžΠ±ΠΈΡ‡Π°ΠΌ Π΄Π° сС ровя ΠΈ изслСдвам Π² Π½Π΅Π³ΠΎ, ΠΎΠ±ΠΈΡ‡Π°ΠΌ Π΄Π° ΡΡŠΠ±ΠΈΡ€Π°ΠΌ ядра. ΠžΠ±ΠΈΡ‡Π°ΠΌ виртуализация, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Docker, Kubernetes. Всичко Ρ‚ΠΎΠ²Π° ΠΌΠ΅ интСрСсува, Π·Π°Ρ‰ΠΎΡ‚ΠΎ отразява старитС администраторски Π½Π°Π²ΠΈΡ†ΠΈ. ΠžΠ±ΠΈΡ‡Π°ΠΌ Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ с ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ. И ΠΎΠ±ΠΈΡ‡Π°ΠΌ Postgres Π½Π΅Ρ‰Π°Ρ‚Π°, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с администриранСто, Ρ‚.Π΅. рСпликация, Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅. И Π² свободното си Π²Ρ€Π΅ΠΌΠ΅ пиша Π½Π° Go. НС съм софтуСрСн ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€, просто пиша Π·Π° сСбС си Π½Π° Go. Π’ΠΎΠ²Π° ΠΌΠΈ носи удоволствиС.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

  • Мисля, Ρ‡Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ вас знаят, Ρ‡Π΅ Π² Postgres няма висока наличност (HA) ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ HA, трябва Π΄Π° инсталиратС Π½Π΅Ρ‰ΠΎ, Π΄Π° Π³ΠΎ настроитС, Π΄Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ усилия ΠΈ Π΄Π° Π³ΠΎ постигнСтС.
  • Има няколко инструмСнта ΠΈ Patroni Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ тях, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° HA доста Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅. Но ΠΊΠ°Ρ‚ΠΎ инсталирамС всичко Ρ‚ΠΎΠ²Π° Π² тСстова лаборатория ΠΈ Π³ΠΎ пуснСм, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΠΌΠ΅ някакви ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Patroni Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°. И Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ прСкрасно.
  • Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° смС сС сблъсквали с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. И Π·Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ‰Π΅ говоря.
  • Π©Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π³ΠΈ диагностицирахмС, ΠΊΠ°ΠΊΠ²ΠΎ настроихмС – ΠΏΠΎΠΌΠΎΠ³Π½Π° Π»ΠΈ Π½ΠΈ ΠΈΠ»ΠΈ Π½Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

  • Няма Π΄Π° Ρ€Π°Π·ΠΊΠ°Π·Π²Π°ΠΌ ΠΊΠ°ΠΊ Π΄Π° инсталиратС Patroni, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ всичко Ρ‚ΠΎΠ²Π° сС стартира, ΠΊΠ°ΠΊ сС настройва. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ със схСмитС, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅, Π½Π°ΠΌΠΈΡ€Π°ΠΉΠΊΠΈ информация Π·Π° Ρ‚ΠΎΠ²Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.
  • Няма Π΄Π° Ρ€Π°Π·ΠΊΠ°Π·Π²Π°ΠΌ Π·Π° чуТдия ΠΎΠΏΠΈΡ‚. Π©Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° само Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, с ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ…ΠΌΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½ΠΈΠ΅.
  • И няма Π΄Π° говоря Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са извън Patroni ΠΈ PostgreSQL. НапримСр, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с балансиранСто, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΡˆΠΈΡΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ сС Ρ€Π°Π·ΠΏΠ°Π΄Π½Π°, няма Π΄Π° Π³ΠΈ обсъТдам.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И малък Π΄ΠΈΡΠΊΠ»Π΅ΠΉΠΌΡŠΡ€ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° прСзСнтация.

Всички Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, с ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ…ΠΌΠ΅, Π³ΠΈ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Π² ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ 6-7-8 мСсСца Π½Π° Сксплоатацията. Π‘ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ стигнахмС Π΄ΠΎ свои собствСни Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. И ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ Π½ΠΈ ΠΈΠ·Ρ‡Π΅Π·Π½Π°Ρ…Π°. Π—Π°Ρ‚ΠΎΠ²Π° Π΄ΠΎΠΊΠ»Π°Π΄ΡŠΡ‚ Π±Π΅ обявСн ΠΏΡ€Π΅Π΄ΠΈ ΠΎΠΊΠΎΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ Π³ΠΎΠ΄ΠΈΠ½Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ всичко Ρ‚ΠΎΠ²Π° бСшС свСТо Π² Π³Π»Π°Π²Π°Ρ‚Π° ΠΌΠΈ ΠΈ Π°Π· всичко Ρ‚ΠΎΠ²Π° прСкрасно ΠΏΠΎΠΌΠ½Π΅Ρ….

По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π²Π΅Ρ‡Π΅ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ… стари постмортСми, Π³Π»Π΅Π΄Π°Ρ… Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅. И част ΠΎΡ‚ Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° са сС Π·Π°Π±Ρ€Π°Π²ΠΈΠ»ΠΈ, ΠΈΠ»ΠΈ част ΠΎΡ‚ Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ са Π±ΠΈΠ»ΠΈ напълно ΠΏΡ€ΠΎΡƒΡ‡Π΅Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, Π·Π°Ρ‚ΠΎΠ²Π° Π² някои ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ Π½Π΅ са Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ напълно ΠΈΠ»ΠΈ ΠΈΠΌΠ° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π² информацията. Π—Π°Ρ‚ΠΎΠ²Π° моля Π΄Π° ΠΌΠ΅ ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какво С Patroni?

  • Π’ΠΎΠ²Π° Π΅ шаблон Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° HA. Π’Π°ΠΊΠ° Π΅ написано Π² докумСнтацията. И ΠΎΡ‚ моя Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅. Patroni Π½Π΅ Π΅ ΡΡ€Π΅Π±ΡŠΡ€Π½Π° ΠΊΡƒΡ€ΡˆΡƒΠΌΠΈΡ†Π°, която Ρ‰Π΅ Ρ€Π΅ΡˆΠΈ всичкитС Π²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Ρ‚.Π΅. трябва Π΄Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ усилиС, Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ Π΄Π° носи ΠΏΠΎΠ»Π·Π°.
  • Π’ΠΎΠ²Π° Π΅ агСнтска услуга, която сС инсталира Π½Π° всяка услуга с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΈ която Π΅ Π² извСстСн смисъл init-систСма Π·Π° вашия Postgres. Вя стартира Postgres, спира, рСстартира, промСня конфигурацията ΠΈ топологията Π½Π° вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.
  • Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Π·Π° Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎ прСдставлСниС, ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ някакво Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. И Π² Ρ‚ΠΎΠ²Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Patroni ΠΈΠ·Π±Ρ€Π° ΠΏΡŠΡ‚Ρ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ във външна систСма. Π’ΠΎΠ²Π° Π΅ систСма Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° конфигурация. Π’Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Etcd, Consul, ZooKeeper, ΠΈΠ»ΠΈ ΠΊΠΈΡ‚ Kubernetes-ΠΊΠΈ Etcd, Ρ‚.Π΅. някой ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ.
  • Π•Π΄Π½Π° ΠΎΡ‚ характСристик Π½Π° Patroni Π΅, Ρ‡Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΎΡ‚ кутията, просто ΠΊΠ°Ρ‚ΠΎ Π³ΠΎ настроитС. Π’ сравнСниС с Repmgr, Ρ‚Π°ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π‘ Repmgr ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ switchover, Π½ΠΎ Π°ΠΊΠΎ искамС Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, трябва Π΄Π° Π³ΠΎ настроим Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ. Π’ Patroni Π°Π²Ρ‚oΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚ ΠΈΠ΄Π²Π° Π³ΠΎΡ‚ΠΎΠ².
  • Има ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅Ρ‰Π°. НапримСр, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, добавянС Π½Π° Π½ΠΎΠ²ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅ ΠΈ Ρ‚.Π½. Но Ρ‚ΠΎΠ²Π° Π΅ извън ΠΎΠ±Ρ…Π²Π°Ρ‚Π° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°, Π·Π°Ρ‚ΠΎΠ²Π° няма Π΄Π° говоря Π·Π° Π½Π΅Π³ΠΎ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, основната Π·Π°Π΄Π°Ρ‡Π° Π½Π° Patroni Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ Π΄Π° осигури Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Π·Π° Π΄Π° останС ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΡŠΡ‚ работоспособСн ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° Π½Π΅ усСща ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² топологията Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Но ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Patroni, систСмата Π½ΠΈ става ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-слоТна. Ако ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Postgres, с Patroni ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ самия Patroni, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ DCS, Π² ΠΊΠΎΠΉΡ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ. Всичко Ρ‚ΠΎΠ²Π° трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½. Π—Π°Ρ‚ΠΎΠ²Π°, ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС счупи?

МоТС Π΄Π° сС счупи:

  • МоТС Π΄Π° сС счупи Postgres. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС майстор ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ тях ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ ΠΎΡ‚ строя.
  • МоТС Π΄Π° сС счупи самия Patroni.
  • МоТС Π΄Π° сС счупи DCS, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ.
  • И ΠΌΠΎΠΆΠ΅ Π΄Π° сС счупи ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

Всички Ρ‚Π΅Π·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ Ρ‰Π΅ Π³ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌ Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π©Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌ случаитС ΠΏΠΎ мярка Π½Π° слоТността ΠΈΠΌ, Π½Π΅ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΡΠ»ΡƒΡ‡Π°ΠΉΡŠΡ‚ засяга ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, Π° ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° субСктивнитС усСщания, Ρ‡Π΅ случаят Π΅ Π±ΠΈΠ» Ρ‚Ρ€ΡƒΠ΄Π΅Π½ Π·Π° ΠΌΠ΅Π½ ΠΈ Π΅ Π±ΠΈΠ»ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° Π³ΠΎ разглСдам… ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, някой случай Π΅ Π±ΠΈΠ» лСсСн ΠΈ Π΅ Π±ΠΈΠ»ΠΎ лСсно Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ случай Π΅ Π½Π°ΠΉ-простият. Π’ΠΎΠ²Π° Π΅ случай, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²Π·Π΅Ρ…ΠΌΠ΅ кластСр ΠΎΡ‚ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π½Π° ΡΡŠΡ‰ΠΈΡ кластСр Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ…ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ DCS Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-чСсто срСщаната Π³Ρ€Π΅ΡˆΠΊΠ°. Π“Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Ρ‚.Π΅. ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Π΅Π΄Π½ΠΎ място.

И Ρ‚Π°ΠΊΠ°, Π½Π°ΡΡ‚ΡŠΠΏΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случило.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ΡƒΠΊ Π½ΠΈ интСрСсува, ΠΊΠΎΠ³Π° Π½Π°ΡΡ‚ΡŠΠΏΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚. Π’.Π΅. интСрСсува Π½ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС Π΅ случило ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

Но Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½, Ρ‚.Π΅. Π½Π΅ ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΡ‚ΠΎΡ‡ΠΈ. МоТС Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ дълго.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Ρ‚ΠΎΠΉ ΠΈΠΌΠ° Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅. И Π½ΠΈΠ΅ раздСлямС всички ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π½Π° Ρ‚Ρ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°: ΠΈΠΌΠ°ΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅ ΠΏΡ€Π΅Π΄ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π°, Π²Ρ€Π΅ΠΌΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π° ΠΈ слСд Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π°. Π’.Π΅. Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ всички ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Ρ‚Π°Π·ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²Π° линия.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС случи Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Π΅ Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π°, ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случило, ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΠ»ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π°.

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ‚Π΅, Ρ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ класичСскитС ΠΆΡƒΡ€Π½Π°Π»ΠΈ Π½Π° Patroni. Π’ тях Ρ‚ΠΎΠΉ Π½ΠΈ увСдомява, Ρ‡Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ станал майстор ΠΈ ролята Π½Π° майстора Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π»Π° към Ρ‚ΠΎΠ·ΠΈ възСл. Π’ΡƒΠΊ Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΎ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ, Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Ρ‰ΠΎ сС Π΅ случил Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Ρ‚.Π΅. ΠΊΠ°ΠΊΠ²ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ са Π΄ΠΎΠ²Π΅Π»ΠΈ Π΄ΠΎ ΠΏΡ€Π΅Π²ΠΎΠ΄Π° Π½Π° ролята Π½Π° майстора ΠΎΡ‚ Π΅Π΄ΠΈΠ½ възСл Π½Π° Π΄Ρ€ΡƒΠ³. Π’ Ρ‚ΠΎΠ·ΠΈ случай всичко Π΅ просто. ИмамС Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ взаимодСйствиСто със систСмата Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. ΠœΠ°ΠΉΡΡ‚ΠΎΡ€ΡŠΡ‚ Π΅ Ρ€Π°Π·Π±Ρ€Π°Π», Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с DCS, Ρ‚.Π΅. възникнал Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ взаимодСйствиСто. И Ρ‚ΠΎΠΉ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΠ²Π΅Ρ‡Π΅ майстор ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π° ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰ΠΈΡΡ‚Π° си. Π’Π°Π·ΠΈ линия β€ždemoted selfβ€œ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π° Ρ‚ΠΎΠ²Π° Π³ΠΎΠ²ΠΎΡ€ΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π°Π»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са създали ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π·Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° майстора.

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Patroni, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ мноТСство Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ΠΎΠ²Π΅, Ρ‚.Π΅. Π°Π³Π΅Π½Ρ‚ΡŠΡ‚ Π½Π° Patroni Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с DCS. Π’ Ρ‚ΠΎΠ·ΠΈ случай Ρ‚ΠΎΠ²Π° Π΅ Π°Π³Π΅Π½Ρ‚ Π½Π° Consul, с ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π° ΠΏΡ€Π΅Π· ΠΏΠΎΡ€Ρ‚ 8500.

И ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Ρ‚ΡƒΠΊ Π΅, Ρ‡Π΅ Patroni ΠΈ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ са стартирани Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ хост. И Π½Π° Ρ‚ΠΎΠ·ΠΈ ΡΡŠΡ‰ възСл са стартирани ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π½Π° Consul. Бъздавайки Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, Π½ΠΈΠ΅ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Consul. Π’Π΅ Π½Π΅ успяха Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π‘Π»Π΅Π΄ извСстно Π²Ρ€Π΅ΠΌΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ намаля, Π½Π°ΡˆΠΈΡΡ‚ Patroni успя ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π° с Π°Π³Π΅Π½Ρ‚ΠΈΡ‚Π΅. Нормалната Ρ€Π°Π±ΠΎΡ‚Π° сС възобнови. И ΡΡŠΡ‰ΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ Pgdb-2 ΠΎΡ‚Π½ΠΎΠ²ΠΎ стана майстор. Π’.Π΅. имашС ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, Π·Π°Ρ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΡŠΠ·Π΅Π»ΡŠΡ‚ ΠΏΡ€Π΅Π΄Π°Π΄Π΅ ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰ΠΈΡΡ‚Π° си Π½Π° майстора, Π° слСд Ρ‚ΠΎΠ²Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π³ΠΈ ΠΏΠΎΠ΅, Ρ‚.Π΅. всичко сС Π²ΡŠΡ€Π½Π° Π½Π° старото.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ Ρ„Π°Π»ΡˆΠΈΠ²Π° алогия, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ Patroni Π΅ дСйствал ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ. Π’.Π΅. Ρ‚ΠΎΠΉ Ρ€Π°Π·Π±Ρ€Π°, Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ ΠΏΡ€Π΅Π΄Π°Π΄Π΅ ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰ΠΈΡΡ‚Π° си.

И Ρ‚ΡƒΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚Π° възникна, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Consul-ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π±Π°Π·ΠΈΡ‚Π΅. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, всяко Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅: Π±ΠΈΠ»ΠΎ Ρ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° дисковСтС ΠΈΠ»ΠΈ процСсоритС, ΡΡŠΡ‰ΠΎ влияС Π½Π° взаимодСйствиСто с кластСрa Π½Π° Consul.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ Π½Π΅ трябва Π΄Π° ТивСят Π·Π°Π΅Π΄Π½ΠΎ, ΠΎΡ‚ΠΊΡ€ΠΎΠΈΡ…ΠΌΠ΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ кластСр Π·Π° Consul. И Patroni Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Consul, Ρ‚.Π΅. имашС ΠΎΡ‚Π΄Π΅Π»Π΅Π½ кластСр Postgres ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ кластСр Consul. Π’ΠΎΠ²Π° Π΅ основната инструкция ΠΊΠ°ΠΊ трябва Π΄Π° Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ Π½Π΅Ρ‰Π° ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅, Π·Π° Π΄Π° Π½Π΅ ТивСят Π·Π°Π΅Π΄Π½ΠΎ.

ΠšΠ°Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС настроят ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ttl, loop_wait, retry_timeout, Ρ‚.Π΅. Π΄Π° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, Π·Π° Π΄Π° ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π΅ΠΌ краткосрочнитС ΠΏΠΈΠΊΠΎΠ²Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅. Но Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΠΉ-подходящият Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ. И просто Ρ‰Π΅ ΠΈΠ·Π»Π΅Π·Π΅ΠΌ извън Π»ΠΈΠΌΠΈΡ‚ΠΈΡ‚Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. И Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠ°ΠΊΡ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅, Π΅ проста. Π’Π·Π΅Ρ…ΠΌΠ΅ ΠΈ поставихмС DCS Π·Π°Π΅Π΄Π½ΠΎ с Π±Π°Π·Π°Ρ‚Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΠΏΡŠΡ€Π²Π°Ρ‚Π°. Вя Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с взаимодСйствиСто с DCS систСмата.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈΠΌΠ° Π³Ρ€Π΅ΡˆΠΊΠ° Π² комуникацията. И Patroni ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° взаимодСйства с DCS, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ тСкущият мастСр ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°.

Бтарият мастСр става Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Ρ‚ΡƒΠΊ Patroni Ρ€Π°Π±ΠΎΡ‚ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ трябва. Π’ΠΎΠΉ стартира pg_rewind, Π·Π° Π΄Π° Π²ΡŠΡ€Π½Π΅ ΠΆΡƒΡ€Π½Π°Π»Π½Π°Ρ‚Π° транзакция Π½Π°Π·Π°Π΄ ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с новия мастСр ΠΈ Π΄Π° настигнС новия мастСр. Π’ΡƒΠΊ Patroni Ρ€Π°Π±ΠΎΡ‚ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΌΡƒ Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

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

И Π² Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° ситуация Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Π°ΠΊΠ°. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ²Π° сС ΡΠΎΠ±ΡΡ‚Π²Π΅Π½ΠΈΠΊΡŠΡ‚ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π°. И Π°ΠΊΠΎ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½ΠΈΠΊΡŠΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сС Π΅ смСнил, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π½Π°ΡΡ‚ΡŠΠΏΡΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Patroni трябва Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°. Но Π² Ρ‚ΠΎΠ·ΠΈ случай всичко Π΅ Π½Π°Ρ€Π΅Π΄. Π’ΡŠΡ€ΡΠΈΠΌ мястото, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И достигайки ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° сС появяват Π³Ρ€Π΅ΡˆΠΊΠΈ, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈΠ»Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° смяна. И Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ бяха ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с взаимодСйствиСто с DCS, Π° Π² нашия случай ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ Consul, Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ провСрявамС Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Consul, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случвало Ρ‚Π°ΠΌ.

ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ сопоставяйки Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° смяната ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Consul, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ ΡΡŠΡΠ΅Π΄ΠΈΡ‚Π΅ ΠΎΡ‚ кластСра Π½Π° Consul Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° сС ΡΡŠΠΌΠ½ΡΠ²Π°Ρ‚ Π² ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° останалитС участници Π² кластСра.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Consul Π°Π³Π΅Π½Ρ‚ΠΈ, Ρ‚Π°ΠΌ ΡΡŠΡ‰ΠΎ сС Π²ΠΈΠΆΠ΄Π°, Ρ‡Π΅ Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈΠ» някакъв ΠΌΡ€Π΅ΠΆΠΎΠ² колапс. И всички участници Π² кластСра Π½Π° Consul сС ΡΡŠΠΌΠ½ΡΠ²Π°Ρ‚ Π΅Π΄ΠΈΠ½ Π² Π΄Ρ€ΡƒΠ³. Π’ΠΎΠ²Π° послуТи Π·Π° ΠΏΠΎΠ²ΠΎΠ΄ Π·Π° смяната.

Ако сС Π·Π°ΠΏΠΈΡ‚Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случвало ΠΏΡ€Π΅Π΄ΠΈ Ρ‚Π΅Π·ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, deadline, RPC failed, Ρ‚.Π΅. ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈΠΌΠ° някаква ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ взаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ участницитС Π² кластСра Π½Π° Consul.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Най-простият ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π΅ Π΄Π° сС ΠΏΠΎΠΏΡ€Π°Π²ΠΈ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Но Π½Π° ΠΌΠ΅Π½, стоСйки Π½Π° Ρ‚Ρ€ΠΈΠ±ΡƒΠ½Π°Ρ‚Π°, ΠΌΠΈ Π΅ лСсно Π΄Π° заявя Ρ‚ΠΎΠ²Π°. Но обстоятСлствата сС Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° си ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΈ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. МоТС Π΄Π° сС Π½Π°ΠΌΠΈΡ€Π° Π² Π”Π¦ ΠΈ Π΄Π° няма Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π΄Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΈ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈΠ»ΠΈ Π΄Π° влияС Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅Ρ‚ΠΎ. Π—Π°Ρ‚ΠΎΠ²Π° са Π½ΡƒΠΆΠ½ΠΈ някакви Π΄Ρ€ΡƒΠ³ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Има Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ:

  • Най-простият Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ записан, мисля Π΄ΠΎΡ€ΠΈ Π² докумСнтацията, Π΅ Π΄Π° сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ Π½Π° Consul, Ρ‚.Π΅. просто Π΄Π° сС ΠΏΡ€Π΅Π΄Π°Π΄Π΅ ΠΏΡ€Π°Π·Π΅Π½ масив. И Π½ΠΈΠ΅ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° Π°Π³Π΅Π½Ρ‚Π° Π½Π° Consul Π΄Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π§Ρ€Π΅Π· Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Π±ΡƒΡ€Ρ– ΠΈ Π΄Π° Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ смяна.
  • Π”Ρ€ΡƒΠ³ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΅ Π΄Π° сС ΠΏΡ€Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ raft_multiplier. Π’ΠΎΠ²Π° Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π½Π° самия Consul ΡΡŠΡ€Π²ΡŠΡ€. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚ΠΎΠΉ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° 5. Π’ΠΎΠ²Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π°Π½ΠΎ Π² докумСнтацията Π·Π° staging срСди. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π° влияС Π½Π° чСстотата Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ участницитС Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° Consul. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ влияС Π½Π° скоростта Π½Π° слуТСбното ΠΎΠ±Ρ‰ΡƒΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ участницитС Π² кластСра Π½Π° Consul. И Π·Π° production Π²Π΅Ρ‡Π΅ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π΄Π° обмСнят ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΏΠΎ-чСсто.
  • Π”Ρ€ΡƒΠ³ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π½Π° процСситС Π½Π° Consul спрямо Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ процСси Π·Π° планиращия процСс Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма. Има Ρ‚Π°ΠΊΡŠΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ β€žniceβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ опрСдСля ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π½Π° процСситС, ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π²Π·ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΎΡ‚ ОБ ΠΏΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. НиС Π½Π°ΠΌΠ°Π»ΠΈΡ…ΠΌΠ΅ стойността Π½Π° nice Π·Π° Π°Π³Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Consul, Ρ‚.Π΅. ΠΏΠΎΠ²ΠΈΡˆΠΈΡ…ΠΌΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Π΄Π° прСдостави Π½Π° процСситС Π½Π° Consul ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ изпълнСниС Π½Π° ΠΊΠΎΠ΄Π° си. Π’ нашия случай Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½ΠΈ.
  • Π”Ρ€ΡƒΠ³ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΅ Π΄Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Consul. Имам приятСл, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ голям ΠΏΡ€ΠΈΠ²ΡŠΡ€ΠΆΠ΅Π½ΠΈΠΊ Π½Π° Etcd. И Π½ΠΈΠ΅ Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ спорим Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ΅ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ – Etcd ΠΈΠ»ΠΈ Consul. Но ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ΅ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ достигамС Π΄ΠΎ споразумСниС, Ρ‡Π΅ Consul ΠΈΠΌΠ° Π°Π³Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° бъдС стартиран Π½Π° всСки възСл с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. ВоСст, взаимодСйствиСто Π½Π° Patroni с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° Consul става Ρ‡Ρ€Π΅Π· Ρ‚ΠΎΠ·ΠΈ Π°Π³Π΅Π½Ρ‚. И Ρ‚ΠΎΠ·ΠΈ Π°Π³Π΅Π½Ρ‚ става β€žΡ‚Π΅ΡΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚β€œ. Ако Π½Π΅Ρ‰ΠΎ сС случи с Π°Π³Π΅Π½Ρ‚Π°, Patroni Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° Consul. И Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠŸΡ€ΠΈ Etcd няма Ρ‚Π°ΠΊΡŠΠ² Π°Π³Π΅Π½Ρ‚. Patroni ΠΌΠΎΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ със списъка Π½Π° Etcd-ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ ΠΈ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π° с тях. Π’ Ρ‚ΠΎΠ²Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Etcd Π² компанията си, Etcd вСроятно Ρ‰Π΅ бъдС ΠΏΠΎ-добрият ΠΈΠ·Π±ΠΎΡ€ ΠΎΡ‚ Consul. Но Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ смС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π΅ ΠΈΠ·Π±Ρ€Π°Π» ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. И ΠΏΡ€ΠΈ нас ΠΏΠΎ-голямата част ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ°Ρ‚ Consul.
  • И послСдната Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‚Π΅ стойноститС Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅. МоТСм Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π² голямо Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ с Π½Π°Π΄Π΅ΠΆΠ΄Π°Ρ‚Π°, Ρ‡Π΅ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΈ ΠΈ няма Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ‚ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ агрСсивността Π½Π° Patroni ΠΏΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ Ρ„Π΅ΠΉΠ»ΠΎΠ²Π΅Ρ€, Π°ΠΊΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ някакви ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Мисля, Ρ‡Π΅ ΠΌΠ½ΠΎΠ·ΠΈΠ½Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Patroni, са Π·Π°ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ с Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. И Π½Π° ΠΏΡ€ΡŠΠ² ΠΏΠΎΠ³Π»Π΅Π΄ Ρ‚Π°Π·ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½ΠΎΡ€ΠΌΠ°Π»Π½Π°. ИмамС мастСр, ΠΈΠΌΠ°ΠΌΠ΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, няма закъснСниС Π² рСпликацията. Но Ρ‚Π°Π·ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π΅ Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Π΅ Π² Ρ‚ΠΎΠ·ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ трябва Π΄Π° ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ възСла, Π° Π½Π΅ Π΄Π²Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, сС Π΅ случил Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€. И слСд Ρ‚ΠΎΠ·ΠΈ Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½ΠΈ ΠΈΠ·Ρ‡Π΅Π·Π½Π°. Врябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Ρ‰ΠΎ Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π°Π»Π° ΠΈ Π΄Π° я Π²ΡŠΡ€Π½Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π΄Π° я Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ. ΠžΡ‚Π½ΠΎΠ²ΠΎ провСрявамС Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π·Π°Ρ‰ΠΎ сС Π΅ случил Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ Ρ‚ΠΎΠ·ΠΈ случай Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° стана мастСр. Π’ΡƒΠΊ всичко Π΅ Π½Π°Ρ€Π΅Π΄.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И трябва Π΄Π° сС фокусирамС Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, която Π΅ offline ΠΈ Π½Π΅ Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. ΠžΡ‚Π²Π°Ρ€ΡΠΌΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Patroni ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚Π° Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π΅ възникнала ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° Π΅Ρ‚Π°ΠΏ pg_rewind. Π—Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, трябва Π΄Π° Π²ΡŠΡ€Π½Π΅ΠΌ ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π΄Π° изискамС нСобходимия ΠΆΡƒΡ€Π½Π°Π» Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ мастСра ΠΈ ΠΏΠΎ Π½Π΅Π³ΠΎ Π΄Π° настигнСм мастСра.

Π’ Ρ‚ΠΎΠ·ΠΈ случай нямамС ΠΆΡƒΡ€Π½Π°Π» Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° стартира. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ спирамС Postgres с Π³Ρ€Π΅ΡˆΠΊΠ°. И Π·Π°Ρ‚ΠΎΠ²Π° я няма Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Врябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Ρ‰ΠΎ я няма Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ Π·Π°Ρ‰ΠΎ Π½Π΅ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅. ΠžΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π½Π° новия мастСр ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ° Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅. Оказва сС, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ pg_rewind сС Π΅ случил checkpoint. И част ΠΎΡ‚ старитС ΠΆΡƒΡ€Π½Π°Π»ΠΈ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ просто са Π±ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈ. ΠšΠΎΠ³Π°Ρ‚ΠΎ старият мастСр ΠΎΠΏΠΈΡ‚Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с новия мастСр ΠΈ Π΄Π° поиска Ρ‚Π΅Π·ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅, Ρ‚Π΅ Π²Π΅Ρ‡Π΅ бяха ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈ, просто Π³ΠΈ нямашС.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Бравнявах Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС случиха Ρ‚Π΅Π·ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. И Ρ‚Π°ΠΌ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π΅ Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ 150 милисСкунди, Ρ‚.Π΅. Π² 369 милисСкунди Π·Π°Π²ΡŠΡ€ΡˆΠΈ checkpoint, бяха ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈ WAL-сСгмСнтитС. И Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ Π² 517, слСд 150 милисСкунди стартира rewind Π½Π° старата Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°. Π’.Π΅. Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ 150 милисСкунди Π½ΠΈ стигнаха, Π·Π° Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ ΠΈ Π΄Π° Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какви са Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈΡ‚Π΅?

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ слотовС Π·Π° рСпликация. Π‘Ρ‡ΠΈΡ‚Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±Ρ€ΠΎ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° Π² ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ Π΅Ρ‚Π°ΠΏ Π½Π° Сксплоатация ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ…ΠΌΠ΅ слотовСтС. БмятахмС, Ρ‡Π΅ Π°ΠΊΠΎ слотовСтС Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ WAL-сСгмСнти, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сринСм мастСра. Π’ΠΎΠΉ Ρ‰Π΅ ΠΏΠ°Π΄Π½Π΅. ΠœΡŠΡ‡ΠΈΡ…ΠΌΠ΅ сС извСстно Π²Ρ€Π΅ΠΌΠ΅ Π±Π΅Π· слотовС. И Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ Π½ΠΈ трябват слотовС, Π²ΡŠΡ€Π½Π°Ρ…ΠΌΠ΅ слотовСтС.

Но Ρ‚ΡƒΠΊ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΌΠ°ΡΡ‚Π΅Ρ€ΡŠΡ‚ сС прСмСсти Π² Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ, Ρ‚ΠΎΠΉ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° слотовС ΠΈ Π·Π°Π΅Π΄Π½ΠΎ с тях ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° WAL-сСгмСнти. И Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ появата Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° wal_keep_segments. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚ΠΎΠΉ Π΅ 8 сСгмСнта. НиС Π³ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ…ΠΌΠ΅ Π΄ΠΎ 1000 ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ…ΠΌΠ΅ ΠΊΠΎΠ»ΠΊΠΎ свободно място ΠΈΠΌΠ°ΠΌΠ΅. И Π½ΠΈΠ΅ Π΄Π°Ρ€ΠΈΡ…ΠΌΠ΅ 16 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π° Π·Π° wal_keep_segments. ВоСст, ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ Ρ€Π΅Π·Π΅Ρ€Π² ΠΎΡ‚ 16 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π° ΠΆΡƒΡ€Π½Π°Π»Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π° всички възли.

И плюс – Ρ‚ΠΎΠ²Π° Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΎ ΠΈ Π·Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°. Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, трябва Π΄Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ Π΅Π΄Π½Π° ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅. ИскамС Π΄Π° я ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΠΌ. Врябва Π΄Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ софтуСра, ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, ΠΎΡ‰Π΅ Π½Π΅Ρ‰ΠΎ. И ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, Π·Π° нСя ΡΡŠΡ‰ΠΎ сС ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° слот. И Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ малък wal_keep_segments, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π³ΡƒΠ±Π΅Π½ΠΈ. НиС Ρ‰Π΅ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, тя Ρ‰Π΅ поиска ΠΎΠ½Π΅Π·ΠΈ ΠΆΡƒΡ€Π½Π°Π»Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ спряла, Π½ΠΎ Π½Π° мастСра ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π³ΠΈ ΠΈΠΌΠ°. И Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΡΡŠΡ‰ΠΎ няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅. Π—Π°Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅ голям запас ΠΎΡ‚ ΠΆΡƒΡ€Π½Π°Π»Π½ΠΈ записи.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ИмамС production-Π±Π°Π·Π°. Π’Π°ΠΌ Π²Π΅Ρ‡Π΅ работят ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ.

Π‘Π»ΡƒΡ‡ΠΈ сС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€. ВлязохмС ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π°Ρ…ΠΌΠ΅ – всичко Π΅ Π½Π°Ρ€Π΅Π΄, Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ Π½Π° мястото си, няма забавянС Π½Π° рСпликацията. Няма ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ‚Π΅, всичко Π΅ Π½Π°Ρ€Π΅Π΄.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΈΡΡ‚ Π΅ΠΊΠΈΠΏ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ сякаш трябва Π΄Π° ΠΈΠΌΠ° някакви Π΄Π°Π½Π½ΠΈ, Π½ΠΎ Π½ΠΈΠ΅ Π³ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π² Π΅Π΄ΠΈΠ½ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ, Π° Π² Π±Π°Π·Π°Ρ‚Π° Π½Π΅ Π³ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅. И трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случило с тях.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Ясно Π΅, Ρ‡Π΅ pg_rewind Π³ΠΈ Π΅ ΠΈΠ·Ρ‚Ρ€ΠΈΠ». Π’Π΅Π΄Π½Π°Π³Π° Π³ΠΎ Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅, Π½ΠΎ ΠΎΡ‚ΠΈΠ΄ΠΎΡ…ΠΌΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случило.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ ΠΊΠΎΠ³Π° Π΅ станал Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, ΠΊΠΎΠΉ Π΅ станал мастСр ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΠΉ Π΅ старият мастСр ΠΈ ΠΊΠΎΠ³Π° Π΅ искал Π΄Π° станС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, тоСст, Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ сС ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅, Π·Π° Π΄Π° установим ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π»Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠΠ°ΡˆΠΈΡΡ‚ стар мастСр сС рСстартира. И Π² автозапусканСто бСшС вписан Patroni. Patroni сС стартира. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° стартира Postgres. По-Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΏΡ€Π΅Π΄ΠΈ стартиранСто Π½Π° Postgres ΠΈ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Patroni стартира процСса pg_rewind. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Ρ‚ΠΎΠΉ ΠΈΠ·Ρ‚Ρ€ΠΈ част ΠΎΡ‚ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈ Π½ΠΎΠ²ΠΈ ΠΈ сС ΡΠ²ΡŠΡ€Π·Π°. Π’ΡƒΠΊ Patroni Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ, тоСст, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ. ΠšΠ»Π°ΡΡ‚ΡŠΡ€ΡŠΡ‚ Π½ΠΈ сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ. Π˜ΠΌΠ°Ρ…ΠΌΠ΅ 3 Π½ΠΎΠ΄Π°, слСд Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π° 3 Π½ΠΎΠ΄Π° – всичко Π΅ страхотно.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π—Π°Π³ΡƒΠ±ΠΈΡ…ΠΌΠ΅ част ΠΎΡ‚ Π΄Π°Π½Π½ΠΈΡ‚Π΅. Врябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠ»ΠΊΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ смС Π·Π°Π³ΡƒΠ±ΠΈΠ»ΠΈ. Π’ΡŠΡ€ΡΠΈΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈΠ»ΠΎ rewind. МоТСм Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ ΠΎΡ‚ записитС Π² ΠΆΡƒΡ€Π½Π°Π»Π°. Π—Π°ΠΏΠΎΡ‡Π½Π° rewind, Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π΅Ρ‰ΠΎ ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Врябва Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ позицията Π² ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅, Π½Π° която Π΅ спряло старото майсторско ΠΊΠΎΠΏΠΈΠ΅. Π’ Ρ‚ΠΎΠ·ΠΈ случай – Ρ‚ΠΎΠ²Π° Π΅ Ρ‚Π°Π·ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ°. И Π½ΠΈ Π΅ Π½ΡƒΠΆΠ½Π° Π²Ρ‚ΠΎΡ€Π° Ρ‚Π°ΠΊΠ°Π²Π° ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ°, Ρ‚.Π΅. разстояниСто, с ΠΊΠΎΠ΅Ρ‚ΠΎ старото майсторско ΠΊΠΎΠΏΠΈΠ΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ Π½ΠΎΠ²ΠΎΡ‚ΠΎ.

Π’Π·ΠΈΠΌΠ°ΠΌΠ΅ обикновСния pg_wal_lsn_diff ΠΈ сравнявамС Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ. Π’ конкрСтния случай ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ 17 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π°. Π”Π°Π»ΠΈ Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΊΠΎ, всСки Ρ€Π΅ΡˆΠ°Π²Π° сам. Π—Π° някой 17 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π° Π΅ ΠΌΠ°Π»ΠΊΠΎ, Π·Π° Π΄Ρ€ΡƒΠ³ – ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ. Π’ΡƒΠΊ всСки ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΎ опрСдСля спорСд Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅ Π½Π° бизнСса.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Но ΠΊΠ°ΠΊΠ²ΠΎ Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ Π·Π° сСбС си?

На ΠΏΡŠΡ€Π²ΠΎ място, трябва Π΄Π° Ρ€Π΅ΡˆΠΈΠΌ – Π²ΠΈΠ½Π°Π³ΠΈ Π»ΠΈ Π½ΠΈ Π΅ Π½ΡƒΠΆΠ΄Π½ΠΎ Π°Π²Ρ‚ΠΎΠ·Π°ΠΏΡƒΡΠΊΡŠΡ‚ Π½Π° Patroni слСд рСстартиранС Π½Π° систСмата? По-чСсто Π΅ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ трябва Π΄Π° Π²Π»Π΅Π·Π΅ΠΌ Π² старото майсторско ΠΊΠΎΠΏΠΈΠ΅, Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π΄Π°Π»Π΅Ρ‡ Π΅ ΠΎΡ‚ΠΈΡˆΠ»ΠΎ. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° инспСктирамС сСгмСнтитС Π½Π° ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ става Ρ‚Π°ΠΌ. И Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ – ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Π½ΠΈ трябва Π΄Π° стартирамС старото майсторско ΠΊΠΎΠΏΠΈΠ΅ Π² standalone Ρ€Π΅ΠΆΠΈΠΌ, Π·Π° Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ.

И Ρ‡Π°ΠΊ слСд Ρ‚ΠΎΠ²Π° трябва Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΠΈΠΌ Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ, ΠΊΠ°Ρ‚ΠΎ ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ Ρ‚ΠΎΠ·ΠΈ възСл ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π² нашия кластСр.

ОсвСн Ρ‚ΠΎΠ²Π°, ΠΈΠΌΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Β«maximum_lag_on_failoverΒ». По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π°ΠΊΠΎ Π½Π΅ ΠΌΠ΅ лъТС ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° 1 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚.

Как Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠΉ? Ако Π½Π°ΡˆΠ°Ρ‚Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° изостава с 1 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ Π»Π°Π³ Π½Π° рСпликацията, Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π½Π΅ участва Π² ΠΈΠ·Π±ΠΎΡ€ΠΈΡ‚Π΅. И Π°ΠΊΠΎ случайно сС случи Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Patroni Π³Π»Π΅Π΄Π° ΠΊΠΎΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ изостават. Ако Ρ‚Π΅ изостават с голямо количСство Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΈ ΠΆΡƒΡ€Π½Π°Π»ΠΈ, Ρ‚Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° станат майстор. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π° функция, която позволява Π΄Π° Π½Π΅ сС загубят ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΠΈ.

Но Ρ‚ΡƒΠΊ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Π΅ Π»Π°Π³ΡŠΡ‚ Π½Π° рСпликацията Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Patroni ΠΈ DCS сС обновява Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». Мисля, Ρ‡Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ стойността Π½Π° ttl Π΅ 30 сСкунди.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ситуация, ΠΊΠΎΠ³Π°Ρ‚ΠΎ изоставанСто Π² рСпликацията Π·Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ Π² DCS Π΅ Π΅Π΄Π½ΠΎ, Π° Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° съвсСм Π΄Ρ€ΡƒΠ³ΠΎ изоставанС ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΄Π° няма изоставанС, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. И Ρ‚ΠΎ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ отразява Ρ€Π΅Π°Π»Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°. И Π½Π΅ трябва Π΄Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌΠ΅ слоТна Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Π½Π΅Π³ΠΎ.

И Ρ€ΠΈΡΠΊΡŠΡ‚ ΠΎΡ‚ Π·Π°Π³ΡƒΠ±ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ остава. И Π² Π½Π°ΠΉ-лошия случай Π΅Π΄Π½Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°, Π° Π² срСдния случай Π΄Ρ€ΡƒΠ³Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°. Π’.Π΅. ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ внСдряванС Π½Π° Patroni ΠΈ оцСнявамС ΠΊΠΎΠ»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ, трябва Π΄Π° сС основавамС Π½Π° Ρ‚Π΅Π·ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈ ΠΈ Π³ΠΎΡ€Π΅-Π΄ΠΎΠ»Ρƒ Π΄Π° прСдставямС ΠΊΠΎΠ»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ.

И Π΄ΠΎΠ±Ρ€Π° Π½ΠΎΠ²ΠΈΠ½Π° ΠΈΠΌΠ°. ΠšΠΎΠ³Π°Ρ‚ΠΎ старият майстор Π΅ Π½Π°ΠΏΡ€Π΅Π΄, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π΅Π΄Π½Π΅ Π·Π° смСтка Π½Π° някакви Ρ„ΠΎΠ½ΠΎΠ²ΠΈ процСси. Π’.Π΅. ΠΈΠΌΠ°Π»ΠΎ Π΅ Π°Π²Ρ‚ΠΎ-Π²Π°ΠΊΡƒΡƒΠΌΠΈΡ€Π°Π½Π΅, Ρ‚ΠΎΠΉ Π΅ записал Π΄Π°Π½Π½ΠΈ, Π·Π°ΠΏΠ°Π·ΠΈΠ» Π³ΠΈ Π΅ Π² ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅. И Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ спокойно Π΄Π° ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΈ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ. Π’ Ρ‚ΠΎΠ²Π° няма Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И Ρ‚Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅, Π² случай Ρ‡Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ maximum_lag_on_failover ΠΈ Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈΠ» Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, ΠΈ трябва Π΄Π° сС ΠΈΠ·Π±Π΅Ρ€Π΅ Π½ΠΎΠ² майстор. Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° оцСнява сСбС си ΠΊΠ°Ρ‚ΠΎ нСспособна Π΄Π° участва Π² ΠΈΠ·Π±ΠΎΡ€ΠΈΡ‚Π΅. И ΠΎΡ‚ΠΊΠ°Π·Π²Π° Π΄Π° участва Π² Π½Π°Π΄ΠΏΡ€Π΅Π²Π°Ρ€Π°Ρ‚Π° Π·Π° Π»ΠΈΠ΄Π΅Ρ€. И Ρ‡Π°ΠΊΠ°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ бъдС ΠΈΠ·Π±Ρ€Π°Π½ Π½ΠΎΠ² майстор, Π·Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с Π½Π΅Π³ΠΎ. Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° мярка Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ΡƒΠΊ Π½Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π΅ΠΊΠΈΠΏ Π΅ написал, Ρ‡Π΅ тСхният ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Postgres. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΄ΠΎ самия майстор Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС стигнС, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΏΠΎ SSH. И Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ ΡΡŠΡ‰ΠΎ Π½Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠ²Π°.

Π’ΠΎΠ·ΠΈ хост Π±Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ рСстартиран. ΠŸΠΎΡ€Π°Π΄ΠΈ рСстартиранСто Π½Π°ΡΡ‚ΡŠΠΏΠΈ Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ моТСшС Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΈ Ρ€ΡŠΡ‡Π΅Π½ Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, ΠΊΠ°ΠΊΡ‚ΠΎ сСга Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌ. И слСд рСстартиранСто Π½ΠΈΠ΅ Π²Π΅Ρ‡Π΅ ΠΎΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ с тСкущия майстор.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π½Π°Π΅Ρ…ΠΌΠ΅, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с дисковСтС, Ρ‚.Π΅. Π²Π΅Ρ‡Π΅ ΠΏΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π·Π½Π°Π΅Ρ…ΠΌΠ΅ къдС Π΄Π° Ρ€ΠΎΠ²ΠΈΠΌ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΠΌ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

НиС влязохмС Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° postgres ΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ сС случва. ВидяхмС ΠΊΠΎΠΌΠΈΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ‚ ΠΏΠΎ Π΅Π΄Π½Π°-Π΄Π²Π΅-Ρ‚Ρ€ΠΈ сСкунди, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ. ВидяхмС, Ρ‡Π΅ Π°Π²Ρ‚ΠΎ-Π²Π°ΠΊΡƒΡƒΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ сС стартира ΠΌΠ½ΠΎΠ³ΠΎ дълго ΠΈ странно. И видяхмС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° диска. Π’.Π΅. всичко Ρ‚ΠΎΠ²Π° са ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с дисковСтС.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π‘ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° систСмния dmesg (Π»ΠΎΠ³ Π½Π° ядрСнитС ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ) установихмС, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π΅Π΄ΠΈΠ½ ΠΎΡ‚ дисковСтС. Дисковата подсистСма ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ²Π°ΡˆΠ΅ софтуСрСн Raid. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ…ΠΌΠ΅ /proc/mdstat ΠΈ видяхмС, Ρ‡Π΅ Π½ΠΈ липсва Π΅Π΄ΠΈΠ½ диск. Π’.Π΅. ΠΈΠΌΠ°ΠΌΠ΅ Raid ΠΎΡ‚ 8 диска, Π½ΠΎ Π΅Π΄ΠΈΠ½ липсва. Ако Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ сС Π²Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π² слайда, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ sde ΠΎΡ‚ΡΡŠΡΡ‚Π²Π°. Условно ΠΊΠ°Π·Π°Π½ΠΎ, Π΄ΠΈΡΠΊΡŠΡ‚ Π΅ ΠΈΠ·ΠΏΠ°Π΄Π½Π°Π». Π’ΠΎΠ²Π° Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π»ΠΎ дискови ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ прилоТСнията ΡΡŠΡ‰ΠΎ бяха засСгнати ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с кластСра Postgres.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И Π² Ρ‚ΠΎΠ·ΠΈ случай Patroni Π½Π΅ Π±ΠΈ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Π», Π·Π°Ρ‰ΠΎΡ‚ΠΎ Patroni няма Π·Π°Π΄Π°Ρ‡Π° Π΄Π° наблюдава ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ диска. Врябва Π΄Π° слСдим Ρ‚Π°ΠΊΠΈΠ²Π° ситуации с външСн ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. НиС Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° дисковСтС към външния ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π±ΡŠΡ€Π·ΠΎ.

И имашС Ρ‚Π°ΠΊΠ°Π²Π° идСя – Π° Π΄Π°Π»ΠΈ Π±ΠΈΡ…ΠΌΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎΠΌΠΎΡ‰ ΠΎΡ‚ фСнсинг ΠΈΠ»ΠΈ софтуСрСн watchdog? ΠŸΠΎΠΌΠΈΡΠ»ΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ Π² Ρ‚ΠΎΠ·ΠΈ случай вСроятно няма Π΄Π° Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ Patroni ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π° с кластСра DCS ΠΈ Π½Π΅ видя никакъв ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’.Π΅. ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° DCS ΠΈ Patroni всичко с кластСра изглСТдашС Π½Π°Ρ€Π΅Π΄, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ имашС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с диска ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

На ΠΌΠ΅Π½ ΠΌΠΈ сС струва, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-страннитС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ изслСдвах дълго Π²Ρ€Π΅ΠΌΠ΅, ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ… ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΈ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ… кластСрСн симулант.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ бСшС, Ρ‡Π΅ старият мастСр Π½Π΅ ΠΌΠΎΠΆΠ° Π΄Π° станС Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Ρ‚.Π΅. Patroni Π³ΠΎ ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡˆΠ΅ ΠΈ показвашС, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ възСл ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π° ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Π½ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ бСшС Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°. Π‘Π΅Π³Π° Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΎ. Π’ΠΎΠ²Π° Π΅ остава ΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И ΠΎΡ‚ ΠΊΠ°ΠΊΠ²ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π° всичко? Π—Π°ΠΏΠΎΡ‡Π½Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с дискови забавяния. Π˜ΠΌΠ°Ρ…ΠΌΠ΅ ΠΊΠΎΠΌΠΈΡ‚ΠΈ ΠΏΠΎ сСкунда ΠΈΠ»ΠΈ Π΄Π²Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ИмашС ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅, Ρ‚.Π΅. ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ сС Ρ€Π°Π·ΠΊΡŠΡΠ²Π°Ρ…Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ИмашС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° тСТСст.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ дисковата подсистСма Π½Π΅ бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π·ΠΈΠ²Ρ‡ΠΈΠ²Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И Π½Π°ΠΉ-Π·Π°Π³Π°Π΄ΡŠΡ‡Π½ΠΎΡ‚ΠΎ Π·Π° ΠΌΠ΅Π½ – Ρ‚ΠΎΠ²Π° бСшС дошлия ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π΅Π½ shutdown request. ΠŸΡ€ΠΈ Postgres ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅:

  • Π’ΠΎΠ²Π° Π΅ graceful, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‡Π°ΠΊΠ°ΠΌΠ΅ всички ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ Π΄Π° сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π°Ρ‚ сами.
  • Има fast, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ заставямС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π΄Π° сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π°Ρ‚, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΎΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅.
  • И immediate. Π’ Ρ‚ΠΎΠ·ΠΈ случай immediate Π΄ΠΎΡ€ΠΈ Π½Π΅ увСдомява ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅, Ρ‡Π΅ трябва Π΄Π° сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π°Ρ‚, просто сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° Π±Π΅Π· ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. А Π½Π° всички ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ RST (TCP ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Ρ‡Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½Π° ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ няма ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° Π»ΠΎΠ²ΡƒΠ²Π°).

Кой ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ Ρ‚ΠΎΠ·ΠΈ сигнал? Π€ΠΎΠ½ΠΎΠ²ΠΈΡ‚Π΅ процСси Π½Π° Postgres Π½Π΅ си ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Ρ‚Π°ΠΊΠΈΠ²Π° сигнали ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π° Π΅ kill-9. Π’Π΅ Π½Π΅ си ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚, Π° само Ρ€Π΅Π°Π³ΠΈΡ€Π°Ρ‚ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π° Π΅ спСшСн рСстарт Π½Π° Postgres. НС Π·Π½Π°ΠΌ ΠΊΠΎΠΉ Π³ΠΎ Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠ».

ΠŸΡ€Π΅Π³Π»Π΅Π΄Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° "last" ΠΈ видях Π΅Π΄ΠΈΠ½ Ρ‡ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰ΠΎ Π΅ влязъл Π² Ρ‚ΠΎΠ·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ Π·Π°Π΅Π΄Π½ΠΎ с нас, Π½ΠΎ сС притСснявах Π΄Π° Π·Π°Π΄Π°ΠΌ Π²ΡŠΠΏΡ€ΠΎΡ. МоТС Π±ΠΈ бСшС kill -9. Π‘ΠΈΡ… видял Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ kill -9, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Postgres пишС, Ρ‡Π΅ Π΅ ΠΏΡ€ΠΈΠ΅Π» kill -9, Π½ΠΎ Π½Π΅ видях Ρ‚ΠΎΠ²Π° Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΉΠΊΠΈ Π΄Π° разслСдвам, видях, Ρ‡Π΅ Patroni Π½Π΅ Π΅ писал Π² Π»ΠΎΠ³ дълго Π²Ρ€Π΅ΠΌΠ΅ – 54 сСкунди. И Π°ΠΊΠΎ сравним Π΄Π²Π° таймстампа, Ρ‚ΡƒΠΊ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 54 сСкунди нямашС ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И Π·Π° Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ сС Π΅ случило Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅. Patroni Ρ‚ΡƒΠΊ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΠ» прСкрасно. Бтарият майстор Π½Π΅ Π΅ Π±ΠΈΠ» Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½, Π½Π΅Ρ‰ΠΎ сС Π΅ случвало с Π½Π΅Π³ΠΎ. И Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° ΠΈΠ·Π±ΠΎΡ€ΠΈ Π½Π° Π½ΠΎΠ² майстор. Π’ΡƒΠΊ всичко сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π΄ΠΎΠ±Ρ€Π΅. ΠΠ°ΡˆΠΈΡΡ‚ pgsql01 стана Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ИмамС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, която стана майстор. И ΠΈΠΌΠ° Π²Ρ‚ΠΎΡ€Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°. И с Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΈΠΌΠ΅Π½Π½ΠΎ имашС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Вя сС ΠΎΠΏΠΈΡ‚Π²Π°ΡˆΠ΅ Π΄Π° сС прСнастрои. ΠšΠ°ΠΊΡ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌ, тя сС ΠΎΠΏΠΈΡ‚Π²Π°ΡˆΠ΅ Π΄Π° смСни recovery.conf, Π΄Π° рСстартира Postgres ΠΈ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с новия майстор. ВсСки 10 сСкунди пишСшС ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Ρ‡Π΅ сС ΠΎΠΏΠΈΡ‚Π²Π°, Π½ΠΎ Π½Π΅ успява.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ Π½Π° стария майстор пристига сигнал Π·Π° immediate-shutdown. ΠœΠ°ΠΉΡΡ‚ΠΎΡ€ΡŠΡ‚ сС рСстартира. И ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅Ρ‚ΠΎ спира, Π·Π°Ρ‰ΠΎΡ‚ΠΎ старият майстор ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² рСстартиранС. ВоСст, Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с Π½Π΅Π³ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ тя Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π½ΠΎ рСпликацията Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ сС стартира.

Имам СдинствСна Ρ…ΠΈΠΏΠΎΡ‚Π΅Π·Π°, Ρ‡Π΅ Π² recovery.conf Π΅ Π±ΠΈΠ» Π°Π΄Ρ€Π΅ΡΡŠΡ‚ Π½Π° стария майстор. И ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС появи новият майстор, Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° всС ΠΎΡ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π²Π°ΡˆΠ΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ със стария майстор.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠšΠΎΠ³Π°Ρ‚ΠΎ Patroni стартира Π½Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Π²ΡŠΠ·Π΅Π»ΡŠΡ‚ сС стартира, Π½ΠΎ Π½Π΅ успя Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ ΠΏΠΎ рСпликация. И сС ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° забавянС Π½Π° рСпликацията, ΠΊΠΎΠ΅Ρ‚ΠΎ изглСТдашС ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Π°ΠΊΠ°. ВоСст, всичкитС Ρ‚Ρ€ΠΈ възСла бяха Π½Π° мястото си, Π½ΠΎ вторият възСл ΠΈΠ·ΠΎΡΡ‚Π°Π²Π°ΡˆΠ΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са написани, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ рСпликацията Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° стартира, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ са Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ. И Ρ‚Π΅Π·ΠΈ ΠΆΡƒΡ€Π½Π°Π»Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΌΠ°ΠΉΡΡ‚ΠΎΡ€ΡŠΡ‚ ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ са посочСни Π² recovery.conf, просто Π½Π΅ отговарят Π½Π° нашия Ρ‚Π΅ΠΊΡƒΡ‰ възСл.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И Ρ‚ΡƒΠΊ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ… Π³Ρ€Π΅ΡˆΠΊΠ°. Π’Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° провСря ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π² recovery.conf, Π·Π° Π΄Π° провСря Ρ…ΠΈΠΏΠΎΡ‚Π΅Π·Π°Ρ‚Π° си, Ρ‡Π΅ Π½Π΅ сС ΡΠ²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ с правилния майстор. Но Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ… Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°ΠΌ с Ρ‚ΠΎΠ²Π° ΠΈ Π½Π΅ ΠΌΠΈ Ρ…Ρ€ΡƒΠΌΠ½Π°, ΠΈΠ»ΠΈ видях, Ρ‡Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° изостава ΠΈ трябва Π΄Π° я прСопрСдСля, Ρ‚.Π΅. Ρ€Π°Π±ΠΎΡ‚ΠΈΡ… Π½Π° прСскачанС. Π’ΠΎΠ²Π° бСшС моя Π³Ρ€Π΅ΡˆΠΊΠ°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π‘Π»Π΅Π΄ 30 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΄ΠΎΠΉΠ΄Π΅, Ρ‚.Π΅. рСстартирах Patroni Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°. Аз Π²Π΅Ρ‡Π΅ бях поставил Π·Π½Π°ΠΊ Π½Π° нСя, мислСх, Ρ‡Π΅ Ρ‰Π΅ трябва Π΄Π° я прСопрСдСля. И Ρ€Π΅ΡˆΠΈΡ… – Ρ‰Π΅ рСстартирам Patroni, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Ρ‰Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π½Π΅Ρ‰ΠΎ Π΄ΠΎΠ±Ρ€ΠΎ. Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅Ρ‚ΠΎ стартира. И Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π΄ΠΎΡ€ΠΈ сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ, бСшС Π³ΠΎΡ‚ΠΎΠ²Π° Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ€ΡŠΠ·ΠΊΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

РСпликацията стартира. Но слСд ΠΌΠΈΠ½ΡƒΡ‚Π° тя спря с Π³Ρ€Π΅ΡˆΠΊΠ°, Ρ‡Π΅ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π΅ отговарят.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΠΎΠΌΠΈΡΠ»ΠΈΡ… си, Ρ‡Π΅ Ρ‰Π΅ рСстартирам ΠΎΡ‚Π½ΠΎΠ²ΠΎ. РСстартирах ΠΎΡ‚Π½ΠΎΠ²ΠΎ Patroni, ΠΈ Ρ‚ΠΎ Π½Π΅ рСстартирах Postgres, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Patroni, Π² Π½Π°Π΄Π΅ΠΆΠ΄Π°Ρ‚Π°, Ρ‡Π΅ Ρ‚ΠΎΠΉ ΠΊΠ°Ρ‚ΠΎ магия Ρ‰Π΅ стартира Π±Π°Π·Π°Ρ‚Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

РСпликацията ΠΎΡ‚Π½ΠΎΠ²ΠΎ стартира, Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈΡ‚Π΅ Π² ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ бяха Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ, Π½Π΅ бяха ΡΡŠΡ‰ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΎΠΏΠΈΡ‚ Π·Π° стартиранС. РСпликацията ΠΎΡ‚Π½ΠΎΠ²ΠΎ спря. И ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ бСшС ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ. И Ρ‚ΠΎ Π½Π΅ бСшС особСно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎ Π·Π° ΠΌΠ΅Π½.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

И извСднъТ ΠΌΠΈ Ρ…Ρ€ΡƒΠΌΠ²Π° – Π° ΠΊΠ°ΠΊΠ²ΠΎ, Π°ΠΊΠΎ рСстартирам Postgres, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π° тСкущия майстор направя checkpoint, Π·Π° Π΄Π° измСстя Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π² ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΌΠ°Π»ΠΊΠΎ Π½Π°ΠΏΡ€Π΅Π΄, Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Ρ‚ΠΎΡ‡ΠΊΠ°? Плюс Ρ‚Π°ΠΌ ΠΎΡ‰Π΅ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈ Π½Π° WAL.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

РСстартирах Patroni, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ… няколко checkpoints Π½Π° майстора, няколко restore points Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ. И Ρ‚ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°. Π”ΡŠΠ»Π³ΠΎ мислих Π·Π°Ρ‰ΠΎ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. И рСпликацията стартира. И рСпликацията Π²Π΅Ρ‡Π΅ Π½Π΅ сС скъсвашС.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’Π°Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π° ΠΌΠ΅Π½ Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ ΠΏΠΎ-Π·Π°Π³Π°Π΄ΡŠΡ‡Π½ΠΈΡ‚Π΅, Π½Π°Π΄ ΠΊΠΎΠΈΡ‚ΠΎ всС ΠΎΡ‰Π΅ сС чудя ΠΊΠ°ΠΊΠ²ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ сС Π΅ случвало.

Какви ΠΈΠ·Π²ΠΎΠ΄ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΎΡ‚ Ρ‚ΡƒΠΊ? Patroni ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ замислСно, Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ. Но Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ 100% гаранция, Ρ‡Π΅ всичко Π΅ Π½Π°Ρ€Π΅Π΄. Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° стартира, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π² ΠΏΠΎΠ»Ρƒ-Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с Ρ‚Π°ΠΊΠ°Π²Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° стари Π΄Π°Π½Π½ΠΈ.

Π‘Π»Π΅Π΄ всСки Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ всичко Π΅ Π½Π°Ρ€Π΅Π΄ с кластСра, Ρ‚.Π΅. ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎΡ‚ΠΎ количСство Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ няма забавянС Π½Π° рСпликацията.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ‰Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°ΠΌ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ. ΠžΠΏΠΈΡ‚Π°Ρ… сС Π΄Π° Π³ΠΈ обСдиня Π² Π΄Π²Π° слайда. ВСроятно всички истории ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ Π² Π΄Π²Π° слайда ΠΈ само тях Π΄Π° Ρ€Π°Π·ΠΊΠ°ΠΆΠ°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Patroni, Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. Π’ΠΈΠ½Π°Π³ΠΈ трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈΠ» Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π°ΠΊΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Π΅ Π΅ ΠΈΠΌΠ°Π»ΠΎ Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€, Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ кластСра. А Ρ‚ΠΎΠ²Π° Π΅ лошо.

Π‘Π»Π΅Π΄ всСки Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ Π²ΠΈΠ½Π°Π³ΠΈ трябва Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ кластСра. Врябва Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΎ количСство Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, няма забавянС Π½Π° рСпликацията, Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ няма Π³Ρ€Π΅ΡˆΠΊΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π° рСпликация, с Patroni ΠΈ с DCS систСмата.

Автоматизацията ΠΌΠΎΠΆΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ, Patroni Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡŠΡ€ инструмСнт. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π²ΠΎΠ΄ΠΈ ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΡŠΡ‚ Π΄ΠΎ Π½ΡƒΠΆΠ½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅. И Π°ΠΊΠΎ Π½Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ Ρ‚ΠΎΠ²Π°, Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

И Patroni Π½Π΅ Π΅ ΡΡ€Π΅Π±ΡŠΡ€Π½Π° ΠΊΡƒΡ€ΡˆΡƒΠΌΠ°. ВсС ΠΏΠ°ΠΊ трябва Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ прСдстава ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Postgres, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ рСпликацията ΠΈ ΠΊΠ°ΠΊ Patroni Ρ€Π°Π±ΠΎΡ‚ΠΈ с Postgres, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° взаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° поправямС Ρ€ΡŠΡ‡Π½ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Как ΠΏΠΎΠ΄Ρ…ΠΎΠΆΠ΄Π°ΠΌ към Π²ΡŠΠΏΡ€ΠΎΡΠ° Π·Π° диагностика? ΠŸΠΎΠ»ΡƒΡ‡ΠΈ сС Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈ Π½ΠΈΠΊΠΎΠΉ няма стСк ELK, ΠΈ сС Π½Π°Π»Π°Π³Π° Π΄Π° сС справям Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅, отварянСто Π½Π° 6 ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ ΠΈ 2 Ρ‚Π°Π±Π°. Π’ Π΅Π΄ΠΈΠ½ Ρ‚Π°Π± са Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Patroni Π·Π° всСки възСл, Π² другия Ρ‚Π°Π± – Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Consul ΠΈΠ»ΠΈ Postgres ΠΏΡ€ΠΈ Π½ΡƒΠΆΠ΄Π°. ДиагностициранСто Π½Π° Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ.

Какви ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…? ΠŸΡŠΡ€Π²ΠΎ, Π²ΠΈΠ½Π°Π³ΠΈ Π³Π»Π΅Π΄Π°ΠΌ, ΠΊΠΎΠ³Π° Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈΠ» Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚. И Π·Π° ΠΌΠ΅Π½ Ρ‚ΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄ Π²ΠΎΠ΄ΠΎΠ΄Π΅Π». Π“Π»Π΅Π΄Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случило ΠΏΡ€Π΅Π΄ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π°, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π° ΠΈ слСд Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π°. Π€Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚ ΠΈΠΌΠ° Π΄Π²Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ: Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΡ€Π°ΠΉ.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° провСрявам Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅, Π·Π° Π΄Π° видя ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° ΠΏΡ€Π΅Π΄ΠΈ Ρ„Π΅ΠΉΠ»Π°, Ρ‚.Π΅. Ρ‚ΡŠΡ€ΡΡ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° Π½Π°ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ Π½Π° Ρ„Π΅ΠΉΠ»Π°.

И Ρ‚ΠΎΠ²Π° Π΄Π°Π²Π° прСдстава ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случвало ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ обстоятСлства (ΠΈ вслСдствиС Π΄Π° Π½Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈ Ρ„Π΅ΠΉΠ»).

КъдС обикновСно глСдамС? Аз глСдам:

  • ΠŸΡŠΡ€Π²ΠΎ Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Patroni.
  • Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π³Π»Π΅Π΄Π°ΠΌ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Postgres ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° DCS Π² зависимост ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ съм Π½Π°ΠΌΠ΅Ρ€ΠΈΠ» Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Patroni.
  • Π›ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° систСмата ΡΡŠΡ‰ΠΎ понякога Π΄Π°Π²Π°Ρ‚ прСдстава Π·Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Ρ„Π΅ΠΉΠ»Π°.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Как Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌ Patroni? Π’ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌ Patroni ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΎ. Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΌΠ΅Π½, Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ днСс. Π—Π½Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ. Π’ΠΎΠ²Π° са Stolon, Repmgr, Pg_auto_failover, PAF. Π§Π΅Ρ‚ΠΈΡ€ΠΈ инструмСнта. ΠžΠΏΠΈΡ‚Π²Π°Π» съм всички тях. Patroni ΠΌΠΈ харСса Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ.

Ако ΠΌΠ΅ ΠΏΠΎΠΏΠΈΡ‚Π°Ρ‚: "ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π»ΠΈ Patroni?". Π©Π΅ ΠΊΠ°ΠΆΠ° Π΄Π°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Patroni ΠΌΠΈ харСсва. И ΠΌΠΈ сС струва, Ρ‡Π΅ Π½Π°ΡƒΡ‡ΠΈΡ… ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌ.

Ако Π²ΠΈ интСрСсува Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ с Patroni, освСн спомСнатитС ΠΎΡ‚ ΠΌΠ΅Π½, Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посСтитС страницата issues Π² GitHub. Π’Π°ΠΌ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ истории ΠΈ сС ΠΎΠ±ΡΡŠΠΆΠ΄Π°Ρ‚ интСрСсни ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка сС рСгистрират ΠΈ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ бъговС, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π° Π΅ интСрСсно Ρ‡Π΅Ρ‚ΠΈΠ²ΠΎ.

Π’Π°ΠΌ ΠΈΠΌΠ° интСрСсни истории Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Ρ…ΠΎΡ€Π°Ρ‚Π° си врСдят сами. Много ΠΏΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ. Π§ΠΈΡ‚Π΅Ρˆ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρˆ, Ρ‡Π΅ Ρ‚Π°ΠΊΠ° Π½Π΅ трябва Π΄Π° сС ΠΏΡ€Π°Π²ΠΈ. ΠŸΠΎΡΡ‚Π°Π²ΠΈΠ» си ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ°.

И Π±ΠΈΡ… искал Π΄Π° благодаря Π½Π° компанията Zalando Π·Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ ΠšΡƒΠΊΡƒΡˆΠΊΠΈΠ½ ΠΈ АлСксСй Клюкин. АлСксСй Клюкин – Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΡΡŠΠ°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅, Π²Π΅Ρ‡Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Zalando, Π½ΠΎ Ρ‚ΠΎΠ²Π° са Π΄Π²Π°ΠΌΠ°Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚.

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

Π‘ Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅. Ако ΠΈΠΌΠ°Ρ‚Π΅ Π²ΡŠΠΏΡ€ΠΎΡΠΈ, Π½Π΅ сС ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡ‚Π΅ Π΄Π° ΠΏΠΈΡ‚Π°Ρ‚Π΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π» Π½Π° Patroni ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° сринСтС кластСр Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ΡŠΠΏΡ€ΠΎΡΠΈ

Благодаря Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! Ако слСд Ρ„Π΅ΠΉΠ»Π° всС ΠΎΡ‰Π΅ трябва Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ, Π·Π°Ρ‰ΠΎ Π½ΠΈ Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ Ρ„Π΅ΠΉΠ»?

Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅Ρ‰ΠΎ Π½ΠΎΠ²ΠΎ. Π Π°Π±ΠΎΡ‚ΠΈΠΌ с Π½Π΅Π³ΠΎ само ΠΎΡ‚ Π³ΠΎΠ΄ΠΈΠ½Π°. По-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° смС ΠΏΡ€Π΅Π΄ΠΏΠ°Π·Π»ΠΈΠ²ΠΈ. ИскамС Π΄Π° Π²Π»Π΅Π·Π΅ΠΌ ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΄Π°Π»ΠΈ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ трябва. Π’ΠΎΠ²Π° Π΅ стСпСн Π½Π° Π²ΡŠΠ·Ρ€Π°ΡΡ‚Π½ΠΎ Π½Π΅Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ – ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

НапримСр, сутринта влязохмС ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π°Ρ…ΠΌΠ΅, Π½Π°Π»ΠΈ?

НС сутринта, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π°ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π·Π° Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π° практичСски Π²Π΅Π΄Π½Π°Π³Π°. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ увСдомлСния ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Π΅ станал Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€. ΠŸΠΎΡ‡Ρ‚ΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π²Π»ΠΈΠ·Π°ΠΌΠ΅ ΠΈ провСрявамС. Но всички Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ изнСсСни Π½Π° Π½ΠΈΠ²ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. Ако сС ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ с Patroni Ρ‡Ρ€Π΅Π· REST API, ΠΈΠΌΠ° история. По историята ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π°ΡΡ‚ΡŠΠΏΠΈΠ» Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€. На Ρ‚Π°Π·ΠΈ основа ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. МоТСм Π΄Π° наблюдавамС историята, ΠΊΠΎΠ»ΠΊΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π΅ ΠΈΠΌΠ°Π»ΠΎ. Ако ΠΈΠΌΠ°ΠΌΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°, Π·Π½Π°Ρ‡ΠΈ Π΅ станал Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€. МоТСм Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ. Или Π½Π°ΡˆΠ°Ρ‚Π° автоматизация Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»Π°, Ρ‡Π΅ всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ са Π½Π° място, няма Π·Π°Π΄Ρ€ΡŠΡΡ‚Π²Π°Π½ΠΈΡ ΠΈ всичко Π΅ Π½Π°Ρ€Π΅Π΄.

Благодаря!

Много благодаря Π·Π° чудСсния Ρ€Π°Π·ΠΊΠ°Π·! Ако смС изнСсли ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° DCS Π΄Π°Π»Π΅Ρ‡ ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Postgres, трябва Π»ΠΈ ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ Π΄Π° сС обслуТва? Какви са Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ относно Ρ‚ΠΎΠ²Π° Π΄Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ части ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° DCS, Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ Π½Π΅Ρ‰ΠΎ с тях ΠΈ Ρ‚.Π½.? Как ΠΏΡ€ΠΈ Ρ‚ΠΎΠ²Π° ΠΆΠΈΠ²Π΅Π΅ цялата конструкция? И ΠΊΠ°ΠΊ Π΄Π° сС справямС с Ρ‚Π΅Π·ΠΈ Π½Π΅Ρ‰Π°?

Π—Π° Π΅Π΄Π½Π° компания бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠ²ΠΎ сС случва, Π°ΠΊΠΎ някой ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ няколко ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° сС провалят. Π’ Ρ‚Π°Π·ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° послСдоватСлно Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ всички ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌΠ΅ сцСнарии Π·Π° ΠΎΡ‚ΠΊΠ°Π· Π½Π° Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Π·Π° всСки сцСнарий Π½Π° ΠΎΡ‚ΠΊΠ°Π· ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠ»Π°Π½ Π·Π° дСйствиС Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅. И Π² случай Π½Π° DCS Ρ‚ΠΎΠ²Π° Π΅ част ΠΎΡ‚ стандартната инфраструктура. И Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‚ΠΎΠ²Π° администрира, Π° Π½ΠΈΠ΅ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ Π½Π° администраторитС, ΠΊΠΎΠΈΡ‚ΠΎ администрират, ΠΈ Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ способности Π΄Π° Π³ΠΎ поправят ΠΏΡ€ΠΈ авария. Ако DCS ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π³ΠΎ няма, Π½ΠΈΠ΅ Π³ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°ΠΌΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ слСдим особСно, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ смС ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° инфраструктурата, Π½ΠΎ Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄Π° сС наблюдава.

Π’.Π΅. ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π»ΠΈ Ρ€Π°Π·Π±Ρ€Π°Ρ…, Ρ‡Π΅ трябва Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌ Patroni, Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€Π°, Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌ всичко ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° направя Π½Π΅Ρ‰ΠΎ с хостовСтС?

Π’ΠΎΠ²Π° зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎ възли ΠΈΠΌΠ°ΠΌΠ΅ Π² DCS ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Ако Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π°ΠΊΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΠΌ само Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ (Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°), ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Π·Π°ΠΏΠ°Π·Π²Π° ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ°. И Patroni остава работоспособСн. И Π½ΠΈΡ‰ΠΎ Π½Π΅ сС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π²Π°. Ако ΠΈΠΌΠ°ΠΌΠ΅ някакви слоТни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ засягат ΠΏΠΎΠ²Π΅Ρ‡Π΅ възли, ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π·Ρ€ΡƒΡˆΠΈ ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ°, Ρ‚ΠΎ – Π΄Π°, вСроятно ΠΈΠΌΠ° смисъл Π΄Π° поставим Patroni Π½Π° ΠΏΠ°ΡƒΠ·Π°. Π’ΠΎΠΉ ΠΈΠΌΠ° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° – patronictl pause, patronictl resume. ΠŸΡ€ΠΎΡΡ‚ΠΎ поставямС Π½Π° ΠΏΠ°ΡƒΠ·Π°, ΠΈ Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚ Π½Π΅ сработва Π² Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅. ΠŸΡ€Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° DCS ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, слСд Ρ‚ΠΎΠ²Π° свалямС ΠΏΠ°ΡƒΠ·Π°Ρ‚Π° ΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΠΆΠΈΠ²Π΅Π΅ΠΌ.

Много благодаря!

Благодаря ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! Как продуктният Π΅ΠΊΠΈΠΏ Π³Π»Π΅Π΄Π° Π½Π° Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС изгубят?

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΈ Π΅ΠΊΠΈΠΏΠΈ Π½Π΅ сС притСсняват, Π½ΠΎ Ρ‚ΠΈΠΌΠ»ΠΈΠ΄ΠΈΡ‚Π΅ са Π·Π°Π³Ρ€ΠΈΠΆΠ΅Π½ΠΈ.

Какви Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ ΠΈΠΌΠ°ΠΌΠ΅?

Π’ΡƒΠΊ с Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈΡ‚Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Има Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ ΠšΡƒΠΊΡƒΡˆΠΊΠΈΠ½ β€žΠšΠ°ΠΊ Π΄Π° изчислим RPO ΠΈ RTOβ€œ, Ρ‚.Π΅. Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ. Мисля, Ρ‡Π΅ трябва Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ Ρ‚Π΅Π·ΠΈ слайдовС ΠΈ Π΄Π° Π³ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅. ΠžΡ‚ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ помня, Ρ‚Π°ΠΌ ΠΈΠΌΠ° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ Π·Π° изчисляванС Π½Π° Ρ‚Π΅Π·ΠΈ Π½Π΅Ρ‰Π°. Колко Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ, ΠΊΠΎΠ»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ. ΠšΠ°Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ синхронна рСпликация Π½Π° Π½ΠΈΠ²ΠΎ Patroni, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π½ΠΎΠΆ с Π΄Π²Π΅ остриСта: ΠΈΠ»ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ надСТдност Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΈΠ»ΠΈ Π³ΡƒΠ±ΠΈΠΌ Π² скорост. Има синхронна рСпликация, Π½ΠΎ тя ΡΡŠΡ‰ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° 100%-Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ.

АлСксСй, благодаря Π·Π° прСкрасния Π΄ΠΎΠΊΠ»Π°Π΄! Има Π»ΠΈ ΠΎΠΏΠΈΡ‚ Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Patroni Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° Π½ΠΈΠ²ΠΎ Π½ΡƒΠ»Π°? Π’.Π΅. Π² ΡΡŠΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ с синхронСн standby? Π’ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Π²ΡŠΠΏΡ€ΠΎΡ. И вторият Π²ΡŠΠΏΡ€ΠΎΡ. Π’ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. НиС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ Repmgr, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ ΠΈ сСга ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€. И Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Patroni ΠΊΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Какво ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π·Π° прСдимствата ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Repmgr?

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π²ΡŠΠΏΡ€ΠΎΡ бСшС Π·Π° синхронни Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Няма Π½ΠΈΠΊΠΎΠΉ, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° синхронна рСпликация, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π° всички ΠΈΠΌ Π΅ страх (Π’Π΅Ρ‡Π΅ я ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ няколко ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с производитСлността Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π΅ смС забСлязвали β€” Π‘Π΅Π»Π΅ΠΆΠΊΠ° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Ρ‡ΠΈΠΊΠ°). Но Π½ΠΈΠ΅ ΠΈΠ·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…ΠΌΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π·Π° синхронна рСпликация трябва Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ½Π΅ Ρ‚Ρ€ΠΈ възли, Π·Π°Ρ‰ΠΎΡ‚ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° възла ΠΈ Π°ΠΊΠΎ ΠΌΠ°ΡΡ‚Π΅Ρ€ΡŠΡ‚ ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° сС провалят, Patroni ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π° Ρ‚ΠΎΠ·ΠΈ възСл Π² Standalone Ρ€Π΅ΠΆΠΈΠΌ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΈΠΌΠ° рисковС ΠΎΡ‚ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ.

ΠžΡ‚Π½ΠΎΡΠ½ΠΎ втория Π²ΡŠΠΏΡ€ΠΎΡ, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ Repmgr ΠΈ всС ΠΎΡ‰Π΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΈ някои ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΏΠΎ историчСски ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ. Какво ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅? Π’ Patroni Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚ ΠΈΠ΄Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π² Repmgr Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€ΡŠΡ‚ Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° функция, която трябва Π΄Π° сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°. Врябва Π΄Π° стартирамС Repmgr Π΄Π΅ΠΌΠΎΠ½ Π½Π° всСки възСл ΠΈ Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° настроим Π°Π²Ρ‚ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ€.

Repmgr провСрява – Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π»ΠΈ са Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Postgres. ΠŸΡ€ΠΎΡ†Π΅ΡΠΈΡ‚Π΅ Π½Π° Repmgr провСряват ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ Π½Π° Π΄Ρ€ΡƒΠ³, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ слоТни случаи Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° изолация, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ голям Repmgr ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π΄Π΅Π»ΠΈ Π½Π° няколко ΠΌΠ°Π»ΠΊΠΈ ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. ΠžΡ‚Π΄Π°Π²Π½Π° Π½Π΅ слСдя Repmgr, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Ρ‚ΠΎΠ²Π° Π΅ поправСно… Π° ΠΌΠΎΠΆΠ΅ ΠΈ Π½Π΅. Π˜Π·Π½Π°ΡΡΠ½Π΅Ρ‚ΠΎ Π½Π° информация Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π² DCS, ΠΊΠ°ΠΊΡ‚ΠΎ правят Stolon ΠΈ Patroni, Π΅ Π½Π°ΠΉ-Тивият Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

АлСксСй, ΠΈΠΌΠ°ΠΌ Π²ΡŠΠΏΡ€ΠΎΡ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ прост. Π’ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ DCS изнСсохтС ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° машина Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ възСл. Π Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π΅ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ° свои особСности, тя сама ΠΏΠΎ сСбС си ΠΆΠΈΠ²Π΅Π΅. И ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ станС, Π°ΠΊΠΎ ΠΏΠΎ някаква ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° DCS ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ станС Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½? НС Π±ΠΈΡ… искал Π΄Π° говоря Π·Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅, Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ: ΠΎΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ дСйствия Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ†ΠΈΡ‚Π΅ Π΄ΠΎ Ρ€Π΅Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

НС Π³ΠΎ спомСнах Π½Π° глас, Π½ΠΎ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ DCS ΡΡŠΡ‰ΠΎ трябва Π΄Π° бъдС отказоустойчив, Ρ‚.Π΅. Π½Π΅Ρ‡Π΅Ρ‚Π΅Π½ Π±Ρ€ΠΎΠΉ възли, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΊΠ²ΠΎΡ€ΡƒΠΌΡŠΡ‚ Π΄Π° сС ΡΡŠΠ±Π΅Ρ€Π΅. Какво сС случва, Π°ΠΊΠΎ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ DCS станС Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΡŠΠ±Π΅Ρ€Π΅ ΠΊΠ²ΠΎΡ€ΡƒΠΌ, Ρ‚.Π΅. някакъв ΠΌΡ€Π΅ΠΆΠΎΠ² сплит ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Π· Π½Π° възли? Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Patroni ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Patroni Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈ. Π’ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с DCS ΠΈ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Ρ‚Π°ΠΌ, Π·Π°Ρ‚ΠΎΠ²Π° цСлият ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. И Ρ‡Π°ΠΊΠ° ΠΈΠ»ΠΈ Π·Π° Ρ€ΡŠΡ‡Π½ΠΎ намСса ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ DCS сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ.

Π“Ρ€ΡƒΠ±ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, DCS Π·Π° нас става услуга, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½Π°, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΈ самата Π±Π°Π·Π°?

Π”Π°, Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Service Discovery Π΅ Π½Π΅ΠΎΡ‚ΠΌΠ΅Π½Π½Π° част ΠΎΡ‚ инфраструктурата. Вя сС внСдрява Π΄ΠΎΡ€ΠΈ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π΅ Π½Π°Π»ΠΈΡ‡Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π² инфраструктурата. Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, стартирахмС инфраструктурата, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ…ΠΌΠ΅ сС Π² Π”Π¦ ΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Service Discovery. Ако Ρ‚ΠΎΠ²Π° Π΅ Consul, Π½Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС построи ΠΈ DNS. Ако Π΅ Etcd, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС част ΠΎΡ‚ кластСра Kubernetes, Π² ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚ всички останали рСсурси. Бмятам, Ρ‡Π΅ Service Discovery Π²Π΅Ρ‡Π΅ Π΅ Π½Π΅ΠΎΡ‚ΠΌΠ΅Π½Π½Π° част ΠΎΡ‚ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ инфраструктури. И Π·Π° Π½Π΅Π³ΠΎ сС мисли ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π·Π° Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ.

Благодаря!

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster