Остановка / задержка cron при запуске экземпляра EC2

Мы выполняем набор заданий cron на экземпляре EC2. У нас есть два экземпляра A и B в нашем развертывании. У A и B есть задания Cron, которые запускаются при запуске. Мы хотим отключить cron на B при запуске до тех пор, пока мы не остановим сервер A, и наоборот, когда мы запустим A.

Можно ли каким-либо образом автоматизировать это? Можем ли мы использовать для этого данные пользователя?

1
задан 1 October 2019 в 00:43
1 ответ

По сути, вы хотите запускать свои задания только один раз, либо на A, либо на B, но не на обоих, правильно?

Вам понадобится какой-то механизм блокировки / семафоров, выбор "cron master" или что-то в этом роде.

Один из способов, который я делал в прошлом, - это создание событий , генерируемых AWS CloudWatch Rule каждые X минут, с завершите эти события в очереди SQS , и все серверы в кластере, то есть A и B в вашем случае, прослушивают очередь, и по природе очереди только один выбирает событие и обрабатывает его.

Таким образом, вместо того чтобы иметь внутреннее задание cron на каждом сервере и пытаться синхронизировать их, используйте службу , подобную заданию cron , вне серверов и запускайте задания обработки через очередь SQS. В простых случаях, подобных вашему, это должно работать очень хорошо.

Надеюсь, что это поможет :)

0
ответ дан 4 December 2019 в 02:42

Теги

Похожие вопросы