
AWS で 100 台のサーバーを実行しています。リモート システム上の各ユーザーが使用しているデータの量を簡単に取得し、テキスト ファイルに出力する必要があります。これを最も効果的に実現するにはどうすればよいでしょうか。
答え1
次のような並列シェルを使用することができます。クラスタシェルまたはpdf。
この方法では、中央マシンからパスワードなしの SSH 認証をすでに設定している場合、100 台のサーバーのそれぞれで同時にコマンドを実行できます。さらに、さまざまなグループを作成して論理的に整理することもできます。
マシンの名前が aws0、aws1、aws2、... aws99 であると仮定します。
clustershell を使用すると、次のようにしてそれらすべてに対してコマンド (この例では uptime) を実行できます。
# clush -w aws[0-100] uptime
aws0: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws1: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws2: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
[...]
aws99: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
このように、それらのサブセットに対してコマンドを実行できます。
clush -w aws[22-55,73-82,90,99] uptime
aws22: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws23: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
[...]
aws55: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws73: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
[...]
aws82: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws90: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
aws99: 21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00
次に、同一の結果をグループ化したい場合は、clushの-bオプションを使用するか、pdshでdshbak -cにパイプします。
# clush -bw aws[0-99] uptime
---------------
aws[0-99] (100)
---------------
21:49:12 up 5:46, 1 user, load average: 0.07, 0.02, 0.00