Найти тему
Airnode на Дзене

Сайт-неваляшка, безотказный, как автомат Калашникова: читайте наш гик-кейс!

Оглавление

К нам обратился клиент из ресторана доставки в Кургане. Ресторан получает большую часть заказов со своего сайта. И если он недоступен, бизнес теряет заказы. Владелец не погладит за это по голове системного администратора.

Шансы, что что-то пойдет не так, были высоки. IT-инфраструктура была устроена как в большинстве подобных проектов. Все яйца хранились в одной корзине:

И база данных и веб-сервер, работали на одном дедике. Если он выйдет из строя, люди не смогут заказать себе роллы, останутся голодными и злыми.

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

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

Как зарезервировали сайт

Мы перенесли сайт в виртуальный дата-центр и создали для него новую инфраструктуру:

-2

Что сделали

— Разделили базу данных и веб-сервер. Изолированными модулями легче управлять. Каждый сервер выполняет одну простую функцию и не забирает вычислительные мощности у соседа. Такая микросервисная архитектура экономит ресурсы.

— Создали по одной копии сервера для базы данных и для сайта.

— Между базами данных настроили автоматическое реплицирование.

— Между веб-серверами синхронизацию делать не стали по просьбе клиента. Он захотел оставить одну машину для экспериментов с кодом.

— Всё это управляется баланасировщиком нагрузки. Он следит за доступностью машин.

— Сервис мониторинга информирует системных администраторов об инцидентах.

Как это работает

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

-3

Если один из компонентов отказывает, балансировщик направляет трафик на резервные серверы:

-4

Где это работает

Проект был создан в виртуальном дата-центре. Это даёт ёще несколько плюшек:

— В любой момент клиент может изменить инфраструктуру: создать новые виртуальные машины, настроить сети между ними, добавить дисковые хранилища.

— Физическое элементы сети трижды зарезервированы.

— Используется система распределенного хранения Ceph. Это немного снижает скорость чтения и записи с дисков, но гарантирует сохранность данных — Сeph распределяет их по сетевому хранилищу в трех экземплярах.

Облако работает по принципу «инфраструктура как услуга» (IaaS)— на ней можно создать масштабируемую серверную архитектуру любой сложности.

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

А у вас есть план «Б» на случай отказа сервера? Пишите в комментариях!