Сайт может упасть из-за аварии, сбоя в дата-центре, каналах связи или по другим причинам. И если для одних проектов это небольшая неприятность, то для других это финансовые убытки или ущерб репутации.
Мы в Initlab знаем способ, как сделать сайт более устойчивым — настроить резервирование и репликацию. С ними не страшны никакие беды с хостингом: если сервер недоступен, в бой вступит копия сайта на другом сервере и продолжит работать как будто ничего не случилось.
Как устроена технология репликации баз данных и для чего может пригодиться — читайте в нашей статье.
Что такое резервирование и репликация
Резервирование — создание резервной копии сервера, которая автоматически поддерживается в актуальном состоянии и активируется при проблемах на основном сервере. При проектировании резервирования одной из основных технологий является репликация базы данных.
Репликация — передача данных с ведущего сервера базы данных на ведомый. В MySQL они называются master — туда пишутся данные и slave — сюда передаются данные с master.
Упростим. Есть главный сайт и несколько его копий на разных серверах. У главного сайта есть база данных — папка, куда поступают заказы, вносятся новые товары и правки. Все эти изменения автоматически транслируются на копии сайта, но именно информация хранится только у главного. На него же попадают все посетители.
Главный сайт расположен на ведущем сервере. Сюда вносятся все изменения и отсюда передаются данные на ведомые серверы, которые подтягивают обновления с главного сайта. Иными словами, сайты синхронизированы — данные в базах идентичны, как и настройки на серверах.
Примерно по этому принципу работает облако. Основное отличие в том, что можно, например, удалить файл с устройства, но оно останется в облаке. Здесь же полная синхронизация — файл удалили на главном сайте — он удалился отовсюду, добавили новый товар — он появился везде.
Когда на сервере случится сбой, главный сайт передаст свои полномочия одной из копий. База данных перейдёт приемнику — теперь этот сайт главный. Это необходимо для того, чтобы сайт был доступен при сбое на сервере и никакие данные не были утеряны.
Зачем нужно резервирование
Сервер может быть недоступен по ряду причин: проблемы с сетевым оборудованием в дата-центре, аварии (питание, интернет) и т.д. Кроме технических моментов, бывают случаи, когда клиент забывает оплатить сервер. Во всех этих ситуациях механизм один — сайт с работающего сервера выходит на первый план вместо недоступного.
Для грамотного резервирования рекомендуется настраивать сайт на серверах в разных дата-центрах. Это нужно для уменьшения шанса недоступности: если случился пожар или отключили свет в одном месте, в другом вероятнее всего тишина и благодать. Если разместиться в одном дата-центре, растёт риск словить на обоих серверах одну и ту же проблему. Количество подключённых к сайту серверов зависит от потребностей сайта и желания клиента.
Мы подробно описали механизм «недоступен-переключился», но есть ещё один вариант применения этой технологии, когда сайт параллельно работает на нескольких серверах.
Если нагрузка для одного сервера слишком велика, пользовательский трафик распределяется сразу на несколько. При сбое на одном сервере пользователи точно так же будут перенаправлены на другой, а правки/товары по-прежнему вносятся на master.
Такая балансировка отлично подходит не только для повышения отказоустойчивости, но и для масштабирования проекта. Если вы готовите свой интернет-магазин под большой поток людей — вам нужна репликация.
Переключение между серверами не происходит мгновенно. Сначала системе нужно убедиться, что это не разовый сбой, а сайт действительно недоступен какое-то время. В более сложных инфраструктурных решениях можно сделать простой минимальным и настроить быстрое переключение при малейшем сбое.
Каким сайтам нужно резервирование
Причин подключить подобную услугу две: прибыль и репутация. Некоторым компаниям время простоя обойдётся дороже, чем организация и поддержка резервирования и репликации:
- потеря заказов в интернет-магазинах;
- потеря заявок на сайтах с крупными заказами, например, в B2B сегменте;
- потеря доверия от потенциальных клиентов или вышестоящего руководства.
Резервирование и репликация — первое решение для повышения отказоустойчивости на сайтах с большим трафиком и для масштабирования.
Например, нашему клиенту charmrus.com важно, чтобы у пользователей сайта всегда был доступ в личные кабинеты и не терялась внесённая информация. Для этого они обратились за настройкой первого варианта репликации — когда запускается «запасной» сайт при сбое на сервере.
Другому клиенту — xiacom.ru важно поддерживать сайт в рабочем состоянии даже при высокой нагрузке и при любого рода сбоях, поэтому они попросили настроить распределение нагрузки между серверами.
Зачем нужна поддержка репликации и что в неё входит
Репликацию нельзя настроить и оставить без присмотра. Она будет работать до первой поломки, после чего синхронизация начнёт распадаться. В пакете с этой услугой обязательно идёт администрирование, в которое входит автоматический мониторинг.
Синхронизация. Главный сайт передал права запасному после сбоя на сервере, а значит перестал работать. Когда доступ восстановится, на нём будет не хватать данных, которые принял на себя уже новый главный сайт. Теперь нужно изменить настройки сайта и сервера, т.к. позиция передающего сменилась на принимающего, и проследить, чтобы все файлы были синхронизированы.
Обновления. Когда выходят новые версии пакетов программ, там зачастую закрываются уязвимости в безопасности. Их рекомендуется обновлять по необходимости, т.к. сайт или сервер может стать уязвимым.
Мониторинг. Автоматическая проверка раз в минуту собирает данные о множестве важных параметров:
- состояние репликации: запущена и работает, нет ли сбоев в синхронизации;
- состояние сервера мастер-сайта;
- актуальность данных на резервном сервере;
- состояние сайтов на их серверах;
- состояние ресурсов памяти, диска и процессора;
- состояние запущенности/работы служб, динамика запросов к серверу;
- доступность сервера и сайта.
Если репликация по каким-то причинам перестала выполняться и база на одном сервере стала отставать, мониторинг сообщит об этом. Нужно как можно скорее вернуть инфраструктуре синхронизацию, пока разница между данными минимальна и на это нужно не так много времени.
Также мониторинг даёт информацию по сайту. Например, сколько осталось до продления домена и SSL-сертификата. Об этом мы также сообщаем клиентам.
На любой сбой или проблему заводятся тикеты в наш сервис-деск. Так клиент может видеть, какие проблемы возникают + в эти тикеты мы после анализа отправляем отчёт. Если регулярно возникают проблемы с конкретным хостинг оператором и он не может обеспечить стабильную работу, это можно отследить и перейти к более надёжному партнёру.
Репликация не универсальна и настраивается под конкретного клиента. В среднем наша команда настраивает репликацию от 16 часов на несложном сайте.
Вашему проекту нужно резервирование сервера и репликация базы данных, если вы хотите повысить отказоустойчивость вашего сайта и/или масштабировать свой проект. Если для вас время простоя сайта = потерянные деньги, значит следует задуматься об этой услуге.
Мы настраиваем репликацию в рамках услуг администрирования серверов на любых CMS.
Добавить комментарий