Кейс: отказоустойчивое облако для ресторана доставки

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

Какая серверная была у клиента

До обращения к нам сайт клиента размещался на дедике — арендуемом физическом сервере. Веб-сервер и база данных работали на одной машине:

Дедику не страшно снижение производительности из-за излишней активности соседей. Это его преимущество по сравнению с традиционным хостингом. В распоряжении системного администратора дедика все мощности физической машины.

Но когда проект начинает расти дальше, надежности одного сервера становится недостаточно. Это всё равно, что сложить все яйца в одну корзину — если оборудование выйдет из строя, и сайт, и база данных станут недоступны.

Задача

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

Зачем шесть серверов для одного сайта

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

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

Между серверами с базами данных настроили прямую репликацию по схеме Master-Slave. Одна машина назначается ведущей (Master), а вторая — «ведомой» (Slave). Все изменения в базе данных дублируются с ведущего сервера на ведомый. Между веб-серверами автоматической синхронизации контента делать не стали — клиент пожелал оставить один из них для экспериментов с кодом. Данные на веб-серверах копируются вручную.

Как управлять этим парком? Мы развернули отдельный сервер-балансировщик для управления трафиком между машинами.

Балансировщик с сервисом HAProxy распределяет запросы и следит за доступностью компонентов системы. Если один из виртуальных серверов выйдет из строя, балансировщик увидит это и перенаправит запросы на его бэкап.

Дополнительно создали сервис мониторинга, которой отправляет информацию о событиях в инфраструктуре системным администраторам Airnode.

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

Обычно балансировщик направляет запросы посетителей на основной веб-сервер:

Общение между базой данных и веб-сервером тоже идёт через балансировщик:

Что произойдет, если основной веб-сервер выйдет из строя? Балансировщик увидит это и будет перенаправлять все запросы на резервную копию:

То же случится, если откажет cервер с базой данных Master: балансировщик сам переключится на резервный сервер Slave с актуальными данными. А сервис мониторинга предупредит о событии системных администраторов:

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

В виртуальном дата-центре используется система распределенного хранения Ceph. Это немного снижает скорость чтения и записи с дисков, но гарантирует сохранность данных — Сeph распределяет их по сетевому хранилищу в трех экземплярах. Облако работает по принципу «инфраструктура как услуга» (IaaS) — на ней можно создать масштабируемую серверную архитектуру любой сложности.

Что получил заказчик

Ресторан доставки имел один дедик, на котором находились сайт и база данных. После переноса в виртуальный дата-центр он получил отказоустойчивую архитектуру: при выходе из строя одного из серверов сайт все равно будет принимать заказы клиентов. Такая система не боится высоких нагрузок и роста. А с системного администратора сайта снята головная боль по обслуживанию и мониторингу железа — этим заняты специалисты Airnode.

Хотите так же?

Звоните 8(800)500-19-58 или пишите info@airnode.ru

  • проконсультируем
  • бесплатно поможем подобрать техническое решение
  • предоставим тестовый доступ в виртуальный дата-центр на 14 дней

Оставайтесь на связи!

Подписывайтесь на обновления нашего блога