Как использовать облако для размещения веб-сайтов?
Для размещения веб-сайтов в настоящее время мы используем специальные Linux-боксы, размещенные в Великобритании. Но управлять ими - это кошмар, резервные копии, огромные нагрузки, простои и т.д...
Я изучал OpenStack, который был разработан RackSpace. Можно ли использовать облачную платформу, которую мы размещаем на наших серверах, для размещения веб-сайтов?
Я понимаю, что облачная платформа позволяет вам расширять инфраструктуру, а это именно то, что нам нужно. Но как мы используем его для запуска MySQL и Apache? В основном для сайтов Wordpress?
Редактировать: сайты просто обычные Wordpress-сайты, использующие стандартный стек LAMP.
3 ответа
Большинство "облачных" провайдеров предоставляют вам IaaS. Это означает, что вы получаете набор виртуальных машин, которыми вы можете управлять по своему желанию. Короче говоря, это просто сервисы VPS, с добавленной возможностью API для создания новых серверов, когда вы хотите. Иногда вы можете привязать этот API к некоторым простым метрикам (загрузка ЦП, трафик и т. Д.), Что делает его немного проще.
Но это не волшебство. Это не сделает ваш сайт масштабируемым без работы с вашей стороны. Что вам нужно сделать, так это спроектировать вашу систему так, чтобы вы могли добавлять больше (похожих) машин для распределения нагрузки и чтобы она могла пережить потерю некоторых из этих машин.
Первые шаги:
веб-приложение "Ничего общего": убедитесь, что на всех страницах нет состояний, насколько это возможно. Любое постоянство между HTTP-запросами должно храниться не локально. Первоначально это означает, что все "критические" должны попадать в базу данных, а все, что не критично для чего-то вроде memcached.
балансировщик нагрузки, отказоустойчивый распределитель. Предоставляется либо хостингом, либо вашим собственным (HAProxy, лак, NginX), запущенным перед вашими приложениями (обязательно сделайте его также избыточным).
реплицированная база данных. например, MySQL в ведущем / ведомом устройстве и некоторый механизм отработки отказа, который переносит "плавающий" IP-номер в ведомое устройство, если ведущий отказывает. или мастер / мастер, который также может дать вам дополнительную пропускную способность за счет задержки. Amazon также предоставляет вам MySQL-совместимую базу данных со всей необходимой вам избыточностью. Или перейдите к чему-то совершенно другому, например, к риаку, кассандре... на самом деле, это самая трудная часть; но простая репликация MySQL на два больших экземпляра имеет большое значение; особенно если вы умны на уровне кеша.
Звучит так, будто вы ищете Платформу как сервис или PaaS. С PaaS провайдер берет на себя все оперативные детали. Развертывание вашего приложения может быть столь же простым, как предоставление поставщику URL-адреса для вашего хранилища исходного кода.
Некоторые, которые поддерживают PHP,
Вот сравнение трех продуктов, написанное разработчиками каждого.
Вы можете сделать несколько вещей в облаке. Я подробно расскажу о том, что поддерживает мой провайдер. Я использую Linode ( http://www.linode.com/), который имеет шесть центров обработки данных по всему миру (включая один в Лондоне). Они отличные, по приемлемой цене, имеют большой набор функций и очень быстро справляются со временем. "Линода" - это виртуальная машина, которую вы приобретаете (их терминология).
Облачная инфраструктура Linode поддерживает предоставление и удаление Linodes на лету. Это означает, что если вам нужна машина, чтобы поиграть с ней в течение часа / дня / недели / месяца / года, вы платите только за то, что используете.
Linode поддерживает так называемые StackScripts, которые позволяют автоматизировать процесс, с помощью которого вы можете подготовить сервер. Я не знаю подробностей, но AFAIk вы можете указать ОС, расположение дисков, своп в конфигурационных файлах и т. Д.
У Linode также есть обширный API для биллинга, предоставления и т. Д.
Linode также поддерживает балансировку нагрузки в виде NodeBalancer.
Эти четыре функции, связанные друг с другом, могут позволить вам настроить что-то вроде следующего:
Вы сказали, что Linode для Web "вещи", такие как Apache/PHP и Linode для MySQL. Если у вас все настроено правильно, у вас могут быть скрипты, которые отслеживают использование ресурсов на ваших машинах и автоматически покупают, предоставляют, загружают и автоматически добавляют его в кластер MySQL или NodeBalancer. Это означает, что, если вы получаете огромный всплеск трафика (скажем, с косой чертой), вы автоматически масштабируете все, что вам нужно для соответствия трафику / обработке / пропускной способности / любым требованиям. У вас будет кластер MySQL, реплицирующийся взад и вперед, с синхронизацией сколь угодно большого количества серверов MySQL, тогда у вас будет множество веб-серверов, балансирующих нагрузку PHP.
Linode также обеспечивает некоторую избыточность при отказе IP, а также пул пропускной способности, IPv6 и т. Д. Я также хотел бы сказать, что я никоим образом не связан с Linode, просто счастливый клиент.