Отказоустойчивый сайт: два сервера, балансировщик и защита от DDoS
Минимальная отказоустойчивая схема — два облачных сервера за балансировщиком с резервированием и база данных из двух нод — стоит около 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 млн ₽ в месяц — хватит одного сервера, бэкапов и мониторинга
Реклама. АО «Селектел», ИНН 7810962785, selectel.ru. erid: 2VtzqwtXUsg
Что нужно понять за минуту
Сайт падает не потому, что «хостинг плохой», а потому, что у него есть единая точка отказа: один сервер, один диск, одна база. Отказоустойчивость — это копия у каждого звена и кто-то, кто переключает трафик на живую копию. Этот «кто-то» — балансировщик нагрузки: он принимает запросы, раздаёт их между серверами, регулярно проверяет, живы ли они, и перестаёт слать трафик на упавший.
Звеньев обычно четыре:
- вход — балансировщик. Сам по себе он тоже может упасть, поэтому нужен тип с резервированием: два инстанса, второй подхватывает работу первого;
- серверы приложения — минимум два одинаковых;
- база данных — кластер из мастера и реплики: если мастер перестанет работать, его роль перейдёт реплике;
- файлы — картинки и загрузки пользователей должны лежать не на диске одного сервера, а в общем хранилище, например в 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 · источник
Три ступени: наш расчёт
| Схема | Что переживёт | ≈ ₽/мес |
|---|---|---|
| 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 ₽. Резерв окупается уже примерно при часе простоя в месяц, а одно восстановление из бэкапа занимает несколько часов.
На деле час простоя дороже среднего: сайт падает под пиковой нагрузкой, а реклама в это время продолжает тратить бюджет. Если сомневаетесь — начните с одного сервера и посмотрите, какая конфигурация нужна магазину, а общую сумму по серверам прикиньте в калькуляторе стоимости сервера.
Как выбрать ступень
Ступень 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.
Как настроить: четыре вещи, о которых забывают
- Проверка доступности на балансировщике. Тип HTTP с отдельным адресом, например
/healthz, который проверяет, что приложение отвечает. Порог неуспеха — 2–3 обращения подряд: так упавший сервер выпадет быстро, а случайная задержка его не выбросит. - Сессии. Если корзина или вход хранятся в памяти одного сервера, при переключении пользователя выкинет. Лучше хранить сессии в базе или Redis. Временный выход — Sticky sessions в настройках целевой группы, но это не резерв, а костыль.
- Адрес клиента. Сервер видит адрес балансировщика, а не посетителя. В правиле HTTP или HTTPS отметьте заголовки, которые балансировщик передаёт серверам, — адрес клиента обычно приходит в X-Forwarded-For. Для TCP есть режим TCP → PROXY: адрес передаётся в отдельном заголовке соединения.
- Серверы без публичных адресов. Selectel рекомендует ставить балансировщик в приватную подсеть и подключать к нему публичный плавающий IP. Тогда снаружи виден только балансировщик, а до самих серверов из интернета напрямую не достучаться.
Пример 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 не всегда умеют работать на двух серверах из коробки: проверьте, где они хранят сессии, кэш и загрузки. Про требования Битрикса — отдельный гайд сервер для Битрикса.
Как мы сделали
Единая точка отказа и запасной вход
Часть наших сервисов работает на одном домашнем мини-ПК, и он однажды показал цену единой точки отказа: 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проверено 08.11.2026
- Балансировщик нагрузки: типы, проверки доступности — документация Selectelпроверено 09.11.2026
- Создать балансировщик нагрузки — документация Selectelпроверено 09.11.2026
- Пересоздать инстанс балансировщика — документация Selectelпроверено 09.11.2026
- Отказоустойчивое облако ru-6 — selectel.ruпроверено 09.11.2026
- Отказоустойчивость кластера PostgreSQL — документация Selectelпроверено 09.11.2026
- Облачная база данных PostgreSQL — selectel.ruпроверено 08.11.2026
- Калькулятор облачных серверов — selectel.ruпроверено 08.11.2026
- Цены на ресурсы облака — selectel.ruпроверено 08.11.2026
- Защита от DDoS-атак — selectel.ruпроверено 08.11.2026
- Защита Selectel от DDoS — документация Selectelпроверено 09.11.2026
- Проверка доступности сервисов — selectel.ruпроверено 08.11.2026
Связанные гайды
- Решение
Сервер для интернет-магазина: конфигурация под трафик и цена в месяц
Какой сервер нужен интернет-магазину на 1 000, 10 000 и 100 000 товаров: три схемы с ценой в месяц, распродажи, картинки в S3 и данные покупателей.
- Решение
Хостинг для 1С-Битрикс: облако или выделенный сервер и цена
Свой сервер под сайт на 1С-Битрикс: облако HighFreq или выделенный, сколько ресурсов нужно сайту и магазину, что входит в цену и что нет. Цены на 8 ноября 2026.
- Гайд
База данных как сервис (DBaaS): какую выбрать и сколько стоит
Managed PostgreSQL, MySQL, Redis, Kafka, ClickHouse и OpenSearch: какую базу брать под задачу, сколько стоит кластер в месяц и чего managed не умеет.
- Решение
Резервный дата-центр и DRaaS: что выбрать и сколько стоит защита
Бэкап в S3, отказоустойчивое облако, DRaaS или своя резервная площадка: сравниваем по RPO, RTO и цене для 5, 10 и 50 серверов.
- Гайд
Cloudflare не работает в России: что делать владельцу сайта
Почему сайт за Cloudflare медленно открывается в России, как это проверить и как поставить точку входа на российском сервере. Опыт редакции: 5–6 доменов.