# Отказоустойчивый сайт: два сервера, балансировщик и защита от DDoS

> Как сделать сайт, который переживёт падение сервера: три схемы с ценой в месяц, балансировщик, зоны ru-6 и что даёт бесплатная защита от DDoS.

Источник: https://infragid.ru/otkazoustojchivyj-sajt/ · Обновлено: 2026-11-09 · Цены проверены: 2026-11-08 · Раздел: Сайты, сеть и CDN

**Коротко.** Минимальная отказоустойчивая схема — два облачных сервера за балансировщиком с резервированием и база данных из двух нод — стоит около 17 000 ₽ в месяц (наш расчёт ниже). Из них балансировщик — 2 607,89 ₽/мес, сервер 2 vCPU / 4 ГБ — от 2 539,74 ₽/мес. Защита от DDoS на уровнях L3–L4 уже включена бесплатно, но от атак на сам сайт (L7) она не спасает.

**Наш выбор.** Магазину или сервису, у которого час простоя стоит дороже десяти тысяч рублей, — два облачных сервера за балансировщиком с резервированием и управляемая база из двух нод. Если нужно пережить потерю целого дата-центра — та же схема в московском пуле ru-6 с тремя зонами.
- Конфигурация: 2 × Standard 2 vCPU · 4 ГБ + балансировщик «Базовый с резервированием» + PostgreSQL или MySQL, 2 ноды
- Цена от: ≈ 17 000 ₽/мес (наш расчёт), балансировщик — 2 607,89 ₽/мес
- Бесплатно: защита от DDoS L3–L4, 3 ТБ внешнего трафика в месяц на аккаунт, 3 проверки доступности
- Когда не подходит: визитка, блог, магазин с оборотом до 1–2 млн ₽ в месяц — хватит одного сервера, бэкапов и мониторинга

## Что нужно понять за минуту

Сайт падает не потому, что «хостинг плохой», а потому, что у него есть единая точка отказа: один сервер, один диск, одна база. Отказоустойчивость — это копия у каждого звена и кто-то, кто переключает трафик на живую копию. Этот «кто-то» — [балансировщик нагрузки](/glossarij/balansirovshchik/): он принимает запросы, раздаёт их между серверами, регулярно проверяет, живы ли они, и перестаёт слать трафик на упавший.

Звеньев обычно четыре:

- **вход** — балансировщик. Сам по себе он тоже может упасть, поэтому нужен тип с резервированием: два инстанса, второй подхватывает работу первого;
- **серверы приложения** — минимум два одинаковых;
- **база данных** — кластер из мастера и реплики: если мастер перестанет работать, его роль перейдёт реплике;
- **файлы** — картинки и загрузки пользователей должны лежать не на диске одного сервера, а в общем хранилище, например в S3.

Чего отказоустойчивость не даёт: защиты от собственной ошибки. Кривой релиз или удалённая таблица мгновенно окажутся на всех копиях. Бэкапы нужны всё равно.

## Сколько стоит

Цены провайдера на 8 ноября 2026, с НДС, за месяц.

| Компонент | Что важно знать | Цена |
|---|---|---|
| Облачный сервер Standard 2 vCPU / 4 ГБ | без диска, IP и трафика сверх 3 ТБ | 2 539,74 ₽/мес |
| Сетевой диск SSD (универсальный v2) | за 1 ГБ | 10,48 ₽ за ГБ/мес |
| Публичный IP-адрес | один IPv4 | 189,57 ₽/мес |
| Балансировщик «Базовый без резервирования» | один инстанс, для тестов | 1 398,30 ₽/мес |
| => Балансировщик «Базовый с резервированием» | два инстанса, около 19 500 HTTP-запросов в секунду | 2 607,89 ₽/мес |
| Балансировщик «Продвинутый с резервированием» | около 34 тысяч HTTP-запросов в секунду | 4 339,05 ₽/мес |
| Управляемый PostgreSQL, Memory 2 vCPU / 4 ГБ / 32 ГБ | за одну ноду кластера | 4 125,22 ₽/мес |
| Управляемый MySQL semi-sync, та же конфигурация | за одну ноду, подходит для CMS | 4 125,22 ₽/мес |
| Проверка доступности сверх трёх бесплатных | за одну проверку | 52 ₽/мес |

