TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Cloud4U - облачный провайдер

3 Sep, 17:59

Открыть в Telegram Поделиться Пожаловаться

☁️ Один сервер PostgreSQL может стать точкой отказа для всей почтовой системы

Если PostgreSQL используется почтовым сервером, его отказ затрагивает не только базу. Вместе с ней могут остановиться переписка, согласования и другие рабочие процессы. Поэтому для критичной инфраструктуры недостаточно просто иметь резервную копию базы: важно обеспечить автоматическое переключение на рабочий узел.

Один из вариантов такой архитектуры можно собрать всего на трёх виртуальных машинах.

▫️ Patroni следит за состоянием PostgreSQL и при отказе основного узла автоматически переводит реплику в роль нового мастера.

▫️ etcd хранит состояние кластера и обеспечивает консенсус. Кворум из трёх узлов защищает от ситуации, когда несколько серверов одновременно считают себя главным.

▫️ HAProxy становится единой точкой входа. Он определяет через Patroni, какой узел сейчас является мастером, и направляет подключения только к нему. Почтовому серверу при этом не нужно знать о топологии базы.

Получается следующая схема:

PostgreSQL → репликация → автоматический failover
etcd → определяет лидера и обеспечивает кворум
HAProxy → направляет подключения на актуальный мастер

При этом есть важный нюанс с репликацией. В асинхронном режиме кластер работает производительнее, но при внезапном отказе мастера можно потерять последние транзакции, которые ещё не успели попасть на реплику. Если такая потеря недопустима, Patroni поддерживает синхронную репликацию. В этом случае запись может остановиться при недоступности реплики.

То есть при настройке отказоустойчивости приходится выбирать между доступностью системы и гарантией сохранности последних данных.

Для почтовой системы это особенно важно: мало просто иметь два узла PostgreSQL. Нужно решить сразу три задачи: автоматически выбрать нового мастера, не допустить split-brain и сохранить единую точку подключения для приложения.

В блоге мы собрали готовую реализацию этой схемы для RuPost: три ВМ, PostgreSQL, Patroni, etcd и HAProxy. Конфигурации, systemd-юниты и вспомогательные скрипты вынесли в открытый репозиторий, чтобы кластер можно было развернуть по готовым шаблонам.

89 0 0 2
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot