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

Transcript

87 slides
  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

More Decks by Alexey Lesovsky

Other Decks in Programming