簡體   English   中英

如何配置Elastic Beanstalk以將代碼部署到實例但不將其添加到負載均衡器

[英]how to configure Elastic Beanstalk to deploy code to an instance but not add it to the load balancer

我正在將Rails應用程序移動到AWS並正在使用EB。 我需要在單獨的實例上運行守護程序(我不希望該實例為HTTP請求提供服務)。

該守護程序是應用程序代碼庫的一部分,並將與與Web服務器實例相同的RDS實例進行通信。 我想知道,如果可能的話,我如何配置EB以將rails應用程序部署到另一個實例,但是要避免將該實例添加到負載均衡器中,並在新修訂版完成后在該實例上(重新)啟動守護程序部署。

我意識到我可以通過自己在EB之外管理這個附加實例來達到相同的結果,但是我覺得有更好的方法。 我自己做了一些研究,卻沒有找到我想要的。

我也可以只在其中一個Web服務器實例上運行該守護程序,並以它還可以處理HTTP請求這一事實來生活。 既然現在就可以接受,那就是我今天正在做的事情……但是我想要一個專用於該守護程序的實例,如果我不必為此而放棄EB部署的便利,那就太好了。

這是我第一次使用Elastic Beanstalk。 我對AWS有一些經驗。 我希望我的問題有道理。 如果沒有,將接受一個指出為什么沒有意義的答案。

謝謝!

在大多數情況下,盡管不是很直接,但您可以在.ebextensions提供一個.config文件來運行您的腳本文件。

這個加快部署速度的示例顯示了運行一些腳本並來回移動數據。 更好的是,作者描述了序列和部署過程。

我只是在從事這種類型的容器定制。 我已經讀過其他一些文件,它們將文件放在/opt/elasticbeanstalk/hooks/appdeploy/pre/opt/elasticbeanstalk/hooks/appdeploy/post目錄中,其中許多可以通過閱讀上面鏈接的帖子來獲取。

還要注意,您可以在yaml .config文件中包含腳本的content ,例如我昨天發現的文件:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_delayed_job.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      . /opt/elasticbeanstalk/support/envvars
      cd $EB_CONFIG_APP_CURRENT
      su -c "RAILS_ENV=production script/delayed_job --pid-dir=$EB_CONFIG_APP_SUPPORT/pids restart" $EB_CONFIG_APP_USER

使用Elastic Beanstalk,通常可以通過在同一EB應用程序(相同的代碼庫,相同的.eb*文件,不同的環境)中使用工作層環境來實現。

這是一個將Rails應用程序部署到一個Web服務器和兩個專門工作人員的示例:

[yacin@mac my_rails_app (master)]$ eb list -v
Region: us-west-1
Application: my_rails_app
    Environments: 3
        email-workers-production : ['i-xxxxxxx']
        * web-servers-production : ['i-xxxxxx']
        job1-workers-production : ['i-xxxxxxx', 'i-xxxxxx']

工人沒有公共HTTP接口,無法從與前端共享的隊列中提取作業。 可以將工作服務器配置為可以訪問同一數據庫,並具有負載平衡和自動擴展功能。

這是一種非常靈活且可擴展的方法,但是需要一些工作來進行設置。 以下是有關此主題的兩個資源: Amazon Worker Tier Video TutorialElastic Beanstalk

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM