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

Балансировка нагрузки Wordpress на Amazon Web Services: управление изменениями

Я относительно новичок в Amazon Web Services, и я пытаюсь понять, как Elastic Load Balancing будет работать в контексте моей настройки WordPress. Кроме того, я хотел бы получить совет по предлагаемой инфраструктуре.

Моя первоначальная предлагаемая инфраструктура выглядит следующим образом:

EC2 Мой текущий EC2 (t1.micro) использует стек LAMP и настроен для запуска wordpress.

Я хотел бы сбалансировать это с помощью экземпляра m1.small, запустив клон экземпляра t1.micro.

Текущие неизвестные для меня следующие:

Это может быть довольно глупый вопрос, но я предполагаю, что некоторые проблемы не будут актуальными, поскольку инфраструктура ссылается на одну базу данных.

Наконец, есть ли лучший способ настроить инфраструктуру для балансировки нагрузки? Т.е. стоит ли рассматривать возможность использования Amazon S3 для хранения всех моих файлов и использования Cloudfront в качестве CDN для обеспечения эффективной работы и решения любых проблем с репликацией файлов EBS.

Любая помощь очень ценится.

Ллойд

Веб-приложения без сохранения состояния сложны.

Как вы знаете, wordpress в значительной степени полагается на то, что записывается на диск. Вот предлагаемая инфраструктура

  • Балансировщик эластичной нагрузки
    • Группа автомасштабирования, состоящая из небольших экземпляров ec2
  • Инстанс Foreman / Dev micro ec2
  • Micro / Small RDS для данных CMS
  • Кластер Elasticache для хранения сеансов
  • Корзина S3 для загрузки мультимедиа

Теперь самое сложное.

Давайте на секунду забудем об обновлениях кодовой базы и посмотрим, как сделать все это без состояния. Чтобы сделать эту штуку масштабируемой по горизонтали, необходимо сделать следующее:

  1. Начните с вашего микро-экземпляра. Он будет действовать как механизм развертывания, а также как шаблон
  2. Настройте сеансы PHP для использования memcached для управления сеансами и направьте его на свой кластер эластичной памяти. http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/
  3. Установите git на микро-экземпляр
  4. установите какой-то плагин wordpress, чтобы поместить все загрузки файлов в S3 (необязательно, но избавляет вас от повторного развертывания каждый раз, когда вы загружаете медиа-файл в cms) попробуйте плагин W3 Total Cache

Это позаботится о настройке

Как внедрить новые изменения

Вы будете использовать свой микро-экземпляр для всех будущих изменений в установке wordpress. Это включает в себя такие вещи, как обновление wordpress, обновление файлов вашей темы и почти все, что хранится на диске.

Вам нужно будет создать два скрипта:

Первый будет использован для развертывания изменений в группе автомасштабирования. Он должен сделать следующее:

  1. Зафиксируйте изменения, внесенные в его репозиторий git
  2. Пропингуйте все производственные экземпляры и скажите им загрузить новую базу кода из микро-экземпляра. Вам нужно будет использовать какую-либо форму AWS sdk, чтобы получить список экземпляров в группе автоматического масштабирования и запустить их сценарии получения. Я лично делаю это со своим через конечную точку HTTP, которую я создал.

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

  1. подключиться к репозиторию git на микро-экземпляре
  2. получить последние изменения и проверить изменения в отключенном состоянии HEAD

Каждый раз, когда вы вносите какие-либо изменения в системные файлы, вы должны запускать приведенный выше сценарий развертывания. это затем распространит изменения на все производственные экземпляры.

Теперь создайте базовый AMI для производственных экземпляров. Он должен быть очень похож на микро-экземпляр, однако wordpress не должен устанавливаться. Вы будете использовать пользовательские данные, переданные в экземпляры ec2 при запуске, чтобы запустить второй сценарий, указанный выше, чтобы загрузить последнюю версию кодовой базы из микро-экземпляра.

И последнее ... Если вы используете любую форму электронной коммерции, вам понадобится сертификат SSL, установленный на балансировщике нагрузки. взгляните на руководство здесь: http://www.nczonline.net/blog/2012/08/15/setting-up-ssl-on-an-amazon-elastic-load-balancer/