Назад | Перейти на главную страницу

Добавление случайной задержки для команды Linux

Я использую func для выполнения параллельных команд на наших серверах.

На днях у нас возникла проблема, когда перезапуск службы puppet через func заставил все наши разрывы ударить по нашему puppetmaster в то же время.

Мой вопрос: Как я могу выполнить ту же самую команду на наборе серверов, добавляя задержку перед ее выполнением на отдельных серверах?

Например.: random_delay && service puppet restart

Меня интересует random_delay часть команды.

sleep $((RANDOM % MAXWAIT)) где MAXWAIT - максимальная желаемая задержка в секундах.

Мне очень нравится новаторское, но далеко не идеальное решение S19N. Я только говорю, что это далеко не идеально, поскольку все еще в значительной степени недетерминировано, когда что-то действительно произойдет. Я бы предпочел иметь возможность гарантировать, когда что-то произойдет, и что произойдет, когда это произойдет.

Марионеточная оркестровка на самом деле жесткий проблема.
Одно из лучших решений - использовать MCollective который не только позволит вам настроить, когда марионетка запускается на вашем кластере машин, но вы также можете использовать ее для других подобных проблем оркестрации.

0 */12 * * * root perl -e 'sleep int(rand(43200))' && service puppet restart

Это будет спать произвольное количество от 0 секунд до 12 часов (43200 = 12 x 60 x 60) каждые 12 часов.