0

Я только что вошел в мир электронной коммерции, и я пытаюсь запустить мой веб-сайт Magento.Autoscale Magento in the cloud

Я использую облако AWS для размещения своего сайта. Я пытаюсь использовать архитектуру, где я могу запускать несколько серверов, подключенных к одному серверу БД. В частности, я хочу использовать группу масштабирования AWS Auto вместе с ELB для запуска нескольких экземпляров EC2 во время высокой нагрузки. Существует только один экземпляр базы данных Mutli AZ RDS.

В качестве начальных испытаний я попытался создать 2 экземпляра ec2 и установить пурпурный на обоих из них. Я использовал ту же RDS DB для них обоих. Но, как выясняется, magento хранит базовый url веб-сервера в самой базе данных. Это означает, что я могу хранить только один базовый URL-адрес веб-сайта magento, работающего на одном конкретном сервере.

Чтобы точно указать magento, сохраните базовый url в таблице core_config_data в столбце «путь», где значения строк ares «web/unsecure/base_url» и «web/secure/base_url», а значение столбца для соответствующей строки указывает URL-адрес установленного веб-сервера magento. Мой вопрос в том, как я могу использовать несколько серверов с использованием автоматического масштабирования EC2, если magento разрешает только один адрес сервера в базовом URL-адресе.

Вот частичный вид таблицы с 2-мя рядами -

config_id scope  scope_id path      value 
5   default 0   web/unsecure/base_url  http://server1.com/magento/ 
6   default 0   web/secure/base_url  http://server1.com/magento/ 

Существуют ли какие-либо другие известные способы каким-то образом использовать горизонтальное масштабирование при тяжелых условиях нагрузки в Magento.

ответ

0

Обычно вы устанавливаете балансировку нагрузки перед узлами для распределения нагрузки, и каждый узел настроен на использование одного и того же base_url. Репликация MySQL может быть использована, если вы хотите использовать несколько серверов db, но я так и не нашел необходимости делать это. Не используется amazon ec2 с magento, но имеет аналогичную настройку в выделенной серверной среде с двумя узлами, одним сервером db, балансировщиком нагрузки и общим носителем.

Диаграмма здесь полезна, особенно с общим хранилищем для мультимедиа, и вам нужно будет сделать что-то подобное. http://www.severalnines.com/blog/how-cluster-magento-nginx-and-mysql-multiple-servers-high-availability

Кроме того, я нашел, что Amazon, как представляется, обеспечивает балансировку эластичной нагрузки, что и является вашим после того, как я думаю. http://aws.amazon.com/documentation/elasticloadbalancing/

1

Я не думаю, что балансировка нагрузки работает так.

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

Вы пытаетесь настроить очень сложную систему.

Вы можете посмотреть, как переопределить некоторые функции, если вы хотите иметь разные значения для защищенных и незащищенных URL-адресов. Попробуйте прочитать этот код, чтобы вы начали:

//file app/code/core/Mage/Core/Model/Store.php 
//class Mage_Core_Model_Store 
//function getBaseUrl() 
//function getDistroServerVars() 

//file app/code/core/Mage/Core/Model/Url.php 
//class Mage_Core_Model_Url 
//function getBaseUrl() 

//file app/code/core/Mage/Core/Controller/Request/Http.php 
//class Mage_Core_Model_Http 
//function - I don't know, any of them, none of them 

и посмотреть на какие-либо файлы со строкой «» substDistroServerVars в них или isDirectAccessFrontendName может выставить что-то. getDistroServerVars обсуждается в конце этого great article by the almighty Alan Storm.

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

Если это ваш первый набег в Magento и вы действительно думаете, что вы собираетесь получить объем трафика в ваш магазин, который требует балансировки нагрузки более двух серверов, то вы можете себе позволить, * должны позволить **, третье лицо хостинг и получить профессионалов со многими многолетним опытом работы Magento при тяжелых нагрузках на нескольких серверах. Вы также захотите передать (по крайней мере) изображения в CDN.

* Я имею в виду, если ваш магазин имеет такой высокий объем, то он имеет высокий доход, и вы должны инвестировать этот доход в ваш магазин: профессиональный хостинг с поддержкой 24/7. В противном случае время простоя будет дорогостоящим, а длительная реализация будет означать потерянный доход.

* Если вы просто пытаетесь это для удовольствия и узнать что-то о настройке Magento на нескольких серверах, то я рекомендую две вещи:

1) Практика получения Magento работает на одном сервере первый - и optimsing для объема там (кэширование, компиляторы, настройка БД, анализ файлов журналов, плоские таблицы, задания cron, CDN, возможно комбинированные JS и CSS, настройка веб-сервера и правильное использование заголовков, возможно, полный кеш страниц и разбрызгивание Redis), потому что не является тривиальным списком на одном сервере, не обращая внимания на два + сервера БД и ELB.

И 2) практика получения Apache или nginx для обслуживания контента с балансировкой нагрузки с вашим сертификатом SSL электронной коммерции. Только тогда вы должны попытаться присоединиться к двум системам. Будьте готовы потратить много месяцев на это - включая выяснение Seige, AB или jmeter для моделирования нагрузочного тестирования.

Но если вы действительно хотите, чтобы AWS ELB установил здесь несколько отличных ресурсов, чтобы начать работу, особенно подробный учебник Адриана Дюка (первая ссылка) - обратите особое внимание на детали в последнем разделе в этой статье под названием «Magento», , что может быть ответом на ваш вопрос.

Getting and scaling Magento in the cloud Адриан Герцог

Using AWS Auto Scaling with an Elastic Load Balancer cluster on EC2 (на самом деле WordPress установить, не Magento, но г-н Шредер знает, что его Magento)

Running Magento in an AWS Environment (Все градом Alan Буря)

1

я имел достаточно большой успех, превратив Magneto в пакет beanstalk.Шаги (свободно) были:

  1. Установите GIT локально
  2. Установить инструменты AWS Командная строка
  3. Установка AWS Beanstlalk командной строки Модуль
  4. Строить, чтобы загрузить изображение на s3 каждый раз он загружен в Magento
  5. Использование расширения Magneto OnePica
  6. Использование кэша REDIS от Amazon для кэширования данных
  7. Использование RDS для базы данных
  8. Использование Route53 для маршрутизации &
  9. Используйте CloudFront для изображения, JS & CSS DISTRO

Пара недостатков в АМС

  1. Customizing магнето, чтобы смотреть на вещи является боль в заднице. Когда мы говорим, я пытаюсь заставить его поддерживать постоянные сеансы между экземплярами EC2, поскольку loadbalancer его прерывает.
  2. Каждый раз, когда вам нужно модифицировать Magento любым способом это git commit, (тогда мы тестируем локально через отдельный экземпляр beanstalk), а затем нажимаем на производство.

Коротко, что он довольно стабилен. Тем не менее, мы не набираем высоких цифр.