Мы выполняем набор заданий cron на экземпляре EC2. У нас есть два экземпляра A и B в нашем развертывании. У A и B есть задания Cron, которые запускаются при запуске. Мы хотим отключить cron на B при запуске до тех пор, пока мы не остановим сервер A, и наоборот, когда мы запустим A.
Можно ли каким-либо образом автоматизировать это? Можем ли мы использовать для этого данные пользователя?
По сути, вы хотите запускать свои задания только один раз, либо на A, либо на B, но не на обоих, правильно?
Вам понадобится какой-то механизм блокировки / семафоров, выбор "cron master" или что-то в этом роде.
Один из способов, который я делал в прошлом, - это создание событий , генерируемых AWS CloudWatch Rule каждые X минут, с завершите эти события в очереди SQS , и все серверы в кластере, то есть A и B в вашем случае, прослушивают очередь, и по природе очереди только один выбирает событие и обрабатывает его.
Таким образом, вместо того чтобы иметь внутреннее задание cron на каждом сервере и пытаться синхронизировать их, используйте службу , подобную заданию cron , вне серверов и запускайте задания обработки через очередь SQS. В простых случаях, подобных вашему, это должно работать очень хорошо.
Надеюсь, что это поможет :)