Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 弹性豆茎芹菜酱和容器_Amazon Web Services_Amazon Elastic Beanstalk_Celery - Fatal编程技术网

Amazon web services 弹性豆茎芹菜酱和容器

Amazon web services 弹性豆茎芹菜酱和容器,amazon-web-services,amazon-elastic-beanstalk,celery,Amazon Web Services,Amazon Elastic Beanstalk,Celery,我试图在Elastic Beanstalk上运行芹菜节拍,但它在自动缩放时会在所有实例上运行,这会导致重复周期性任务。我找到了一个解决方案,其中包括标记leader实例,并仅在该实例上运行芹菜节拍主管流程,但它对我不起作用 这是我的.ebextensions/program.config中的代码 files: "/opt/elasticbeanstalk/hooks/appdeploy/post/10_restart_supervisor.sh": mode: &

我试图在Elastic Beanstalk上运行芹菜节拍,但它在自动缩放时会在所有实例上运行,这会导致重复周期性任务。我找到了一个解决方案,其中包括标记leader实例,并仅在该实例上运行芹菜节拍主管流程,但它对我不起作用

这是我的
.ebextensions/program.config中的代码

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/10_restart_supervisor.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      if [ -f /tmp/leader_only ]
      then
        docker exec `docker ps --no-trunc -q | head -n 1` cp /srv/supervisor-app-beat.conf /etc/supervisor/conf.d/supervisor-app-beat.conf
      fi
      docker exec --privileged -d `docker ps --no-trunc -q | head -n 1` killall -q supervisord
      docker exec --privileged -d `docker ps --no-trunc -q | head -n 1` supervisord -n
      
  "/opt/elasticbeanstalk/hooks/restartappserver/post/11_restart_supervisor.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      if [ -f /tmp/leader_only ]
      then
        docker exec `docker ps --no-trunc -q | head -n 1` cp /srv/supervisor-app-beat.conf /etc/supervisor/conf.d/supervisor-app-beat.conf
      fi
      docker exec --privileged -d `docker ps --no-trunc -q | head -n 1` killall -q supervisord
      docker exec --privileged -d `docker ps --no-trunc -q | head -n 1` supervisord -n

  "/opt/elasticbeanstalk/hooks/configdeploy/post/12_restart_supervisor.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      if [ -f /tmp/leader_only ]
      then
        docker exec `docker ps --no-trunc -q | head -n 1` cp /srv/supervisor-app-beat.conf /etc/supervisor/conf.d/supervisor-app-beat.conf
      fi
      docker exec --privileged -d `docker ps --no-trunc -q | head -n 1` killall -q supervisord
      docker exec --privileged -d `docker ps --no-trunc -q | head -n 1` supervisord -n
    
container_commands:
  01_mark_lead:
    command: "touch /tmp/leader_only"
    leader_only: true
并且命令
01\u mark\u lead
成功运行,如日志
/var/log/cfn init cmd.log

2020-11-15 18:53:54,354 P17245 [INFO] ============================================================
2020-11-15 18:53:54,354 P17245 [INFO] Test for Command 01_mark_lead
2020-11-15 18:53:54,358 P17245 [INFO] Completed successfully.
2020-11-15 18:53:54,359 P17245 [INFO] ============================================================
2020-11-15 18:53:54,359 P17245 [INFO] Command 01_mark_lead
2020-11-15 18:53:54,363 P17245 [INFO] Completed successfully.

但是,当我尝试检查容器时,我没有看到创建的
leader\u
文件或启动了节拍过程,我做错了什么?

随着时间的推移,leader可能会改变,因此我不确定这是否是最佳方法。但对于您的特定问题,我会尝试将命令更改为
命令:“touch/tmp/leader\u only&&ls-l/tmp”
,以查看文件是否在运行时创建。如果是的话,那么很可能是某个地方删除了它。