Создать ответ 
 
Рейтинг темы:
  • Голосов: 1 - Средняя оценка: 1
  • 1
  • 2
  • 3
  • 4
  • 5
Как сделать облачный (кластерный) хостинг за пару копеек*
Автор Сообщение
Karman Не на форуме
Senior Member
****

Сообщений: 339
Зарегистрирован: 14-12-2009
Рейтинг: 0
Сообщение: #1
Как сделать облачный (кластерный) хостинг за пару копеек*
Три года назад у меня была интересная задача. Необходимо было собрать платформу, объединявшую несколько стоек с серверами в единое целое, для динамического распределения ресурсов между сайтами написанным для LAMP платформы. Причем так, чтоб вмешательство в код сайтов было минимальным, а еще лучше — вообще отсутствовало.
При этом никаких дорогих решений вроде Cisco Content Switch или дисковой полки с оптоволокном использовать нельзя — не хватало бюджета.
А кроме того, разумеется, в случае выхода одного из серверов из строя — это не должно было влиять на работу платформы.

Голь на выдумки хитра

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

Начнем с начала, да прибудет со мной КО

У меня был выбор, на чем организовать платформу. Это OpenVZ и XEN. У каждого есть свои плюсы и минусы. OpenVZ имеет меньший оверхед, работает с файлами а не блочными устройствами, но не умеет запускать что-то кроме Linux'овых дистрибутивов. XEN позволяет запустить и Windows, но более сложен в работе. Я использовал OpenVZ, так как это более подходило для решения задачи, но вас-то никто не ограничивает в выборе.

Затем я разделил сервера на места под VDS, по одной на каждое ядро. Сервера были разные, по этому у меня был набор от 2-х до 16-и виртуалок на каждом из серверов. В «среднем по палате» вышло ~150 виртуалок на стойку.

Как синхронизацировать данные

Следующий пункт — это оперативное создание VDS по требованию + защита от поломки любого сервера. Решение было простым и красивым.
Для каждой VDS создается начальный образ в виде файлов на LVM разделе. Этот образ «разливается» по всем серверам платформы. В результате мы имеем бекап всех проектов на каждом сервере (параноики плачут от умиления), а создание новой VDS «по запросу» упростилось до снапшота с образа и его старта в виде VDS (дело буквально нескольких секунд).

База и API

Если с целостностью файлов было все просто, то вот с синхронизацией базы дело обстояло хуже. С начала я попробовал классический пример — master-slave, и столкнулся с классической проблемой: slave отставал от master (да, и спасибо за репликацию в один поток, очень большое спасибо).
Следующим шагом был Mysql-Proxy. Как сисадмину, мне подобное решение было очень удобным — поставил и забыл, только конфиг обновлять надо при добавлении/удалении новых VDS. Но у разработчиков было свое мнение. В частности, то, что проще написать некий класс PHP для синхронизации INSERT/UPDATE/DELETE запросов, чем изучать Lua, без которого Mysql-Proxy бесполезен.
Результатом их работы стал так называемый API, который умел находить соседей широковещательным запросом, синхронизироваться до актуального состояния и информировать соседей о всех изменениях с базой.
Но все же стоит изучить Lua и сделать нативный режим работы, когда все запросы будут синхронизированы с соседями.

Слава FreeBSD

Балансер — это можно сказать ключевой аспект платформы. Если упадет балансирующий сервер, то вся работа не будет иметь никакого смысла.
Именно по этому я использовал CARP для создания отказоустойчивого балансера, выбрав FreeBSD в качестве ОС и Nginx в качестве балансера.
Да-да, дорогущий NLB был заменен двумя слабыми машинками с FreeBSD (маркетологи в ярости).

И самое главное — как это работало

При старте платформы для каждого сайта запускалось по одной копии и monit на баланесере следил, за тем, чтобы первичная копия всегда работала.
Кроме того на балансере был установлен анализатор статистики Awstats, который предоставлял все логи в удобном формате, а главное — там был скрипт, опрашивающий каждую VDS по SNMP на предмет ее нагрузки.
Как мы помним, я выделял на каждую VDS по одному ядру, следовательно Load Average в 1 — это будет нормальной нагрузкой для VDS. Если LA становился 2 или выше — запускался скрипт, создающий копию VDS на случайном сервере и прописывал ее в апстрим nginx'а. А когда нагрузка на дополнительной VDS падала меньше 1 — соответственно, все удалялось.

Резюмирую

Если взять стойку с серверами и свитчем поддерживающим CARP протокол, то для создания облачного хостинга будет необходимо:
Изучить Lua и настроить прозрачную синхронизацию через Mysql-Proxy
Прикрутить биллинг для учета дополнительных копий VDS и трафика
Написать веб-интерфейс для управления VDS

*На заполнение стойки хватит суммы с четырьмя нулями. По сравнению с решениями от брендов, где цена одной стойки — сумма с шестью нулями, это действительно пару копеек.
Моя ссылка

Опубликовано: 25-08-2010
Подробнее: http://www.karman.com.ua/topic/24174-kak...ng-za-par/
25-08-2010 10:33
Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  Дешевый SSD хостинг на DDR4 с DDOS защитой для 10 сайтов за 69 рублей! HostiMan 27 4,261 12-09-2018 22:23
Посл. сообщение: HostiMan
  FairyHosting.com - хостинг в Европе FairyHosting 18 5,243 17-07-2018 16:11
Посл. сообщение: FairyHosting
  King Servers - проверенные сервера и хостинг. 10% скидка для форумчан King_servers 15 725 28-06-2018 17:05
Посл. сообщение: King_servers
  Требуется хостинг Karman 8 4,125 11-05-2018 14:40
Посл. сообщение: master-server
  Zomro.com - Хостинг и поддержка на отлично. Сэкономите прилично. Zomrohost 42 12,195 08-05-2018 04:40
Посл. сообщение: slither
  Подскажите хостинг Scorpio2139 8 3,388 20-01-2018 11:39
Посл. сообщение: cubohe
  Твой приятный хостинг за полцены:) AllaHost 46 19,859 16-01-2018 10:48
Посл. сообщение: AllaHost
  Бесплатный хостинг Kolyan 12 18,200 02-10-2017 15:39
Посл. сообщение: Slardar
  Go4Cloud: Недорогой качественный хостинг из Голландии go4cloud 1 2,154 08-08-2017 07:41
Посл. сообщение: tiran.blok
Wink Хостинг с немецким качеством. SSD диски ★ PHP 7 ★ Бесплатный SSL domainlines 0 1,016 19-01-2017 13:44
Посл. сообщение: domainlines



Пользователи просматривают эту тему: 1 Гость(ей)
Обратная связьSitesCo.ruВернуться к началуВернуться к содержимомуЛёгкий режимСписок RSS