WordPress на AWS с ECS, EFS и ELB возвращается 502 - PullRequest
0 голосов
/ 27 июня 2018

У меня есть сайт на основе WordPress 4.9.6, который развернут с помощью AWS ECS, а EFS используется для хранения файлов WordPress. В качестве базы данных я использую экземпляр AWS Aurora MySQL 5.7. Я также настроил балансировщик нагрузки приложения для доступа к контейнерным экземплярам WordPress. (Подробнее о настройке ниже.)

Обзор проблемы

Эта настройка, кажется, работает в большинстве случаев. То есть Я могу делать GET запросов на сайте. Я могу войти в систему, увидеть панель инструментов и часто успешно обновлять. Проблема, с которой я сталкиваюсь, заключается в том, что мои попытки обновления также часто приводят к ответу 502 Bad Gateway , когда я фиксирую свое обновление, то есть POST /wp-admin/post.php.

Особенности

Настройка

Сначала моя программа записи экземпляра БД заполняется дампом моей локальной базы данных разработчиков. Записи URL базы данных, указывающие на сам сайт, например siteurl и home в таблице параметров, имеют значения с https.

EFS была создана в режиме производительности общего назначения . Первоначально я пытался с режимом Max I / O , но ресурсы, предлагающие скорее использовать прежний режим. Однако переключение режима производительности не меняет частоту ошибок 502.

Мои экземпляры кластера Amazon Linux ECS подготовлены для подключения тома EFS с использованием NFSv4.1 в соответствии с рекомендациями AWS (mount options nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2).

У меня есть изображение Docker, полученное из официального изображения WordPress , в котором я обновляю исходное изображение /usr/src/wordpress своим собственным контентом. Пользовательский контент включает в себя обновленный wp_config.php, в котором я установил $_SERVER['HTTPS']='on';

Собирая воедино мои определения задач ECS, использую мой собственный образ Docker и монтирую каталог на моем диске EFS как том Docker в контейнере Docker. Суть в том, что когда я создаю службу ECS с определением задачи, контейнер раскручивается и записывает в /var/www/html, что впоследствии я вижу на моем диске EFS. Все это выглядит хорошо и прекрасно.

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

Затем я могу получить доступ к своему сайту по протоколу https. Если я пытаюсь использовать http, я перенаправляюсь на https, как и планировалось. Я могу открыть целевую страницу. Когда я вхожу в систему, я пытаюсь изменить целевую страницу.

Проблема

Здесь я сталкиваюсь с настоящей проблемой. Часто, но не всегда, когда я делаю обновление на целевой странице и нажимаю кнопку Обновить , я получаю ответ 502 Bad Gateway на запрос POST /wp-admin/post.php. Также часто, когда я начинаю редактировать и запрашивать GET /wp-admin/post.php?post=2&action=edit, я получаю те же 502.

Я не вижу большого паттерна, когда получаю и не получаю 502. Я пытался обновить как текстовое содержимое, так и добавить изображения на целевую страницу. 502 иногда бывает, но не всегда в обоих случаях.

Также я попытался устранить проблему, так как подозревал, что это связано с использованием EFS и последующими проблемами синхронизации между двумя экземплярами ECS, которые я настроил для теста. Были предприняты следующие попытки, не видя значительного улучшения.

Наконец, я сократил количество служебных задач ECS с 2 до 1, но проблема все еще сохраняется.

В качестве сообщения об ошибке в консоли браузера при встрече с 502 я часто, возможно, всегда вижу следующее: The character encoding of the HTML document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the page must be declared in the document or in the transfer protocol.

Итак, кто-нибудь знает, что делать дальше и где искать указания на причину проблемы?

...