2016-11-04 2 views
3

Я знаю, что один из способов проверки здоровья для Докер контейнера с помощью вводе командыHEALTHCHECK контейнера Docker, работающего по сельдерей?

HEALTHCHECK CMD curl --fail http://localhost:3000/ || exit 1 

Но в случае рабочих нет таких URL, чтобы ударить, как проверить состояние здоровья контейнера в этом случае?

ответ

2

Команда celery inspect ping пригодится, так как она совершает целую поездку: она отправляет задание «ping» на брокера, рабочие отвечают, и сельдерей извлекает ответы.

Если предположить, что приложение называется tasks.add, вы можете свистеть все рабочие:

/app $ celery inspect ping -A tasks.add 
-> [email protected]: OK 
     pong 
-> [email protected]: OK 
     pong 

С aa7c21dd0e96 быть Docker имя хоста, и, таким образом, доступны в $HOSTNAME.

пинговать один узел, вы должны запустить:

celery inspect ping -A tasks.add -d [email protected]$HOSTNAME 

Здесь д обозначает назначения.

линия, чтобы добавить к вашему Dockerfile:

HEALTHCHECK CMD celery inspect ping -A tasks.add -d [email protected]$HOSTNAME 

Примеры выходов:

/app $ celery inspect ping -A tasks.add -d fake_node 
Error: No nodes replied within time constraint. 
/app $ echo $? 
69 

нездоровое, если узел не существует или не отвечает

/app $ celery inspect ping -A tasks.add -d [email protected]$HOSTNAME 
-> [email protected]: OK 
     pong 
/app $ echo $? 
0 

Здорово, когда узел отвечает pong.

/app $ celery inspect ping -d [email protected]$HOSTNAME 
Traceback (most recent call last): 
... 
    raise socket.error(last_err) 
OSError: [Errno 111] Connection refused 
/app $ echo $? 
1 

нездоровое, когда брокер не доступен - я удалил приложение, поэтому он пытается соединиться с локальным AMPQ и не Это не может удовлетворить ваши потребности, брокер является нездоровым, а не работник.

Смежные вопросы