Orchestrator ΠΈ VIP ΠΊΠ°ΠΊ HA-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для кластСра MySQL

Π’ Π‘ΠΈΡ‚ΠΈΠΌΠΎΠ±ΠΈΠ» ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… MySQL Π² качСствС основного Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° постоянных Π΄Π°Π½Π½Ρ‹Ρ…. Π£ нас Π΅ΡΡ‚ΡŒ нСсколько кластСров Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСрвисы ΠΈ Ρ†Π΅Π»ΠΈ.

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Π°Ρ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ мастСра являСтся критичСским ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ работоспособности всСй систСмы ΠΈ Π΅Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… частСй. АвтоматичСскоС восстановлСниС кластСра Π² случаС ΠΎΡ‚ΠΊΠ°Π·Π° мастСра сильно сниТаСт врСмя рСагирования Π½Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ ΠΈ врСмя простоя систСмы. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ схСму обСспСчСния высокой доступности (HA) кластСра MySQL Π½Π° основС MySQL Orchestrator ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… IP адрСсов (VIP).

Orchestrator ΠΈ VIP ΠΊΠ°ΠΊ HA-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для кластСра MySQL

HA-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° основС VIP

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎ расскаТу ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт наша систСма хранСния Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ схСму Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ с ΠΎΠ΄Π½ΠΈΠΌ мастСром, доступным Π½Π° запись, ΠΈ мноТСством Ρ€Π΅ΠΏΠ»ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. ΠšΠ»Π°ΡΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ мастСр β€” ΡƒΠ·Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ являСтся ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΎΠΉ, ΠΈ мастСром для Π΄Ρ€ΡƒΠ³ΠΈΡ…. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌ Ρ‡Π΅Ρ€Π΅Π· HAProxy, Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ИспользованиС HAProxy обусловлСно историчСскими ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ, ΠΈ сСйчас ΠΌΡ‹ Π² процСссС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ProxySQL.

РСпликация выполняСтся Π² полусинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π° основС GTID. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Π² ΠΆΡƒΡ€Π½Π°Π», ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ·Π½Π°Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ. Π’Π°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ обСспСчиваСт ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… Π² случаС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· строя Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°. Π’ основном всС измСнСния ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ мастСра ΠΊ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Row Based Replication (RBR), Π½ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΡƒΠ·Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ mixed binlog format.

ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ пСриодичСски обновляСт состояниС Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ кластСра, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π² случаС возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ автоматичСского восстановлСния. Π—Π° саму ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами: Π½Π° основС VIP, DNS, с использованиСм слуТб обнаруТСния сСрвисов (service discovery) ΠΈΠ»ΠΈ самописных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ².

Одним ΠΈΠ· простых способов восстановлСния мастСра Π² случаС Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π° являСтся использованиС ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ… VIP-адрСсов.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС:

  • VIP β€” это IP-адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ привязан ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ физичСскому сСтСвому интСрфСйсу. ΠŸΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡƒΠ·Π»Π° ΠΈΠ· строя ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ VIP Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ рСсурс с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ простоя.
  • ОсвобоТдСниС ΠΈ Π²Ρ‹Π΄Π°Ρ‡Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ IP-адрСса β€” Π΄Π΅ΡˆΠ΅Π²Ρ‹Π΅ ΠΈ быстрыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
  • Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с VIP трСбуСтся доступ ΠΊ сСрвСру ΠΏΠΎ SSH, Π»ΠΈΠ±ΠΎ использованиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, keepalived.

Рассмотрим Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с нашим мастСром ΠΈ прСдставим, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСского восстановлСния.

ΠŸΡ€ΠΎΠΏΠ°Π»Π° сСтСвая ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎ мастСра, Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Β«ΠΆΠ΅Π»Π΅Π·Π°Β», ΠΈ сСрвСр нСдоступСн

  1. ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ обновляСт Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡŽ кластСра, каТдая Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° сообщаСт ΠΎ нСдоступности мастСра. ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ запускаСт процСсс Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, подходящСй Π½Π° Ρ€ΠΎΠ»ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ мастСра, ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ восстановлСниС.
  2. ΠŸΡ‹Ρ‚Π°Π΅ΠΌΡΡ ΡΠ½ΡΡ‚ΡŒ VIP со старого мастСра β€” Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.
  3. Π Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° Ρ€ΠΎΠ»ΡŒ мастСра. Вопология пСрСстраиваСтся.
  4. ДобавляСм Π½ΠΎΠ²Ρ‹ΠΉ сСтСвой интСрфСйс с VIP. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΠ½ΡΡ‚ΡŒ VIP Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ запускаСм ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ запроса gratuitous ARP. Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ запроса/ΠΎΡ‚Π²Π΅Ρ‚Π° позволяСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π°Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ соотвСтствия IP- ΠΈ MAC-адрСсов, Ρ‚Π΅ΠΌ самым увСдомляя ΠΎ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π΅ нашСго VIP. Π­Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ split brain ΠΏΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ старого мастСра.
  5. ВсС Π½ΠΎΠ²Ρ‹Π΅ соСдинСния сразу ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ мастСр. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ соСдинСния Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ обращСния ΠΊ Π‘Π” Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния.

