Хостинг LAMP на AWS Cloud - какой PHP-код переписать? - PullRequest
3 голосов
/ 07 сентября 2011

Я хочу разместить приложение PHP в облаке, чтобы воспользоваться преимуществами масштабируемости по требованию.Я боюсь, что если мое приложение будет размещено в Digg / Slashdot / популярных блогах (надеюсь, во всех этих местах), то мой сайт, скорее всего, рухнет.Итак, я изучал A * mazon EC2, RackSpace Cloud Servers и т. Д. * Но меня смущает Облачная архитектура .Размещать приложение PHP на обычном разделяемом хостинге на основе cPanel очень просто.FTP загрузите ваш код в каталог public_html, и все готово.

Но с облаком у нас будет несколько серверов.Насколько я понимаю, в облаке вы получаете некоторое пространство виртуальных машин за балансировщиком нагрузки.Когда вам нужно больше ресурсов, вы просто предоставляете другую виртуальную машину.Балансировщик нагрузки отправляет запрос на все доступные ресурсы.Итак, как вы справляетесь со следующими вещами:

  • Управление сеансами / непрерывность сеансов : Теперь одно из очевидных явлений заключается в том, что Cloud-Server-1 не собираетсязнать о пользовательской сессии на Cloud-Server-2.Итак, как это происходит в облачном хостинге?Должен ли я переписать некоторый PHP-код, который имеет дело с сессиями?(Я думаю о размещении сценария PHP для электронной коммерции, сделанного в Yii framework)
  • Нужно ли переписать код PHP, который имеет дело с сессией, или естьслой абстракции, который обрабатывает это?По сути, я просто загружаю приложение по FTP, а затем какой-то уровень абстракции позаботится обо всем или мне придется переписать какой-то код?

  • Масштабирование базы данных :При большой нагрузке, я думаю, я могу настроить Amazon EC2 или любой облачный сервер для автоматического предоставления большего количества серверов.И, кроме того, вероятно, в любом случае неплохо иметь несколько серверов для увеличения скорости и надежности.Но я не уверен, как это работает.Я имею в виду, что «данные» в базе данных должны быть общими.

Итак, как обслуживаются несколько серверов баз данных? Если каждая база данных является копией друг друга в режиме реального времени.Тогда как это уменьшит нагрузку?Я имею в виду, если вы выполняете запрос к DB1, а затем в режиме реального времени этот запрос также выполняется в DB2 (если нет, данные в DB2 не будут такими же, как DB1), тогда обе базы данных будут иметь одинаковую нагрузку.

Некоторые облачные серверы, которые я рассматриваю:

  1. Amazon EC2
  2. RackSpace Cloud Sites
  3. RackSpace Cloud Servers
  4. PagodaBox (все ещев бета-версии и не разрешает использовать кроны): http://www.pagodabox.com/
  5. Архитектура масштабируемого веб-сайта Go Grid: http://www.gogrid.com/cloud-hosting/cloud-hosting-packages/scalable-website.php (, хотя это очень и очень дорого. Я надеялся начатьс одного сервера для начала, а затем автоматически выделять дополнительные веб-серверы и / или дополнительные DB-серверы для обработки скачков нагрузки по мере необходимости )

Любые советы приветствуются.

Спасибо

1 Ответ

0 голосов
/ 08 сентября 2011

Я разговаривал с техподдержкой хостинговой компании. Он не выглядел как настоящий фанат, но дал мне такой совет: создать несколько веб-серверов и несколько серверов БД. Вот как:

  • Несколько веб-серверов : он сказал, что вы должны загрузить изображение вашего приложение на нескольких серверах. Первоначально 1 сервер запуска. Если нагрузка высокая, запусти другое изображение. Балансировщик нагрузки будет автоматически начинать отправлять запросы на этот новый экземпляр вашего веб-сайта сервер.
  • Серверы БД : создать несколько серверов БД. 1 мастер и несколько рабы.

Он сказал, что вам нужно переписать некоторый код PHP и сделать следующее:

  1. Обработка сеансов : он сказал, измените ваш PHP-код так, чтобы сеансы сохранялись в «БД».

  2. Код, связанный с БД : Удалить все операции «соединения». Я не уверен, возможно ли вообще удалить ВСЕ операции соединения. Какие-нибудь советы о том, как это сделать? Нет ли способа "масштабировать", сохраняя операции " join "?

Вот и все. В самом деле, это так? Или вы думаете, что есть и другие вещи, о которых нужно позаботиться?

Также для создания нескольких экземпляров сервера БД (master-slave). Пишите только мастеру. Мне нужно иметь как минимум два (2) сервера БД, работающих ВСЕГДА. Если нагрузка не высока, не буду ли я платить за дополнительный сервер БД без причины?

...