проверено 08.11.2026 · [источник](https://selectel.ru/services/cloud/load-balancer/)
{: .stamp}

### Три ступени: наш расчёт

| Схема | Что переживёт | ≈ ₽/мес |
|---|---|---|
| 1. Один сервер, бэкапы, мониторинг | ничего: при сбое — ручное восстановление, часы | ≈ 3 150 |
| => 2. Два сервера, балансировщик с резервированием, база из двух нод | падение сервера, инстанса балансировщика, мастера базы | ≈ 17 000 |
| 3. То же в пуле ru-6, по трём зонам | потерю целого дата-центра | от ≈ 17 000, итог — в калькуляторе для ru-6 |

Формулы. Ступень 1: 2 539,74 + 40 ГБ × 10,48 + 189,57 ≈ 3 150 ₽. Ступень 2: два сервера с дисками по 40 ГБ + балансировщик 2 607,89 + две ноды PostgreSQL по 4 125,22 + один публичный IP для балансировщика ≈ 16 970 ₽. Сервер посчитан по калькулятору (пул в Санкт-Петербурге), диск и IP — по прайсу московского пула; разница между пулами небольшая, но итог сверяйте в калькуляторе. Трафик сверх 3 ТБ и хранение бэкапов — сверху.

### Окупится ли резерв

Ступень 2 дороже ступени 1 примерно на 13 800 ₽ в месяц. Сравните это с ценой часа простоя (наш расчёт, средний час = месячный оборот ÷ 730 часов):

- оборот 1 млн ₽ в месяц — час простоя ≈ 1 370 ₽. Резерв окупается, только если без него сайт лежит больше 10 часов каждый месяц. Почти никогда: берите ступень 1;
- оборот 10 млн ₽ в месяц — час ≈ 13 700 ₽. Резерв окупается уже примерно при часе простоя в месяц, а одно восстановление из бэкапа занимает несколько часов.

На деле час простоя дороже среднего: сайт падает под пиковой нагрузкой, а реклама в это время продолжает тратить бюджет. Если сомневаетесь — начните с одного сервера и посмотрите, [какая конфигурация нужна магазину](/server-dlya-internet-magazina/), а общую сумму по серверам прикиньте в [калькуляторе стоимости сервера](/instrumenty/skolko-stoit-arenda-servera/).

## Как выбрать ступень

**Ступень 1 — один сервер.** Сайт-визитка, блог, лендинг, небольшой магазин. Обязательно: ежедневные бэкапы вне сервера и внешняя проверка доступности. У Selectel первые три проверки бесплатны, результаты приходят на почту, по HTTP или SMS (SMS — за отдельную плату) — так вы узнаете о падении раньше клиентов.

**Ступень 2 — два сервера и балансировщик в одном пуле.** Магазин или сервис, у которого простой стоит дорого. Балансировщик берите с резервированием: тип без резервирования сама Selectel советует для тестовых окружений и проектов, которым не нужна доступность 24/7. Базу — управляемым кластером из двух нод: за репликацию, переключение и бэкапы отвечает провайдер. Для кластера с репликами Selectel даёт SLA 99,95 % на запись и 99,99 % на чтение. В пулах из нескольких сегментов ноды базы разносятся по разным стойкам одного дата-центра.

**Ступень 3 — пул ru-6.** Московский пул с тремя зонами доступности, каждая — отдельный дата-центр. Здесь балансировщик с резервированием ставит два инстанса в разные зоны: если одна зона выйдет из строя, инстанс в другой продолжит раздавать трафик. Кластер базы с репликами раскладывает ноды по зонам ru-6a, ru-6b, ru-6c. Серверы приложения вы создаёте в разных зонах сами. Конкретных RTO и RPO провайдер не называет: по его словам, они зависят от сервиса и архитектуры. Если нужно пережить не только сбой ЦОД, но и потерю всей площадки, смотрите [резервный ЦОД и DRaaS](/rezervnyj-cod-draas/).

## Как настроить: четыре вещи, о которых забывают

1. **Проверка доступности на балансировщике.** Тип HTTP с отдельным адресом, например `/healthz`, который проверяет, что приложение отвечает. Порог неуспеха — 2–3 обращения подряд: так упавший сервер выпадет быстро, а случайная задержка его не выбросит.
2. **Сессии.** Если корзина или вход хранятся в памяти одного сервера, при переключении пользователя выкинет. Лучше хранить сессии в базе или Redis. Временный выход — Sticky sessions в настройках целевой группы, но это не резерв, а костыль.
3. **Адрес клиента.** Сервер видит адрес балансировщика, а не посетителя. В правиле HTTP или HTTPS отметьте заголовки, которые балансировщик передаёт серверам, — адрес клиента обычно приходит в X-Forwarded-For. Для TCP есть режим TCP → PROXY: адрес передаётся в отдельном заголовке соединения.
4. **Серверы без публичных адресов.** Selectel рекомендует ставить балансировщик в приватную подсеть и подключать к нему публичный плавающий IP. Тогда снаружи виден только балансировщик, а до самих серверов из интернета напрямую не достучаться.

Пример nginx на каждом сервере за балансировщиком: настоящий адрес клиента, ограничение частоты запросов и адрес для проверки доступности.

```nginx
# /etc/nginx/conf.d/site.conf
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

server {
    listen 80;
    server_name _;

    # подсеть, в которой стоит балансировщик
    set_real_ip_from 10.0.0.0/24;
    real_ip_header X-Forwarded-For;

    location = /healthz {
        access_log off;
        return 200 "ok\n";
    }

    location / {
        limit_req zone=perip burst=20 nodelay;
        proxy_pass http://127.0.0.1:8080;
    }
}
```

Без `set_real_ip_from` лимит сработает на адрес балансировщика и заблокирует всех посетителей сразу. Здесь `/healthz` отвечает сам nginx — так балансировщик узнает, что жив сервер; чтобы проверять и приложение, проксируйте `/healthz` на его собственный адрес проверки. Лимит подбирайте под свой сайт: страница с десятками картинок и скриптов может упереться в `burst`, поэтому статику лучше отдавать отдельным `location` без лимита или из S3.

## Защита от DDoS: что уже есть бесплатно

У облачных серверов, управляемых баз и Kubernetes в Selectel по умолчанию включена базовая защита на уровнях L3–L4. Она гасит атаки с отражением через UDP (DNS, NTP, memcache), SYN-флуд, UDP- и ICMP-флуд. Анализируется только входящий трафик, отдельно платить не нужно.

Чего она не делает: не защищает от атак на уровне приложения (L7) — валидными HTTP- и HTTPS-запросами, валидными TCP-соединениями, по узким местам самого сайта. Против небольших L7-атак помогают ограничение частоты запросов в nginx, как в примере выше, кэширование тяжёлых страниц и запас мощности за балансировщиком. Если сайт атакуют всерьёз и этого не хватает, у провайдера есть партнёрские тарифы L7 от 24 400 ₽/мес. Это отдельная большая статья расходов, брать её «на всякий случай» нет смысла.

## Что не подойдёт и ограничения

- **Балансировщик работает в пределах одного пула.** Связать им серверы в Москве и Санкт-Петербурге нельзя. Для защиты от потери ЦОД — пул ru-6 с зонами.
- **Балансировщик без резервирования — сам точка отказа.** Экономия на нём обнуляет смысл двух серверов.
- **Пересоздание инстанса балансировщика** после смены сетевых настроек занимает до пяти секунд, в это время трафик не принимается. Делайте это в тихие часы.
- **База на линейках HighFreq и Dedicated** в однозональных пулах размещается в одном сегменте даже с репликами. Если важна раскладка по стойкам, берите другие линейки.
- **Базовая защита при долгой атаке может включить blackhole:** входящий трафик на адрес блокируют, Selectel создаёт тикет, снять блокировку можно ответом в тикете, автоматически она снимается через восемь часов.
- **Файлы на локальном диске сервера.** Второй сервер их не увидит — выносите загрузки в объектное хранилище.
- **Готовые CMS** не всегда умеют работать на двух серверах из коробки: проверьте, где они хранят сессии, кэш и загрузки. Про требования Битрикса — отдельный гайд [сервер для Битрикса](/server-dlya-bitrix/).

## Как мы сделали

!!! how "Единая точка отказа и запасной вход"
    Часть наших сервисов работает на одном домашнем мини-ПК, и он однажды показал цену единой точки отказа: 10,5 часа без питания, потому что ИБП отключил выход из-за перегрева. ИБП на 3 кВА держит около получаса — этого мало. Поэтому всё клиентское у нас либо с резервом в облаке, либо честно называется «домашним». А когда переводили точку входа сайтов на облачный сервер в Москве (2 vCPU / 4 ГБ, Caddy и туннель WireGuard к основному серверу), старый туннель оставили запасным. После любых правок входа проверяем минимум три несвязанных домена.


## Частые вопросы

**Как защитить сайт от DDoS-атак?**

Сначала проверьте, что уже есть: у облачных серверов Selectel защита от атак на сетевом и транспортном уровне (L3–L4) включена бесплатно. Затем закройте сам сайт: ограничение частоты запросов в nginx, кэш, серверы без публичных адресов за балансировщиком. Платная защита уровня L7 нужна, когда атакуют именно запросами к страницам и ваш сайт этого не выдерживает.

**Нужна ли платная защита от DDoS для сайта?**

Большинству небольших сайтов — нет: от массовых сетевых атак спасает бесплатная базовая защита. Платная защита L7 у партнёров провайдера стоит десятки тысяч рублей в месяц, её берут сайты, которые реально атакуют запросами: магазины в сезон распродаж, сервисы с конкурентами, медиа.

**Балансировщик сам по себе делает сайт отказоустойчивым?**

Нет. Балансировщик снимает с работы упавший сервер, но если база данных или загруженные файлы живут на одной машине, сайт всё равно ляжет вместе с ней. Отказоустойчивость появляется, когда у каждого звена есть копия: два сервера, балансировщик с резервированием, база с репликой.

**Сколько стоит отказоустойчивый сайт?**

По нашему расчёту на ценах Selectel 8 ноября 2026 — около 17 000 ₽ в месяц за два сервера 2 vCPU / 4 ГБ, балансировщик с резервированием и базу из двух нод. Один сервер без резерва — около 3 150 ₽. Решает не цена, а сколько вы теряете за час простоя.

**Что будет, если выйдет из строя целый дата-центр?**

В обычном пуле все копии стоят в одном дата-центре, и такую аварию схема не переживёт. В московском пуле ru-6 три зоны доступности в отдельных дата-центрах: балансировщик с резервированием и реплики базы данных раскладываются по разным зонам, а серверы вы размещаете по зонам сами.


## Источники

- Балансировщик нагрузки для облака — selectel.ru — https://selectel.ru/services/cloud/load-balancer/ (проверено 2026-11-08)
- Балансировщик нагрузки: типы, проверки доступности — документация Selectel — https://docs.selectel.ru/cloud-servers/load-balancers/about-load-balancers/ (проверено 2026-11-09)
- Создать балансировщик нагрузки — документация Selectel — https://docs.selectel.ru/cloud-servers/load-balancers/create-load-balancer/ (проверено 2026-11-09)
- Пересоздать инстанс балансировщика — документация Selectel — https://docs.selectel.ru/cloud-servers/load-balancers/manage/failover/ (проверено 2026-11-09)
- Отказоустойчивое облако ru-6 — selectel.ru — https://selectel.ru/services/cloud/servers/ru-6/ (проверено 2026-11-09)
- Отказоустойчивость кластера PostgreSQL — документация Selectel — https://docs.selectel.ru/managed-databases/postgresql/cluster-fault-tolerance/ (проверено 2026-11-09)
- Облачная база данных PostgreSQL — selectel.ru — https://selectel.ru/services/cloud/managed-databases/postgresql/ (проверено 2026-11-08)
- Калькулятор облачных серверов — selectel.ru — https://selectel.ru/prices/calculator/ (проверено 2026-11-08)
- Цены на ресурсы облака — selectel.ru — https://selectel.ru/prices/ (проверено 2026-11-08)
- Защита от DDoS-атак — selectel.ru — https://selectel.ru/services/additional/ddos-protection/ (проверено 2026-11-08)
- Защита Selectel от DDoS — документация Selectel — https://docs.selectel.ru/anti-ddos/ddos-selectel/ (проверено 2026-11-09)
- Проверка доступности сервисов — selectel.ru — https://selectel.ru/services/additional/monitoring/ (проверено 2026-11-08)
