Helix Swarm 2018.2 в контейнере Docker - рабочие не могут появиться

Я пытаюсь организовать контейнеризацию сервера Helix Core 2017.1 с сервером Helix Swarm 2018.2. Оба работают в отдельных контейнерах Docker, которые сильно изменены из https://github.com/ambakshi/docker-perforce. Я пытаюсь выяснить, почему я вижу следующую ошибку на странице основных проектов:

Хм... нет рабочих очереди? Попросите вашего администратора проверить настройки рабочего.

А также почему маршрут /queue/status возвращает:

{"tasks":0,"futureTasks":0,"workers":0,"maxWorkers":3,"workerLifetime":"595s","pingError":false}

Я следовал инструкциям из документации Helix Swarm для самого последнего выпуска, поскольку документация 2018.2 не содержит инструкций по настройке задания cron. Кроме того, нужно использовать chmod 644 на helix-swarm задание cron в контейнере Helix Swarm, иначе оно выдаст ошибку:

cat > /etc/cron.d/helix-swarm <<EOF                                             
# This ensures that a worker is fired up every minute                           
* * * * * nobody [ -x /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh ] && /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh

EOF                                                                             

chmod 644 /etc/cron.d/helix-swarm

Я также попробовал:

* * * * * root [ -x /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh ] && /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh

Как с пустой строкой в ​​конце файла, так и без нее.

Я также выполнил chmod 777 в каталоге, в котором оба swarm-trigger.pl а также swarm-trigger.conf хранятся в вашем док-контейнере Helix Core (они упоминают только разрешения на открытие .pl один файл):

cat >>"/root/swarm-trigger.conf" <<EOL                                          
    SWARM_HOST="http://$SWARM_URL"                                              
    SWARM_TOKEN=$SWARM_TOKEN                                                    
EOL
...
chmod -R 777 /root/                                                         

CONFGURED="/root/swarm-trigger.pl -t ping -v 0"                             
if [ ! -z $CONFIGURED ]; then echo "Misconfigured Swarm server.\n\t$CONFIGURED"; fi

p4 triggers -o > /root/tmp                                                  
/root/swarm-trigger.pl -c /root/swarm-trigger.conf -o | sed '/^\s*#/d' >> /root/tmp
p4 triggers -i < /root/tmp                                                  

p4 configure set dm.shelve.promote=1

Однако я понял, что вам нужно использовать supervisor для запуска cron на контейнерах Centos Docker (также указано в документации Docker). И я добавил yum -y install supervisor в Dockerfile для контейнера Swarm, а также yum -y install cronie и последовал примеру https://github.com/kuetemeier/docker-centos-supervisor-cron для использования CMD бежать supervisor как моя точка входа, но затем заявить в supervisord.conf что я хотел обоих crond и мой конфигурационный скрипт для запуска:

[supervisord]                                                                   
nodaemon=true                                                                   
logfile = /var/log/supervisord.log                                              
logfile_maxbytes = 50MB                                                         
logfile_backups=10                                                              

[program:crond]                                                                 
command=/bin/bash -c "source /etc/sysconfig/crond && exec /usr/sbin/crond -n $CRONDARGS"
process_name=%(program_name)s                                                   
numprocs=1                                                                      
directory=/tmp                                                                  
umask=022                                                                       
priority=999                                                                    
autostart=true                                                                  
autorestart=true                                                                
startsecs=10                                                                    
startretries=3                                                                  
exitcodes=0,2                                                                   
stopsignal=TERM                                                                 
stopwaitsecs=10                                                                 
user=root                                                                       
stderr_logfile = /var/log/supervisor/cron_stderr.log                            
stdout_logfile = /var/log/supervisor/cron_stdout.log                            

[program:run]                                                                   
command=/run.sh                                                                 
autostart=true                                                                  
autorestart=false                                                               
startretries=0                                                                  
redirect_stderr=false  

Тем не менее, даже если crond кажется, работает, согласно журналам в /var/log/supervisord.log:

2019-05-30 19:09:18,783 CRIT Supervisor running as root (no user in config file)
2019-05-30 19:09:18,785 INFO supervisord started with pid 143
2019-05-30 19:09:19,792 INFO spawned: 'run' with pid 146
2019-05-30 19:09:19,794 INFO spawned: 'crond' with pid 147
2019-05-30 19:09:20,805 INFO success: run entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2019-05-30 19:09:30,112 INFO success: crond entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)

Я также вижу:

# ps -ef | grep cron
root       146   142  0 22:30 ?        00:00:00 /usr/sbin/crond -n

Похоже, что работа по порождению рабочих не дает ожидаемого эффекта:(Кроме того, под журналами нет /var/log/supervisor/,

РЕДАКТИРОВАТЬ: я также попытался добавить

* * * * * nobody [ -x /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh ] && /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh

в /etc/crontab для обоих root а потом nobody, так же как chmod 777 /etc/crontab в отчаянии, но я до сих пор не вижу никаких журналов, указывающих, что скрипт запущен.

Даже когда я запускаю скрипт вручную:

 /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh

Я не вижу выхода. После изменения /opt/perforce/etc/swarm-cron-hosts.conf файл, чтобы иметь ServerName рой или уточнение

 /opt/perforce/swarm/p4-bin/scripts/swarm-cron.sh -f /opt/perforce/etc/swarm-cron-hosts.conf

и ручной запуск не порождает рабочих.

Большое спасибо за чтение и за ваше время и помощь заранее!

0 ответов

Другие вопросы по тегам