2. Вызов: Кластер PostgreSQL
Мнение заказчика
● обеспечивает высокую доступность (HA)
● отказоустойчив (FT)
● распределяет нагрузку (LB)
● масштабируется на ходу
● живуч и надежен, как (...)
3. Через тернии в кластер
С точки зрения разработчика решения для
кластера Postgres, все кластерные стеки
одинаковы:
- внешние для Postgres
- любви к Postgres нет в коробке
11. Чем опасен split-brain?
Вызывает безусловное умножение
количества узлов с уникальными
ключевыми ролями (М,S), что создает:
● Недоступность обоих сплитов для
клиентов
● Потерю консистентности набора данных
● Невероятную сложность восстановления
12. M – Master
S – Sync
A – Async
X – Failed
Кворум – злейший враг Split-brain
● expected votes = 4
quorum = 3
green wins
13. M – Master
S – Sync
A – Async
X – Failed
Smoker cluster started
● expected votes = 4
quorum = 3
14. M – Master
S – Sync
A – Async
X – Failed
Async replica failed
● expected votes = 4
quorum = 3
quorate
15. M – Master
S – Sync
A – Async
X – Failed
Master failed
● expected votes = 4
quorum = 3
inquorate
16. M – Master
S – Sync
A – Async
X – Failed
Smoker cluster stopped
● expected votes = 4
quorum = 3
inquorate
17. Что можно исправить?
● Улучшить отказоустойчивость без
увеличения стоимости
● Создать перевес голосов в пользу мастера
и лучшего кандидата в мастеры –
синхронной реплики.
18. Vote Controlling Math
IF N is_odd THEN M = S
IF N is_even THEN M = S+1
M+S >= N/2+1
S > 1
A = 1
голоса
N — все
M – мастера
S – синхронной р.
A – асинх. р.
19. M – Master
S – Sync
A – Async
X – Failed
Healthy VCM cluster started
● expected votes = 7
quorum = 4
quorate
20. M – Master
S – Sync
A – Async
X – Failed
Async node failed in VC cluster
● expected votes = 5
quorum = 3
quorate
21. M – Master
S – Sync
A – Async
X – Failed
Master failed in VC cluster
● expected votes = 4
quorum = 3
quorate
22. M – Master
S – Sync
A – Async
X – Failed
VC cluster in crisis
● expected votes = 4
quorum = 3
quorate
23. M – Master
S – Sync
A – Async
X – Failed
+1 healty node added to VC
● expected votes = 5
quorum = 3
quorate
24. M – Master
S – Sync
A – Async
X – Failed
… another master failure in VC
● expected votes = 5
quorum = 3
quorate
25. M – Master
S – Sync
A – Async
X – Failed
+2 healthy nodes added in vc
● expected votes = 7
quorum = 4
quorate
28. Upscaled to 5 nodes
● expected votes = 9
quorum = 5
quorate
29. Upscaled to 6 nodes
● expected votes = 10
quorum = 6
quorate
30. Профит. (демо)
- Демо на стенде Postgres Professional
- Улучшаем PostgreSQL
- Улучшаем кластерные стеки
31. Патчи в PostgreSQL
pg_rewind
● недостаточно привилегий пользователя
репликации, что затрудняет автоматизацию
возращения мастера к строй
recovery.conf
● Изменение параметров репликации на данный
момент нельзя изменить без рестарта Postgres
32. Патчи в кластерные стеки
ocf_heartbeat_pgsql
добавление/удаление узлов приводит к
рестарту всех экземпляров PostgreSQL
(решено)