我正在设置一个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:\nDocumentRoot第293行的语法错误必须是目录\ n”,:exit_code => 1}
因此我没有将Web服务器联机,运行状况检查失败,实例终止并重新创建......
我是否可以配置hostmanager以延迟Apache启动,直到EBS卷启动?这是使用Elastic Beanstalk实例附加+安装EBS的正确方法吗?
或者我在这里做了一些不必要的事情......有没有更简单的方法来做到这一点?
答案 0 :(得分:1)
Elastic Beanstalk是一个EC2实例,行为方式相同。以下是关于您遇到的同一问题的一些讨论:https://forums.aws.amazon.com/message.jspa?messageID=304528#304528
如果您希望将静态内容存储在EBS卷上,请在依赖EBS的服务初始化脚本中编写一些简单的处理程序,以便在执行任何其他操作之前检查安装卷的可用性。
“云解决方案”可能是将您的内容存储到S3并在需要时从那里加载。那么您就不需要单独的EBS进行存储。