Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PostgreSQL High Availability in 2019

PostgreSQL High Availability in 2019

Slides from my talk at RIT conference 2019, Moscow

Alexey Lesovsky

May 28, 2019
Tweet

More Decks by Alexey Lesovsky

Other Decks in Programming

Transcript

  1. High availability: Postgres В идеале: • Мультимастер • Запись в

    разные дата-центры • OLTP low latency • Autofailover, self-recovery, rebalancing, ... 6
  2. High availability: Postgres На деле имеем: • Мультимастер имеет ограничения

    • Запись в мастер, чтение с реплик • Масса ручной работы • Регулярные тестовые переключения • Нужна экспертиза 7
  3. Postgres HA: варианты? Pgpool-II • Все плохо с производительностью •

    Неоптимальный пулинг • Хрупкий сам по себе • Чувствителен к проблемам сети 10
  4. Postgres HA: варианты? Велосипеды: • Shell-скрипты • Ansible • Комбинации

    разных инструментов: haproxy, keepalived, pgbouncer, dns, etc... 12
  5. Postgres HA: варианты? Велосипеды: • кастомизация • которая превращается в

    ад • и может ломаться в неподходящий момент 13
  6. Postgres HA: Итого • Дорого обслуживать • Отсутствие гибкости •

    Сложно масштабировать • Сложно управлять 14
  7. Repmgr • 2ndQuadrant • 2010-12-05 — First public release •

    https://repmgr.org/ • Python, C • Cluster management 16
  8. PAF • Dalibo → ClusterLabs • 2016-02-03 — Initial commit

    • https://github.com/ClusterLabs/PAF • Perl • Autofailover (Pacemaker, Corosync) 19
  9. pg_auto_failover • Citus Data (Microsoft) • 2019-05-02 — public release

    • https://github.com/citusdata/pg_auto_failover • Pure C • Autofailover (PostgreSQL extension) 20
  10. Сравнение • Обзор архитектур • Варианты установки и запуска •

    Управление кластером • Обеспечение HA • Итоги 23
  11. Сравнение • Обзор архитектур • Варианты установки и запуска •

    Управление кластером • Обеспечение HA • Итоги 24
  12. Цели архитектуры • Устранение угроз, смягчение последствий – Network split

    → Split-brain – Node failure → Service interruption • Кворум как реализация (источник истины) 25
  13. Архитектура Stolon Autofailover из коробки DCS как источник истины Клиенты

    работают с БД через proxy DCS – обязательный компонент 39
  14. Сравнение • Обзор архитектур • Варианты установки и запуска •

    Управление кластером • Обеспечение HA • Итоги 41
  15. Сравнение • Обзор архитектур • Варианты установки и запуска •

    Управление кластером • Обеспечение HA • Итоги 48
  16. Добавление узлов Резервное копирование с мастера Кастомизация: • Копирование с

    реплики • С резервных копий (wal-g, barman, backrest) • С помощью кастомного скрипта 50
  17. Добавление узлов Repmgr • Автоматически "repmgr standby clone" • Инициализация

    с реплик — ДА • Резервные копии — только Barman • Кастомное восстановление — ДА 51
  18. Добавление узлов Patroni • Автоматический процесс • Инициализация с реплик

    — ДА • Резервные копии — ДА • Кастомное восстановление — ДА 52
  19. Добавление узлов Stolon • Автоматический процесс • Инициализация с реплик

    — НЕТ • Резервные копии — только при bootstrap • Кастомное восстановление — НЕТ 53
  20. Добавление узлов 54 Repmgr Patroni Stolon Автоматически yes yes yes

    Инициализация с реплик yes yes no С резервных копий yes* yes yes** Кастомная инициализация yes yes no * - только Barman ** - только при bootstrap
  21. Repmgr • Пользователь имеет полный контроль над конфигурацией • postgresql.conf,

    postgresql.auto.conf • pg_hba.conf • recovery.conf 57 Управление конфигурацией
  22. Patroni • Частично под контролем Patroni • Параметры репликации •

    postgresql.conf vs. postgresql.base.conf 58 Управление конфигурацией
  23. Stolon • Полностью под контролем Stolon • Одинаковая конфигурация для

    всех узлов • Часть настроек неизменяема вообще* • postgresql.auto.conf → /dev/null 59 Управление конфигурацией * - https://github.com/sorintlab/stolon/blob/master/doc/postgres_parameters.md https://github.com/sorintlab/stolon/blob/master/cmd/keeper/cmd/keeper.go#L213
  24. Синхронная репликация Repmgr — настраивается руками Patroni — ДА (patronictl)

    Stolon — ДА (stolonctl) • Нельзя ANY, FIRST • Количество синх.реплик регулируется через параметры Stolon 61
  25. Дебаг и траблшутинг • Repmgr — свои логи • Patroni

    — свои логи, journald • Stolon — stdout, log-level, journald • Логи Postgres • Status-команды в cli-утилитах 63
  26. Сравнение • Обзор архитектур • Варианты установки и запуска •

    Управление кластером • Обеспечение HA • Итоги 64
  27. Обеспечение HA • Автофайловер, Свитчовер • Кастомизация • Фенсинг •

    Восстановление сбойных узлов • Требования к приложениям 65
  28. Автофайловер • Repmgr — как опция • Patroni — из

    коробки • Stolon — из коробки 66
  29. Свитчовер • Repmgr — из коробки • Patroni — из

    коробки • Stolon — нет, но есть workaround 67
  30. Обеспечение HA • Автофайловер, Свитчовер • Кастомизация • Фенсинг •

    Восстановление сбойных узлов • Требования к приложениям 68
  31. Обеспечение HA • Автофайловер, Свитчовер • Кастомизация • Фенсинг •

    Восстановление сбойных узлов • Требования к приложениям 73
  32. Фенсинг в Patroni Patroni: Linux Watchdog DCS: перезапуск в Read-Only

    Существующие соединения обрываются 75
  33. Фенсинг в Stolon Stolon: Удаление узла из clusterview DCS: Proxy

    перестает слушать интерфейс Существущие соединения обрываются Новые соединение не принимаются 76
  34. Обеспечение HA • Автофайловер, Свитчовер • Кастомизация • Фенсинг •

    Восстановление сбойных узлов • Требования к приложениям 77
  35. Восстановление Patroni, Stolon • full reinit, base backup, clone, etc…

    • pg_rewind • В худшем случае — руками 79
  36. Обеспечение HA • Автофайловер, Свитчовер • Кастомизация • Фенсинг •

    Восстановление сбойных узлов • Требования к приложениям 80
  37. Требование к приложению Repmgr — предоставляет ничего Patroni — авторегистрация

    сервисов в Consul (Consul DNS) Stolon — ручная регистрация сервисов в Consul (c 0.14) 82
  38. Сравнение • Обзор архитектур • Варианты установки и запуска •

    Управление кластером • Обеспечение HA • Итоги 83
  39. Итого Repmgr • Автофайловер как опция • Полная свобода в

    конфигурировании PG • Нет фенсинга • Event notifications • Baremetal setup 84
  40. Итого Stolon • Автофайловер из коробки • Есть фенсинг •

    Если у вас нет существенных требований к кастомизации • Cloud setup 86