Архитектура PHP-приложения на Amazon EC2

Просто идея или взлома.

div {
  background-color: blue;
  width: 10%;
  transition: background-color 0.5s, width 0.5s;
  font-size: 0;
}

div:hover {
  width: 20%;
  background-color: red;
}
  
img {
  width: 100%;
  height: auto;
  visibility: hidden;
}
<div>
  <!-- use an image with target aspect ratio. sample is a square -->
  <img src="http://i.imgur.com/9OPnZNk.png" />
</div>

30
задан Andy Baird 20 October 2009 в 23:40
поделиться

2 ответа

Так много вопросов, но все они хороши.

Что касается масштабирования, у вас есть несколько вариантов.

Первый - начать с одного блока. Вы можете увеличивать масштаб - с помощью более мощного бокса. EC2 имеют экземпляры разного размера. Это включает в себя миграцию серверов каждый раз, когда вам нужен ящик побольше.

Проще добавить серверы. Вы можете начать с одного экземпляра для Apache и MySQL. Затем, когда трафик возрастет, создайте отдельный экземпляр для MySQL и укажите в своем приложении этот новый экземпляр. Это создает хороший слой между приложением и базой данных. Похоже, это хорошая отправная точка, основанная на вашем трафике.

Затем вам, вероятно, потребуется больше мощности приложения (веб-серверы) или больше мощности базы данных (кластер MySQL и т. Д.). Ваши записи DNS могут указывать на пару передних компьютеров, на которых запущено какое-нибудь программное обеспечение для балансировки нагрузки (попробуйте Pound ). Эти серверы балансировки нагрузки распределяют запросы на ваши веб-серверы. В EC2 есть Elastic Load Balancing , который является альтернативой самостоятельному управлению и, вероятно, проще - я не использовал его лично.

Еще кое-что, о чем следует знать - EC2 не имеет постоянного хранилище . Вы должны сами управлять постоянными данными, используя Elastic Block Store. Это руководство - отличное руководство о том, как это сделать с помощью автоматического резервного копирования.

Я рекомендую вам приобрести несколько зарезервированных инстансов, если вы решите, что EC2 - это путь вперед. Вы сэкономите около 50% за 3 года!

Наконец, вас могут заинтересовать такие услуги, как RightScale , которые предлагают услуги управления по цене. Доступны и другие провайдеры.

14
ответ дан 28 November 2019 в 00:25
поделиться

Первый шаг - разделить проблемы. Я бы выделил отдельный сервер MySQL и, возможно, выделенный модуль memcached, в зависимости от того, насколько высока ваша нагрузка. Затем я бы отслеживал использование памяти и ЦП на каждой коробке и смотрел, где можно оптимизировать, где это возможно. Это можно сделать, создав новые коробки Media Temple. Я также порекомендовал бы Slicehost в качестве более дешевой и удобной для разработчиков альтернативы.

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

  • Использование более эффективного веб-сервера, такого как nginx , для обработки статического обслуживания файлов и затем обратных запросов прокси-приложения к отдельному экземпляру Apache.
  • Реализуйте PHP с FastCGI поверх nginx, используя что-то вроде PHP-FPM , полностью избавившись от Apache. Это может быть отличной альтернативой, если ваши потребности в Apache не выходят далеко за рамки mod_rewrite и более простых модулей Apache.

Если вы предпочитаете более высокоуровневый подход «сделай сам», вы можете захотеть чтобы проверить Scalr ( код в Google Code ). Стоит посмотреть видео на их сайте. Он предоставляет масштабируемую среду хостинга с использованием Amazon EC2. Это технология с открытым исходным кодом, поэтому вы можете загрузить ее и реализовать самостоятельно на своем собственном сервере управления. (Коробка вашего медиа-храма, Возможно?) Scalr имеет предварительно созданные AMI (устройства EC2), доступные для некоторых распространенных вариантов использования.

  • web : использует nginx и его многочисленные возможности: балансировка нагрузки программного обеспечения, обслуживание статических файлов и т. д. есть один из них, и он, вероятно, будет реализовывать какое-то соединение с Amazon EBS или решением для постоянного хранения, как упомянуто dcaunt.
  • app : сервер приложений с Apache и PHP. Вероятно, у вас их будет много, и они будут созданы автоматически, если потребуется обработать больше нагрузки. Этот тип сервера будет содержать копии вашего приложения ZF.
  • db : сервер базы данных с MySQL. Опять же, у вас, вероятно, будет много из них, и больше подчиненных экземпляров будет создано автоматически, если потребуется обрабатывать больше нагрузки.
  • memcached :
10
ответ дан 28 November 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: