web-dev-qa-db-ja.com

Linuxコマンドにランダムな遅延を追加する

サーバーで並列コマンドを実行するために func を使用しています。

先日、puppetを介したfuncのサービス再起動により、すべてのサーバーが同時にpuppetmasterにヒットするという問題が発生しました。

私の質問:個々のサーバーで実行される前に遅延を追加しながら、サーバーのセットでまったく同じコマンドを実行するにはどうすればよいですか?

例:random_delay && service puppet restart

コマンドのrandom_delayの部分に興味があります。

13

sleep $((RANDOM % MAXWAIT))ここで、MAXWAITは必要な最大遅延(秒)です。

25
S19N

私はS19Nの革新的であるが、理想的なソリューションとは言えません。物事が実際に発生する時期はまだ確定的ではないため、理想的とは言えません。何かがいつ起こるか、そしていつ起こるかを保証できるほうがずっといいです。

人形のオーケストレーションは実際にはhard問題です。
「ベストプラクティス」ソリューションの1つは、 MCollective を使用することです。これにより、puppetをマシンのクラスターで実行するタイミングを設定できるだけでなく、他のマシンにも使用できます。同様のオーケストレーションの問題。

1
Tom O'Connor
0 */12 * * * root Perl -e 'sleep int(Rand(43200))' && service puppet restart

これは、12時間ごとに0秒から12時間(43200 = 12 x 60 x 60)のランダムな量でスリープします。

0
rubo77