Я новичок во всем этом - недавно мне удалось запустить свой сайт на EC2. В качестве следующего шага я хочу узнать, как масштабировать веб-сайт. У меня есть общее представление, но я хотел бы получить мнение экспертов о том, как это сделать.
Мой веб-сайт основан на LAMP, но также имеет сервер Red5, который позволяет пользователям записывать сообщения, а также используется для их воспроизведения.
В настоящее время я планирую настроить эту архитектуру для первоначального масштабирования. Разверните четыре небольших инстанса EC2 для следующих целей:
Экземпляр-1: в этом экземпляре я буду запускать базу данных MySql
Экземпляр-2: в этом случае я буду запускать сервер red5
Экземпляр-3 и Экземпляр-4 Эти 2 экземпляра будут использоваться для развертывания веб-сайта, и на них будет работать Apache. Они будут связываться с сервером mysql на экземпляре 1 и сервером red5 на экземпляре 2, используя внутренний IP-адрес. В случае необходимости я запускаю еще один экземпляр того же
EBS - у меня будет EBS, скажем, 50 ГБ, где будут храниться все данные mysql. Также red5 будет использовать этот EBS для хранения видеосообщения.
Load-Balancer - используйте балансировщик нагрузки, предоставленный Amazon, для балансировки нагрузки Instance-3 и Instance-4.
Это то, что я имел в виду. Я мог бы быть далеко, пожалуйста, потерпите меня. Также я не принял во внимание случай масштабирования сервера MySql, поскольку в настоящее время я не знаю, как это будет сделано, и нужно ли это изначально.
Я знаю, что Amazon предоставляет автоматическое масштабирование и масштабирование mysql, но я не хочу сейчас вдаваться в подробности.
Ваш отзыв приветствуется Спасибо
На эту тему есть целая серия статей @ http://highscalability.com
Я не использовал AWS, но у меня есть опыт работы с виртуальными экземплярами в центре обработки данных, с использованием виртуальных экземпляров в стойке и appengine.
То, как вы масштабируете (вверх или вниз), во многом зависит от того, что вы пытаетесь сделать. Некоторые приложения будут использовать интенсивный ввод-вывод, некоторые - процессор. Узким местом может быть входящий ввод-вывод, вычислительная мощность или внутренний ввод-вывод, или их комбинация в разных количествах в зависимости от того, на каком этапе жизненного цикла приложения вы находитесь. Все потребует немного другой стратегии.
Используя что-то вроде AWS, вы, как правило, хотите масштабироваться, и вам нужно начинать с мыслей о конце и поддерживать слабую связь между приложениями. Это позволит вам создать еще один экземпляр для масштабирования по мере необходимости. Когда вы только начинаете, можно хранить экземпляр базы данных в том же экземпляре, что и основное приложение, но обычно это первое, что нужно выделить на собственный сервер.
Таким образом, вы можете начать со всего, что работает в одном экземпляре. Затем вы начинаете получать некоторый трафик и замечаете, что база данных съедает ваш процессор. Итак, вы перемещаете базу данных в другой экземпляр, и все отлично. Пока вы не начнете получать больше трафика ... и вы не заметите, что ваш интерфейс не успевает за трафиком. Итак, вы запускаете еще пару экземпляров, балансируете их нагрузку, и на какое-то время вы довольны, и масштабируете, возможно, до дюжины веб-серверов ... Но затем вы получаете еще немного трафика, и пока интерфейсная часть сохраняет вверх, теперь ваша машина базы данных начинает ломаться. Затем вы реплицируете свою базу данных на ведущее устройство и пару ведомых устройств, и все в порядке ... и так далее, и тому подобное.
Я работал над Amazone EC2 / EBS и т.д. некоторое время назад, когда он был запущен, и успешно переместил один из больших сайтов с физических хостов в его среду.
Я задокументировал свой опыт в своем блоге, например http://linuxadminzone.com/how-to-install-setup-and-config-haproxy-loadbalancer-for-content-switching/ есть еще сообщения, но я не могу вставить сюда ссылку. Надеюсь, это поможет вам.