Π‘Π΅Ρ€Π²Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΎΡ‚ΠΊΠ°Π· Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π£Π‘Π”

Алгоритм Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ запуск процСсса восстановлСния. Π’Π°ΠΊ ΠΊΠ°ΠΊ сСрвСр доступСн, ΠΌΡ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ освобоТдаСм VIP Π½Π° старом мастСрС, пСрСносим Π΅Π³ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΈ отправляСм нСсколько ARP-запросов. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ старого мастСра Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° пСрСстроСнный кластСр ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

ΠžΡ‚ΠΊΠ°Π· Ρ€Π΅ΠΏΠ»ΠΈΠΊ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… мастСров Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ автоматичСским дСйствиям ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСтСвой интСрфСйс всСгда добавляСтся Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сСрвСра VIP автоматичСски Π½Π΅ назначаСтся. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр Π‘Π” ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ запускаСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, оркСстратор автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ мастСр Π½Π° запись ΠΈ ΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ read only Π½Π° старом мастСрС. Π­Ρ‚ΠΈ дСйствия Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ вСроятности split brain.

Π’ процСссС восстановлСния ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоит Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· UI оркСстратора ΠΏΠΎΠΌΠΈΠΌΠΎ стандартных срСдств ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. ΠœΡ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ REST API, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ (PR сСйчас находится Π½Π° рассмотрСнии).

ΠžΠ±Ρ‰Π°Ρ схСма HA-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ прСдставлСна Π½ΠΈΠΆΠ΅.

Orchestrator ΠΈ VIP ΠΊΠ°ΠΊ HA-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для кластСра MySQL

Π’Ρ‹Π±ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ мастСра

ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ достаточно ΡƒΠΌΡ‘Π½ ΠΈ стараСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ Π² качСствС Π½ΠΎΠ²ΠΎΠ³ΠΎ мастСра ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ критСриям:

  • отставаниС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΎΡ‚ мастСра;
  • вСрсия MySQL мастСра ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ;
  • Ρ‚ΠΈΠΏ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (RBR, SBR ΠΈΠ»ΠΈ mixed);
  • располоТСниС Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ…;
  • Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ errant GTID β€” Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅ ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° мастСрС;
  • Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π²Ρ‹Π±ΠΎΡ€Π°.

НС каТдая Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° являСтся ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ Π½Π° Ρ€ΠΎΠ»ΡŒ мастСра. НапримСр, Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования Π΄Π°Π½Π½Ρ‹Ρ…, Π»ΠΈΠ±ΠΎ сСрвСр ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π°Π±ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Β«ΠΆΠ΅Π»Π΅Π·Π°Β». ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€ΡƒΡ‡Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свои прСдпочтСния ΠΏΠΎ Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π° ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ….

ВрСмя рСагирования ΠΈ восстановлСния

Π’ случаС ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π° Π²Π°ΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя простоя систСмы, поэтому рассмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ MySQL, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° построСниС ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ кластСра оркСстратором:

  • slave_net_timeout β€” количСство сСкунд, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ поступлСния Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ heartbeat-сигнала ΠΎΡ‚ мастСра, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ соСдинСниС признаСтся потСрянным ΠΈ выполняСтся ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π§Π΅ΠΌ мСньшС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π΅ΠΌ быстрСС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° смоТСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ связь с мастСром Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π°. ΠœΡ‹ устанавливаСм это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½Ρ‹ΠΌ 5 сСкундам.
  • MASTER_CONNECT_RETRY β€” количСство сСкунд ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’ случаС сСтСвых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ быстро ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ запуск процСсса восстановлСния кластСра. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” 1 сСкунда.
  • MASTER_RETRY_COUNT β€” максимальноС количСство ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • MASTER_HEARTBEAT_PERIOD β€” ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π² сСкундах, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ мастСр отправляСт heartbeat-сигнал. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π΅Π½ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ значСния slave_net_timeout.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ оркСстратора:

  • DelayMasterPromotionIfSQLThreadNotUpToDate β€” Ссли Ρ€Π°Π²Π΅Π½ true, Ρ‚ΠΎ Ρ€ΠΎΠ»ΡŒ мастСра Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° SQL-ΠΏΠΎΡ‚ΠΎΠΊ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ всС Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ· Relay Log. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ эту ΠΎΠΏΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Π΅Ρ€ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² условиях отставания всСх Ρ€Π΅ΠΏΠ»ΠΈΠΊ-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ².
  • InstancePollSeconds β€” частота построСния ΠΈ обновлСния Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ.
  • RecoveryPollSeconds β€” частота Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π’ случаС обнаруТСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ запускаСтся восстановлСниС Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π­Ρ‚ΠΎ константа, равная 1 сСкундС.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» кластСра ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ оркСстратором ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² InstancePollSeconds сСкунд. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ состояниС кластСра ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ обновляСтся, Π° Π·Π°Ρ‚Π΅ΠΌ принимаСтся ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ восстановлСния. ЭкспСримСнтируя с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π‘Π” ΠΈ оркСстратора, Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ рСагирования ΠΈ восстановлСния Π΄ΠΎ 30 сСкунд.

