High Availability (HA)
Автоматически сгенерировано: 2026-03-03 09:38
Обзор компонентов HA
| Компонент | Технология | Назначение | Текущий статус |
|---|---|---|---|
| PostgreSQL | Patroni + etcd | Автоматический failover БД | ✅ Active |
| etcd | etcd cluster | Распределённое хранилище конфигурации | ✅ Active |
| Redis | Redis Sentinel | Автоматический failover кэша | ✅ Active |
| Load Balancer | keepalived + VRRP | Floating VIP для LB | ✅ Active |
| Proxy | HAProxy | Балансировка нагрузки | ✅ Active |
Архитектура
┌─────────────────────────────────────────────────┐
│ keepalived (lb-1 MASTER, lb-2 BACKUP) │
│ VIP: 188.130.238.189 │
└──────────────────┬──────────────────────────────┘
│
┌─────────┴──────────┐
│ │
┌────▼────┐ ┌────▼────┐
│ lb-1 │ │ lb-2 │
│ HAProxy │ │ HAProxy │
└────┬────┘ └────┬────┘
│ │
└─────────┬──────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌───▼───┐ ┌───▼───┐ ┌───▼───┐
│ web-1 │ │ web-2 │ │ ... │
└───┬───┘ └───┬───┘ └───────┘
│ │
└──────┬───────┘
│
┌──────▼───────┐
│ Patroni │
│ db-1 PRIMARY │
│ db-2 REPLICA │
└──────┬───────┘
│
┌──────▼───────┐
│ etcd │
│ cluster │
└──────────────┘
Failover процедуры
Автоматический failover
PostgreSQL (Patroni): - Мониторинг каждые 10 секунд - Автоматическое переключение при отказе primary - Время переключения: ~30 секунд
Redis (Sentinel): - Мониторинг каждые 5 секунд - Автоматическое переключение при отказе master - Время переключения: ~10 секунд
Load Balancer (keepalived): - VRRP heartbeat каждые 1 секунду - Автоматическое переключение VIP - Время переключения: ~3 секунды
Ручной failover
PostgreSQL:
ssh db-1
sudo patronictl -c /etc/patroni.yml failover
Redis:
ssh redis-1
redis-cli -p 26379 SENTINEL failover callbox-redis
Проверка статуса
# PostgreSQL Patroni
ssh db-1 'sudo patronictl list'
# Redis Sentinel
ssh redis-1 'redis-cli -p 26379 info sentinel'
# keepalived
ssh lb-1 'systemctl status keepalived'
ssh lb-1 'ip addr show | grep 188.130.238.189' # VIP на MASTER
# HAProxy
curl http://lb-1:9000/stats # Stats URL