Интеграционный практикум по отказоустойчивости
PostgreSQL на Proxmox VE и Ceph: ресурсы, отказ и восстановление
Курс связывает PostgreSQL, виртуальную машину Proxmox VE и Ceph в один проверяемый сценарий: подтверждение записи, ресурсы после отказа, самоизоляцию узла, восстановление Ceph, PITR и клиентскую приёмку.
Что вы сможете сделать
- Разделять ресурсы гостевой системы, резерв гипервизора и доступную мощность после отказа узла.
- Связывать подтверждение WAL и реплики с задержкой и заявленным RPO.
- Проверять кворум, самоизоляцию узла Proxmox VE, Corosync и восстановление Ceph отдельными наблюдениями.
- Проводить PITR и завершать испытание клиентской операцией с измеренным RTO.
1. PostgreSQL: WAL и подтверждение записи
Зафиксируйте, после какого устойчивого сброса PostgreSQL отвечает клиенту и какой отказ должна пережить эта запись.
PostgreSQL сначала сохраняет в WAL сведения, нужные для повторного применения изменения, и только потом может отложенно записать основные страницы. Контроллер и носитель должны честно выполнять запрос устойчивого сброса.
Наличие BBU не доказывает сохранение и последующее воспроизведение данных кэша. Это свойство тракта проверяют отдельно; полные образы страниц WAL решают другую задачу PostgreSQL.
2. Ресурсы ВМ и резерв после отказа
Размер ВМ определяют по измеренной нагрузке, а возможность перезапуска — по ресурсам каждого допустимого узла после резерва платформы.
ВМ должна помещаться на каждом узле, куда её разрешено перенести, после вычета резерва гипервизора. Свободные ресурсы, замеченные в один момент, не являются гарантированной резервацией.
Процессор, память и ввод-вывод принимают по счётчикам и хвосту задержки рабочей нагрузки. Схема N+1 должна выдерживать эту нагрузку после отказа одного узла, а не просто содержать ещё один сервер.
3. Proxmox VE: кворум, самоизоляция и Corosync
Сначала отделите общий принцип единственного владельца от механизма Proxmox VE HA: кворум разрешает решения, а старый узел должен прекратить исполнение гостя.
Кворум задаёт порог для кластерных решений. Он сам по себе не подтверждает точку данных PostgreSQL и не доказывает, что прежний владелец перестал обращаться к общему диску.
Для HA-управляемых гостей Proxmox VE использует кластерные блокировки и watchdog. Узел, который не вернул связь Corosync с кворумной частью, самоизолируется перезапуском; в испытании подтверждают остановку старого экземпляра до восстановления гостя на другом узле.
Corosync требует устойчивой малой задержки. Высокая скорость сети миграции не доказывает пригодность служебного канала; основной и резервный каналы проверяют отказом и наблюдением состояния кластера.
4. Ceph: RBD, копии и запас восстановления
Диск PostgreSQL проходит через RBD и реплицируемый пул Ceph; после отказа меняются доступная ёмкость и нагрузка восстановления.
RBD предоставляет блочное устройство поверх объектов Ceph. Для образа с включённой exclusive-lock после отказа владельца проверяют передачу блокировки и исключение соответствующего клиента, затем выполняют запись и чтение из PostgreSQL.
Параметр size задаёт число копий, min_size — порог доступности ввода-вывода. Состояние active ещё не означает завершённое восстановление, а правило CRUSH определяет допустимые устройства и домены отказа.
После отказа учитывают полезную ёмкость, запас и нагрузку восстановления. Сырая ёмкость и оценка MAX AVAIL сами по себе не отвечают, выдержит ли кластер заявленную нагрузку при восстановлении.
5. Реплика, архив WAL и PITR
RPO зависит от момента подтверждения реплики и сохранённой истории; PITR требует материалов восстановления и выбранной точки до ошибки.
Для синхронной реплики выбирают конкретную резервную сторону и этап подтверждения записи, сброса или применения. Асинхронная реплика может отставать, поэтому фактическое отставание связывают с RPO.
PITR по архиву требует подходящую базовую копию, непрерывную нужную часть WAL и цель до ошибки. Текущая реплика или снимок ВМ отдельно не доказывают наличие этого набора.
6. Приёмка полного сценария отказа
Испытание заканчивается успешной операцией клиента после восстановления; каждый слой оставляет собственные измерения и события.
Проверяют восстановленное содержимое и предусмотренную операцию клиента. Запущенный процесс PostgreSQL, состояние ВМ или успешное завершение задания резервного копирования сами по себе не закрывают приёмку.
Сценарий точно называет отказ: узел PVE, канал Corosync, OSD или RBD, PostgreSQL либо площадка. До запуска нового экземпляра подтверждают прекращение старой ВМ или её изоляцию; состояние Ceph фиксируют и клиентскую операцию измеряют в заранее согласованном состоянии пула.
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Следующий шаг
Сформулируйте задачу и уточните требования к своей системе.
Подготовить состав проектаОткроется черновик вопроса. Отправьте его, когда будете готовы.
Источники курса
Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.
- Официальная документация
PostgreSQL 18 Documentation: Write-Ahead Logging
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 28.3
Описывает порядок устойчивой записи WAL до изменённых страниц, восстановление страниц из журнала после сбоя и фиксацию транзакций без обязательного сброса всех изменённых страниц.
Открыть первоисточник - Официальная документация
PostgreSQL 18 Documentation: WAL Configuration
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить fsync, synchronous_commit=off/on/remote_write/remote_apply и условия ожидания синхронных реплик.
Открыть первоисточник - Официальная документация
PostgreSQL 18 Documentation: Reliability
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить выполнение сброса всем трактом хранения, энергозависимые кэши накопителя и контроллера и границы гарантии при потере питания.
Открыть первоисточник - Официальная документация
SNIA Dictionary — write back cache
SNIA · SNIA Online Dictionary; номер редакции не указан
Проверены момент подтверждения, более поздняя запись на энергонезависимый носитель и необходимость сохранения/выгрузки кэша после отказа.
Открыть первоисточник - Официальная документация
Guide to Security for Full Virtualization Technologies
National Institute of Standards and Technology · NIST SP 800-125, final от января 2011 года
Определяет full virtualization, VM/guest, hypervisor, bare-metal и hosted architectures, snapshot и isolation boundary.
Открыть первоисточник - Официальная документация
Failover Clustering in Windows Server and Azure Local
Microsoft · Microsoft Learn, обновлено 25 июня 2025 года
Описывает nodes, clustered roles, health monitoring, failover и quorum в failover cluster.
Открыть первоисточник - Первичная спецификация
AMD64 Architecture Programmer's Manual, Volume 2: System Programming
AMD · Документ № 24593, том 2; точная редакция PDF требует повторной проверки
Документ № 24593 указан как том 2 System Programming. Точная редакция и разделы для цитирующих утверждений требуют проверки самого PDF; дата прежнего получения не обновлялась. Упоминание другого тома полностью удалено.
Открыть первоисточник - Официальная документация
I/O Statistics Fields
Linux Kernel · Linux 6.15 documentation
Определяет /proc/diskstats fields, включая I/Os currently in progress и weighted I/O time.
Открыть первоисточник - Официальная документация
Histograms and Summaries
Prometheus · Prometheus documentation, проверено 29 августа 2026 года
Определяет quantiles/percentiles, histogram buckets и ограничения aggregation precomputed quantiles.
Открыть первоисточник - Официальная документация
High Availability — CSRC Glossary
National Institute of Standards and Technology · CSRC glossary, проверено 29 августа 2026 года
Фиксирует HA как failover capability для доступности при отказе device или component.
Открыть первоисточник - Официальная документация
Contingency Planning Guide for Federal Information Systems
National Institute of Standards and Technology · NIST SP 800-34 Rev. 1, update от 11 ноября 2010 года
Первичный planning guide по BIA, recovery strategies, RPO/RTO, contingency и disaster recovery plans.
Открыть первоисточник - Первичная спецификация
Redfish Data Model Specification
Distributed Management Task Force · DSP0268 Version 2025.3
Определяет redundancy types, включая Failover, NPlusM, Sharing и Sparing.
Открыть первоисточник - Официальная документация
PowerEdge Grid Redundancy Policy
Dell Technologies · CMC for PowerEdge FX2/FX2s User's Guide, проверено 29 августа 2026 года
Показывает 1+1 grid redundancy, ограничение capacity одним PSU и необходимость разнести PSUs по independent grids.
Открыть первоисточник - Официальная документация
Pacemaker Explained
ClusterLabs · Ветка 3.0; точная редакция непинованного PDF требует повторной проверки
Прежняя точная пометка Pacemaker 3.0.1 снята после замечания редактора о непинованном URL. Фактически отдаваемая редакция и разделы требуют повторного открытия; новый номер и дата получения без документа не назначались.
Открыть первоисточник - Официальная документация
Recovery Point Objective — CSRC Glossary
National Institute of Standards and Technology · CSRC glossary по NIST SP 800-34 Rev. 1, проверено 29 августа 2026 года
Определяет RPO как точку во времени, до которой данные должны быть восстановлены после outage.
Открыть первоисточник - Официальная документация
Proxmox VE High Availability — ha-manager.adoc
Proxmox Server Solutions GmbH · Официальное read-only зеркало pve-docs, ветка master; полный файл открыт 21.09.2026
Полностью открыт файл из официального зеркала. Проверены How It Works (LRM/CRM locks и watchdog), Fencing, How Proxmox VE Fences, Configure Hardware Watchdog, Recover Fenced Services и Fencing & Watchdog Status. URL ветки не закреплён на commit, поэтому при следующей редакции источник перечитывают.
Открыть первоисточник - Официальная документация
Proxmox VE Administration Guide — Cluster Manager
Proxmox Server Solutions GmbH · Документация 9.2.12, 18 сентября 2026, 12:15:08 UTC
Проверены Cluster Network, Network Requirements, Corosync Redundancy, Corosync Over Bonds и Migration Network/Type. 9.2.12 — версия документации; это не утверждение о версии установленного сервера.
Открыть первоисточник - Официальная документация
Ceph Block Device
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены вводное описание RBD и способы доступа. Ветка squid, не фиксация отдельного patch-релиза; совместимость с Proxmox этим не установлена.
Открыть первоисточник - Официальная документация
RBD Exclusive Locks
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены Warning об автоматической передаче exclusive-lock и раздел Blocklisting. Блокировка образа не приравнена к координации файловой системы.
Открыть первоисточник - Официальная документация
Pools
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены определения пула, size/min_size и Setting the Number of RADOS Object Replicas. Общая фраза введения про число переживаемых отказов не использована как универсальное правило.
Открыть первоисточник - Официальная документация
Monitoring OSDs and PGs
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены Peering, Active, Clean, Degraded и условия восстановления. Не переносим состояние одной PG на готовность всего приложения.
Открыть первоисточник - Официальная документация
CRUSH Maps
Ceph Foundation · Ceph Squid documentation, branch squid
Повторная сверка 20.09.2026. Проверены CRUSH structure, Devices и Creating a rule for a replicated pool: root, host/rack, device class. Отказоустойчивость проверяется по реальной топологии.
Открыть первоисточник - Официальная документация
Ceph Squid — Monitoring a Cluster: usage statistics
Ceph Foundation / Ceph contributors · Ceph Squid; версия документации в пути URL
Проверены определения SIZE, RAW USED и MAX AVAIL. Обобщающие примечания о USED противоречат описанию столбца; это отмечено отдельно, универсальный пересказ не принят.
Открыть первоисточник - Официальная документация
Ceph Squid — Hardware recommendations
Ceph Foundation / Ceph contributors · Ceph Squid; версия документации в пути URL
Прочитаны CPU, RAM, Additional Considerations и Failure Domains. В этом пакете нет универсального числа ядер, процента памяти или обещания времени восстановления.
Открыть первоисточник - Официальная документация
PostgreSQL 18 Documentation: Log-Shipping Standby Servers
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 26.2
Фиксирует async default, synchronous commit wait points и связь replication delay с data loss.
Открыть первоисточник - Официальная документация
Security Guidelines for Storage Infrastructure
National Institute of Standards and Technology · NIST SP 800-209, October 2020
Разделяет backup, replication, immutability, continuous data protection и point-in-time copies; описывает synchronous и asynchronous replication.
Открыть первоисточник - Официальная документация
PostgreSQL 18 Documentation: Replication
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Сверить synchronous_standby_names, FIRST/ANY и удержание WAL слотами.
Открыть первоисточник - Официальная документация
PostgreSQL 18 Documentation: The Cumulative Statistics System
PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года
Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Сверить pg_stat_replication: позиции LSN, write_lag/flush_lag/replay_lag, NULL после простоя и отсутствие прогноза догоняния.
Открыть первоисточник - Официальная документация
PostgreSQL 18 Documentation: Continuous Archiving and Point-in-Time Recovery
PostgreSQL Global Development Group · PostgreSQL 18, Chapter 25.3
Связывает base backup, непрерывный WAL archive и проверяемый recovery target.
Открыть первоисточник - Официальная документация
Continuous Archiving and Point-in-Time Recovery
PostgreSQL Global Development Group · PostgreSQL 18 current documentation, проверено 30 августа 2026 года
Требует base backup и непрерывную WAL sequence, объясняет recovery target, timelines и зависимости incremental backup.
Открыть первоисточник - Официальная документация
Plan and Perform Restore Sequences for Full Recovery Model
Microsoft · SQL Server 2016–2025 documentation, проверено 30 августа 2026 года
Задаёт точную restore sequence: база, выбранный differential и последующие log backups в порядке до recovery target.
Открыть первоисточник - Официальная документация
Backup — CSRC Glossary
National Institute of Standards and Technology · CSRC glossary по NIST SP 800-34 Rev. 1, проверено 29 августа 2026 года
Определяет backup как копию files и programs, созданную для recovery.
Открыть первоисточник - Официальная документация
Restore testing
Amazon Web Services · AWS Backup Developer Guide, проверено 30 августа 2026 года
Описывает периодический real restore, измерение duration, отдельный test account и optional validation до удаления test resources.
Открыть первоисточник - Официальная документация
Recovery Time Objective — CSRC Glossary
National Institute of Standards and Technology · CSRC glossary по NIST SP 800-34 Rev. 1, проверено 29 августа 2026 года
Определяет RTO как допустимую длительность recovery phase до ущерба mission/business process.
Открыть первоисточник - Официальная документация
Guide for Cybersecurity Event Recovery
National Institute of Standards and Technology · NIST SP 800-184, December 2016
Определяет recovery planning как цикл приоритизации, playbooks, realistic testing, metrics и улучшения по lessons learned.
Открыть первоисточник - Официальная документация
Failover Clustering topologies
Microsoft · Microsoft Learn для Windows Server 2016–2025, проверено 29 августа 2026 года
Определяет fault domains и показывает границу single-rack HA, stretch cluster и multi-site DR.
Открыть первоисточник - Официальная документация
Failover — CSRC Glossary
National Institute of Standards and Technology · CSRC glossary по NIST SP 800-53 Rev. 5, проверено 29 августа 2026 года
Определяет automatic switch to redundant or standby system после failure active system.
Открыть первоисточник - Официальная документация
Live Migration Overview
Microsoft · Microsoft Learn, обновлено 17 сентября 2020 года
Отделяет перенос работающей VM без воспринимаемого простоя от automatic failover и показывает, что live migration может работать без кластера.
Открыть первоисточник