【问题标题】:Deploying a server service to AWS EC2 instance: how to config ApplicationStart and ApplicationStop将服务器服务部署到 AWS EC2 实例:如何配置 ApplicationStart 和 ApplicationStop
【发布时间】:2019-01-18 09:34:52
【问题描述】:

我正在尝试将服务器服务部署到 AWS EC2 实例。该服务基本上是一个永远运行的消费者。

要在 AWS 上部署,我似乎需要指定以下文件:

  • 应用规范
  • 安装前
  • 安装后
  • 应用开始
  • 应用程序停止

我在编写 applicationStart 和 applicationStop 脚本时遇到问题。 我的程序是一个 java jar 文件,我使用java -jar consumer.jar 执行它。所以一开始我写applicationStart和applicationStop如下:

应用开始:

java -jar consumer.jar

应用程序停止:

exit 0

这是 appspec 文件的 sn-p

hooks:
  ApplicationStop:
    - location: script/deploy/stop-application.sh
      timeout: 30
      runas: root
  BeforeInstall:
    - location: script/deploy/before-install.sh
      timeout: 30
      runas: root
  AfterInstall:
    - location: script/deploy/after-install.sh
      timeout: 30
      runas: services
  ApplicationStart:
    - location: script/deploy/start-application.sh
      timeout: 30
      runas: root
  ValidateService:
    - location: script/deploy/validate-application.sh
      timeout: 30
      runas: root

当我将代码部署到 AWS 时,我发现 java 程序一直在运行,并且 applicationStart 阶段最终超时。我认为这可能是因为 java 程序不会返回,因此 applicationStart 根本没有完成。因此,我将 startApplication(或脚本 start-application.sh)更改为这样

nohup java -jar consumer.jar &

这次 startApplication 阶段没有超时。相反,它需要 3 分钟才能成功。为什么它没有超时,因为我的超时设置为 30 秒?并且部署卡在AllowTraffic阶段,最后花了1小时才超时。

关于如何在程序永远运行时编写 applicationStart 和 applicationStop 脚本有什么建议吗?任何建议将不胜感激!

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 deployment


    【解决方案1】:

    我想我终于找到了答案。基本上我们需要在命令末尾添加> /dev/null 2> /dev/null < /dev/null & 来指示AWS 忽略所有的stderr 和stdout。这样流程就不会阻塞部署。

    参见参考文献:

    1. https://forums.aws.amazon.com/thread.jspa?threadID=181616

    2. Code Deploy ApplicationStart gets stuck on pending using node

    3. https://docs.aws.amazon.com/codedeploy/latest/userguide/troubleshooting-deployments.html#troubleshooting-long-running-processes

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多