Elastic Beanstalk 的 Hostmanager 无法启动 Apache,EBS 连接缓慢
Posted
技术标签:
【中文标题】Elastic Beanstalk 的 Hostmanager 无法启动 Apache,EBS 连接缓慢【英文标题】:Elastic Beanstalk's Hostmanager fails to start Apache, slow EBS attaching 【发布时间】:2012-09-12 04:48:32 【问题描述】:我正在设置一个 Elastic Beanstalk 实例以在 Tomcat 上运行 Grails 应用程序并使用 Apache 提供 UI 网页。 Web 内容位于 EBS 卷上,该卷在启动时使用 init.d 脚本 (mountec2vol) 附加并挂载。 Apache 的 DocumentRoot 位于此卷 /mnt/data/www 上。我的 AMI 映像基于默认的 Beanstalk 64bit-Tomcat7-linux 映像。
Hostmanager 似乎无法启动 Apache,因为 EBS 卷需要一段时间(5-20 秒)才能附加。这是我在 /opt/elasticbeanstalk/var/log/bluepill.log 中得到的:
W, [2012-09-19T18:06:15.366835 #1283] 警告 -- : [hostmanager:httpd] :stdout=>"正在启动 httpd: [FAILED]\r\n", :stderr=>" /etc/httpd/conf/httpd.conf 第 293 行的语法错误:\nDocumentRoot 必须是目录\n", :exit_code=>1
因此,我没有让网络服务器联机,运行状况检查失败,实例被终止并重新创建...
我可以将主机管理器配置为延迟 Apache 启动,直到 EBS 卷启动?这是使用 Elastic Beanstalk 实例附加+安装 EBS 的正确方法吗?
或者我在这里做了一些不必要的困难...有没有更直接的方法来做到这一点?
【问题讨论】:
【参考方案1】:Elastic Beanstalk 是一个 EC2 实例,其行为方式相同。以下是关于您遇到的同一问题的一些讨论:https://forums.aws.amazon.com/message.jspa?messageID=304528#304528
如果您希望将静态内容存储在 EBS 卷上,请在您的 EBS 相关服务初始化脚本中编写一些简单的处理程序,以在执行任何其他操作之前检查挂载卷的可用性。
“云解决方案”可能是将您的内容存储到 S3 并在需要时从那里加载。这样您就不需要单独的 EBS 进行存储了。
【讨论】:
谢谢,看来修改init/boot是解决办法。以上是关于Elastic Beanstalk 的 Hostmanager 无法启动 Apache,EBS 连接缓慢的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk CLI 安装错误