Назад | Перейти на главную страницу

Облачный хостинг: нужен ли он?

У нас есть сервер (4 ГБ ОЗУ, два 4-х ядерных Intel Xeon E5420), выполняющий следующие задачи:

Мы ожидаем большой (до сотен тысяч) приток пользователей в ближайшие недели. Мое начальство обеспокоено тем, что наша текущая установка может не справиться с нагрузкой, и рассматривает возможность перехода на облачный хостинг, однако я не уверен, что это поможет. Насколько я понимаю облачные вычисления, виртуализация не принесет большой пользы, если мы не сможем разделить рабочую нагрузку на несколько машин (если у них нет отдельных серверов, значительно более мощных, чем наш). Они предлагают кластеры MySQL, однако серверные скрипты просто читают / записывают некоторые значения в несколько строк и не выполняют никаких ресурсоемких SQL-запросов, поэтому я снова не уверен, что кластеры MySQL будут иметь большое значение по сравнению с Apache / Накладные расходы PHP + задержка сети MySQL. Что касается веб-сайта, мы также можем переместить большую часть статического контента в CDN, поскольку у нас есть несколько видеоклипов, которые могут снизить нашу пропускную способность.

Итак, принесет ли нам облачный хостинг хоть какую-то пользу?

Может быть, а может и нет. Как вы подозреваете, если вы не сможете легко разделить рабочую нагрузку системы на отдельные блоки, которые могут обмениваться данными по сети, вы не увидите никакой выгоды от обращения к «облачному» провайдеру с точки зрения масштабируемости. Есть "облачные" провайдеры, которые предлагают машины гораздо большего размера (во всяком случае, с точки зрения ОЗУ - я сомневаюсь, что вы всегда будете получать эквивалент восьми ядер E5420 на любом из них), но вы можете получить больше ОЗУ. для вашего существующего сервера, если необходимо.

Я бы потратил время, глядя на каждый отдельный компонент системы, оценивая использование ресурсов каждым и, следовательно, насколько «экономией» было бы перемещение его в отдельную коробку. Затем посмотрите, как можно кластеризовать каждый компонент (начиная с самого ресурсоемкого), чтобы работу этого компонента можно было разделить на несколько машин (так называемая «горизонтальная масштабируемость»). После того, как вы сделаете это для всего, что может быть использовано где-то близко к ресурсам машины при ваших прогнозируемых уровнях нагрузки, вы можете обратиться к своему начальству с планом и оценкой усилий и затрат, чтобы разделить все это.

Ничто из этого не связано с «облаком», это просто базовое комплексное исследование того, как справиться с растущей пользовательской нагрузкой. Вы можете начать использовать преимущества «облачных» вычислений, когда вам действительно нужно в спешке масштабировать, вы можете просто нажать кнопку и вздрогнуть! в вашем распоряжении больше ресурсов. Не ждите, пока пики нагрузки не начнутся, чтобы попробовать это - если вы вообще цените время безотказной работы, всегда запускайте как минимум два из каждого масштабируемого компонента, определите, какие пороги срабатывания триггера расширения будут хорошими. продвигайтесь, отслеживайте их и создавайте новые экземпляры как можно скорее. Затем поместите систему под огромную нагрузку и проверьте, что все работает так, как вы ожидаете.

Как указывает Пауска, большая часть ценности виртуализированной среды заключается в избыточности и доступности, а также в масштабировании. Возможно, вы захотите рассмотреть решение в стиле частного облака, такое как Rackspace, или развернуть собственное, если у вас есть хороший персонал VMWare в доме. Однако это займет некоторое время, как показывает отличный пост womble, чтобы понять это правильно.

Если у вас быстро приближается крайний срок, и у вас нет времени исследовать сегментирование своих приложений, на ум приходит следующее:

  • Попробуйте переместить веб-службу на отдельный сервер, чтобы MySQL мог иметь целую 8-ядерную машину. Это очень важно в средах MS, но я уверен, что это имеет значение и в стеках LAMP.
  • Дайте всем задействованным машинам больше ОЗУ - ОЗУ дешево. По моему опыту, время, которое вы потратите на его исследование, будет стоить больше, чем оперативная память, так что просто сделайте это.
  • Рассмотрите возможность обратного кэширования. Установка обратного кэша перед всем этим может облегчить нагрузку и улучшить масштабирование без каких-либо осложнений.
  • Прочтите отличный ответ womble и следуйте его советам.