当我更新实例时,我会使用 EB 命令行工具。我将实例推送到 CodeCommit git,然后使用命令部署代码eb deploy
。几乎每次我这样做时,我的环境状态都会变为降级/严重,正在运行的实例会给出错误。Following services are not running: proxy.
它会根据我的自动扩展策略(与健康状况相关)启动更多实例,有时在 2-3 个新实例之后,我会得到一个“正常”的实例
我的环境配置为64bit Amazon Linux 2016.09 v2.2.0 running PHP 7.0
。它是自动负载平衡和自动扩展,在平均网络上。它在任何可用区域中运行 t1.micro,软件配置如下:日志发布: 在;
允许 URL fopen: 在;
显示错误: 离开;
文档根目录:/http/;
最大执行时间:60;
内存限制:256M;
Zlib 输出压缩: 离开;
什么原因造成此情况?
答案1
检查您的/opt/elasticbeanstalk/hooks/appdeploy/post/01_monitor_httpd_pid.sh
。请注意,01_monitor_httpd_pid.sh
对您来说, 可能有不同的名称。
apache/httpd
如果您不使用,则需要在其中更改代理检查nginx
,如下所示:
#!/bin/bash
set -xe
/opt/elasticbeanstalk/bin/healthd-track-pidfile --proxy nginx
如果您正在使用apache/httpd
,则表示您的 apache 运行时实例或进程存在问题。确保 pid 文件位于健康检查应在的位置。
答案2
我们可以在 .ebextensions 目录中设置一个文件,如下所示。当您看到错误时Following services are not running: proxy.
.ebextensions/01_fix_proxy.config 内容:
"/opt/elasticbeanstalk/hooks/appdeploy/post/01_monitor_httpd_pid.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
set -xe
/opt/elasticbeanstalk/bin/healthd-track-pidfile --proxy nginx