Проблема
После развертывания состояние среды Elastic Beanstalk переходит с уровня «Информация» на «Серьезное» со следующим сообщением в консоли AWS:
Код: Выделить всё
Environment health has transitioned from Info to Severe.
ELB processes are not healthy on all instances.
Application update in progress on 1 instance. 0 out of 1 instance completed (running for 5 minutes).
None of the instances are sending data.
ELB health is failing or not available for all instances.
- Я могу Не подключаюсь к экземпляру через SSH.
- Журналы невозможно получить из консоли AWS.
- Мой единственный вариант — завершить работу экземпляра и дать Elastic Beanstalk создайте новый.
- Поведение, зависящее от приложения
- Приложение проверяет заголовок Host для динамического определения конфигурации.
- Приложение использует пользовательские конфигурации для развертывания и проксирования.
- Пользовательский Сценарий развертывания Я добавил файл .ebextensions/build.config, чтобы обеспечить правильную сборку и запуск приложения во время развертывания:
Код: Выделить всё
container_commands:
01_install_dependencies:
command: "npm install"
cwd: "/var/app/staging"
02_build_application:
command: "npm run build"
cwd: "/var/app/staging"
03_copy_build_to_current:
command: "cp -R .next /var/app/current/.next"
cwd: "/var/app/staging"
- Конфигурация прокси-сервера У меня есть следующая конфигурация в .ebextensions/httpd-proxy.config для управления перенаправлением домена, SSL и серверным проксированием:
Код: Выделить всё
files:
"/etc/httpd/conf.d/proxy.conf":
mode: "000644"
owner: root
group: root
content: |
ProxyPreserveHost On
ServerName myServerName
ServerAlias \
"*.myUrls" \
ProxyTimeout 60
ProxyPass / http://127.0.0.1:8080/ connectiontimeout=10 timeout=180
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/access.log combined
LogLevel warn
SetHandler proxy:fcgi://127.0.0.1:8080
- Проверенные журналы:
- При сбое экземпляра журналы невозможно получить ни через консоль AWS, ни через SSH.
- Я подозреваю, что в этом проблема. может быть связано с:
- истечением времени ожидания или сбоями проверки работоспособности. во время процесса развертывания.
- Конфигурация не соответствует настройке ProxyPass или сценарию .ebextensions.
- Пользовательская конфигурация:
- Я пробовал настроить ProxyTimeout, ConnectionTimeout и Timeout. значения, но проблема остается.
- Приложение отлично работает при локальной разработке и в промежуточных средах без Elastic Beanstalk.
- Почему экземпляр полностью перестает отвечать на запросы (не может подключиться к SSH или получить журналы) после развертывания? Что-то не так с моими конфигурациями или сценариями развертывания?
- Как я могу отладить сбои проверки работоспособности и повысить надежность развертывания?
- Есть ли лучший способ обработки пользовательских конфигураций прокси и сценариев развертывания в приложениях Elastic Beanstalk для Next.js?
Будем очень признательны за любые рекомендации! Заранее спасибо.
Я удалил файл build.config. и добавил файл .platform/hooks/postdeploy/postdeploy.sh с
Код: Выделить всё
#!/bin/bash
npm install --production=false
Подробнее здесь: https://stackoverflow.com/questions/793 ... ext-js-app