Pull to refresh
0

Представляем нашу разработку – гео-хостинг

Reading time 4 min
Views 11K
Зачем мы это делали?

Общеизвестно, что на скорость загрузки страницы сайта сильно влияет то, насколько далеко пользователь находится от сервера, на котором этот сайт размещен.
Если пользователи заходят на сайт в основном из одного региона – вопрос скорости загрузки решается легко – сайт размещают на сервере, который физически находится в этом регионе. Но что делать, если на сайт заходят из нескольких, отдаленных друг от друга, регионов или со всего мира?
Мы попытались дать ответ на этот вопрос, разработав свою CDN (Content Delivery Network, система доставки контента) и предоставляя новую услугу – гео-хостинг.
Гео-хостинг подразумевает размещение сайта сразу на нескольких серверах, которые размещены в географически отдаленных дата центрах, и организацию работы системы так, чтобы информация пользователю отдавалась тем сервером, который географически к нему ближе.


Как мы это делали?

В качестве первого шага к построению системы доставки контента мы установили 3 сервера в датацентрах в Украине, России и США.
Контент хранится на каждом сервере. Система работает таким образом, что владельцу сайта не нужно изменять работу веб-приложения для работы с распределенной архитектурой. Пользователям предоставляется панель управления хостингом cPanel для управления и загрузки информации на сервер.
В первую очередь необходимо было найти систему, которая позволила бы копировать изменения в файловой структуре данных сайта. Причем синхронизировать данные нужно во всех направлениях, то есть когда изменения в файлы сайта вносятся с любой точки geo-хостинга. Для решения этой задачи нами была выбрана программа Unison. Она имеет широкие возможности для копирования данных одновременно между несколькими серверами.
В принципе, можно было и не производить синхронизацию данных, а использовать один файл-сервер для их хранения и подключать любые точки гео-хостинга к этому серверу, однако при такой схеме выход из строя файл-сервера приведет к недееспособности всех точек системы. Опять же, можно сделать кластер для файл-сервера, но не стоит забывать о возможных задержках в доступе фронтенд-сервера к нашему файл-серверу при такой организации.
Далее мы приступили к построению DNS-системы, ведь именно она должна была помочь нам отправлять пользователя на ближайший, относительно его гео-расположения, сервер. Используем мы широко известный GeoIP. Установив специальный патч, использующий GeoIP, в DNS-систему, мы можем определять, а главное — перенаправлять пользователей на нужный (ближайший к ним) сервер.

То есть схематически работает это так:

image

Важным этапом в построении CDN является решение вопроса синхронизации баз данных. В нашем гео-хостинге мы используем модель системы master-slave-slave, то есть один сервер является мастером, а другие два сервера его дублируют. Slave-сервера с определённой периодичностью опрашивают master-сервер на предмет изменений в базе. Таким образом, все изменения на master-сервере повторяются на slave-серверах. Так создаётся избыточность данных на двух серверах и тем самым достигается высокая доступность и надёжность данных. Важным преимуществом этой репликации, например, перед обычным копированием, является то, что мы переносим по сети каждый раз только внесенные изменения, а не все данные. Master-сервер все изменения в базе пишет в “бинарный журнальный лог”, присваивая каждой операции номер. Когда slave-сервер обращается к нашему главному серверу, он сообщает номер последней операции, которую он уже произвёл у себя, и получает все новые изменения, отсчитывая от этого номера.
Данную архитектуру мы контролируем при помощи Zabbix, который очень удобно использовать для онлайн мониторинга серверов. С его помощью мы контролируем работу как мастера, так и двух его реплицирующих серверов. Zabbix также следит за системой DNS-серверов, так как это очень важное звено в системе гео-хостинга.

Что мы получили?

Один из наших клиентов любезно согласился потестировать нашу разработку на своем сайте. Результаты работы порадовали и его, и нас.
На первом скриншоте — результаты опроса (из разных точек мира) сайта, который находится на одном сервере в Украине:
Опрос сайта, размещенного в Украине

На втором – опрос сайта, который размещен на трех серверах — в Украине, России и США:
Опрос сайта, размещенного в Украине, России и США

И для наглядности – сравнение на диаграмме:
image

Что пока не удалось?

Сделать такое решение для многосайтовых аккаунтов. Пока работает только для варианта один сайт – один аккаунт cPanel.

Побочные действия

Здесь ничего страшного :)
Помимо основной задачи – увеличения скорости доступа, гео-хостинг дает еще несолько преимуществ:
  • меньшая уязвимость к DDOS-атакам за счет перераспределения потока запросов к сайту, а также возможности ограничить запросы из определенного региона;
  • нагрузка, создаваемая сайтом, распределяется между несколькими серверами;

Мы также продолжаем развивать построенную систему, чтобы найти все новые и новые полезные «побочные действия».

Как получить?

Пока можно получить бесплатно на месяц – в тестирование. Потом платно – подробности на странице.

Также хочется отметить, что данное предложение является базовым, но мы с радостью пойдем навстречу пожеланиям клиента и настроим подобную систему для VPS и серверов, Также можем рассмотреть вопрос размещения сайта на серверах в странах, отличных от базовых трех – Украины, России, США.
Tags:
Hubs:
+22
Comments 104
Comments Comments 104

Articles

Information

Website
hostpro.ua
Registered
Founded
2001
Employees
31–50 employees
Location
Украина