ВСстовый стСнд

ВСстированиС HA-схСмы ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ локального тСстового стСнда ΠΈ дальнСйшСго внСдрСния Π² тСстовоС ΠΈ Π±ΠΎΠ΅Π²ΠΎΠ΅ окруТСния. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ стСнд ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° основС Docker ΠΈ позволяСт ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ оркСстратора ΠΈ сСти, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ кластСр ΠΎΡ‚ 2-3 сСрвСров Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ учСния Π² бСзопасной срСдС.

Π’ΠΎ врСмя ΡƒΡ‡Π΅Π½ΠΈΠΉ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² эмуляции ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΎΡ‚ΡΡ‚Ρ€Π΅Π»ΠΈΡ‚ΡŒ мастСр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ kill -9, мягко Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ процСсс ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСрвСр (docker-compose stop), ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠ΅Ρ‚ΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ iptables -j REJECT ΠΈΠ»ΠΈ iptables -j DROP. ΠœΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

  • оркСстратор ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с мастСром ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡŽ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π·Π° 10 сСкунд;
  • автоматичСски запустится ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° восстановлСния: измСнится сСтСвая конфигурация, Ρ€ΠΎΠ»ΡŒ мастСра ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘Ρ‚ ΠΊ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅, топология пСрСстроится;
  • Π½ΠΎΠ²Ρ‹ΠΉ мастСр станСт доступСн для записи, ΠΆΠΈΠ²Ρ‹Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны Π² процСссС пСрСстроСния;
  • Π΄Π°Π½Π½Ρ‹Π΅ Π½Π°Ρ‡Π½ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹ΠΉ мастСр ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ;
  • ΠΎΠ±Ρ‰Π΅Π΅ врСмя восстановлСния составит Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 30 сСкунд.

Как Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, систСма ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² тСстовом ΠΈ production-окруТСниях ΠΈΠ·-Π·Π° Ρ€Π°Π·Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Β«ΠΆΠ΅Π»Π΅Π·Π°Β» ΠΈ сСти, Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² синтСтичСской ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈ Ρ‚.Π΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ пСриодичСски ΠΌΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ учСния Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях, провСряя, ΠΊΠ°ΠΊ Π²Π΅Π΄Π΅Ρ‚ сСбя систСма ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ сСтСвой связности ΠΈΠ»ΠΈ Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ Π΅Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… частСй. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΡƒΡŽ инфраструктуру для ΠΎΠ±Π΅ΠΈΡ… срСд ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ тСстированиС.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° систСмы хранСния Π΄Π°Π½Π½Ρ‹Ρ… являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных Π·Π°Π΄Π°Ρ‡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SRE ΠΈ эксплуатации. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ оркСстратора ΠΈ HA-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° основС VIP ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²:

  • Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ кластСра Π‘Π”;
  • автоматичСскоС ΠΈ быстроС Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Ρ‹, связанныС с мастСром, Ρ‡Ρ‚ΠΎ сниТаСт врСмя простоя систСмы.

Однако Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свои ограничСния ΠΈ нСдостатки:

  • ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ HA-схСмы Π½Π° нСсколько Π¦ΠžΠ”ΠΎΠ² ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия Π΅Π΄ΠΈΠ½ΠΎΠΉ L2-сСти ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ;
  • ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ VIP Π½Π° Π½ΠΎΠ²ΠΎΠΌ мастСрС, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° старом. ΠŸΡ€ΠΎΡ†Π΅ΡΡ являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя восстановлСния;
  • освобоТдСниС VIP Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ SSH-доступа ΠΊ сСрвСру, Π»ΠΈΠ±ΠΎ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ способа Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сСрвСр ΠΈΠ»ΠΈ Π‘Π” испытываСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΠ΅ процСсс восстановлСния, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ снятиС VIP Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΡƒΠ΄Π°Ρ‡Π½ΠΎ. А это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ появлСнию Π΄Π²ΡƒΡ… сСрвСров с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ IP-адрСсом ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ split brain.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ split brain, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ STONITH (Β«Shoot The Other Node In The HeadΒ»), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΡƒΠ·Π΅Π». Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ высокой доступности кластСра: комбинация VIP ΠΈ DNS, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ слуТб ΠΈ прокси-сСрвисы, синхронная рСпликация ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ способы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ свои нСдостатки ΠΈ прСимущСства.

Π― рассказал ΠΎ нашСм ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΊ созданию отказоустойчивого кластСра MySQL. Он прост Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ обСспСчиваСт ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ надСТности Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… условиях. По ΠΌΠ΅Ρ€Π΅ развития всСй систСмы Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈ инфраструктуры Π² частности этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, нСсомнСнно, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

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