dsh:分散shell

7758 ワード

dshは簡単に言えばsshで複数の機器を同時に制御できる.1台のマシンにインストールし、制御が必要なマシンに認証の公開鍵を追加して信頼を確立し、dshがインストールされたマシンにdshでコマンドを実行すると、構成されたマシンリストですべて実行し、結果を戻します
 
dshのプロファイルでマシンをグループ化し、dshのオプションでそのグループを操作するように指定します.dsh -g www -c “w”
wwwグループに入力されたすべてのマシンに対してwコマンドが実行されます.
実行コマンドは並列に実行することもシリアルに実行することもできます.パラレル実行はすべてのマシンにコマンドを同時に送信し,シリアル実行は1つのマシンの実行である.前の機械が実行されてから次の機械を実行します.
この命令は複数の機械を守る学生に役立つはずだ.いつもforサイクルを使う必要はありません.
 
公式サイト:http://www.netfort.gr.jp/~dancer/software/dsh.html.en
 
制御が必要なサーバにssh認証情報を追加する方法:
scp ~/.ssh/id_rsa.pub root@server:/root/.ssh/authorized_keys 
 
ホストのリストを作成するには、次の手順に従います.
vi webapp.txt192.168.56.11192.168.56.12192.168.56.13192.168.56.14
SSH信頼関係の構成
mkdir ~/.sshssh-keygen -t rsascp ~/.ssh/id_rsa.pub 192.168.56.11:/root/.ssh/authorized_keysscp ~/.ssh/id_rsa.pub 192.168.56.12:/root/.ssh/authorized_keysscp ~/.ssh/id_rsa.pub 192.168.56.13:/root/.ssh/authorized_keysscp ~/.ssh/id_rsa.pub 192.168.56.14:/root/.ssh/authorized_keys
またはスクリプトによる一括コピー
ip=192.168.56.for i in $(seq 11 14)dossh $ip$i -C mkdir/root/.sshscp ~/.ssh/id_rsa.pub $ip$i:/root/.ssh/authorized_keysdone
あるいはファイルのステップコピーを読み込むことで
for i in `cat webapp.txt`dossh $i -C mkdir/root/.sshscp ~/.ssh/id_rsa.pub $i:/root/.ssh/authorized_keysdone
 
dsh一括管理linuxサーバ
 
一、dshのインストール
 
mkdir dsh
cd dsh
wget 
http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.9.tar.gz
tar zxvf libdshconfig-0.20.9.tar.gz
cd libdshconfig-0.20.9
./configure && make
sudo make install
cd ..
 
wget 
http://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.25.9.tar.gz
tar zxvf dsh-0.25.9.tar.gz
cd dsh-0.25.9
./configure && 
make
sudo make install
 
ln -s/usr/local/lib/libdshconfig.so.1/lib/
#reload lib path
/
sbin
/
ldconfig
 
[root@localhost ~]# which dsh
/usr/local/bin/dsh
 
二、用法紹介:
 
[root@china-channel ~]# dsh –-help
Distributed Shell/Dancer’s shell version 0.25.9
Copyright 2001-2005 Junichi Uekawa,
distributed under the terms and conditions of GPL version 2
 
-v–verbose Verbose output詳細モード出力
-q-quiet Quietサイレントモード出力
M–show-machine-names Prepend the host name on output制御ホストのhostnameを表示
-H-hide-machine-names Do not prepend host name on outputホスト名は表示されません(default)
-i –duplicate-input            Duplicate input given to dsh
-b –bufsize                   Change buffer size used in input duplication
-m–machine[machinename]Execute on machineホスト名
-n –num-topology              How to divide the machines
-a-all Execute on all machinesホストリスト、デフォルトリストは/root/.dsh/machines.list
-g–group[groupname]Execute on group memberはホスト名グループを指定し、ホスト名グループは/root/.dsh/group/
-f–file[file]Use the file as list of machinesホストリストを選択
-r–remoteshell[shellname]Execute using shell(rsh/ssh)リモートツールを指定します.デフォルトはrshです.
-o –remoteshellopt [option]   Option to give to shell
-h –help                      Give out this message
-w-wait-shell Sequentially execute shell指定順序で実行、デフォルトはパラレル
-c –concurrent-shell          Execute shell concurrently
-F –forklimit [fork limit]    Concurrent with limit on number
-V –version                   Give out version information
三、制御のホストリストを作成する
 
[root@china-channel ~]# cat/root/.dsh/machines.list
218.85.1.2
218.85.1.3
[root@china-channel ~]# cat/root/.dsh/group/umail 
218.85.1.2
218.85.1.3
 
四、ssh無パスワードログインの構成
 
[root@china-channel ~]# ssh-keygen -t rsa
車に3回戻る.
/root/.sshディレクトリの下でid_を生成rsa,id_rsa.pub
id_をrsa.pubは被制御機の/root/にコピーする.ssh/ディレクトリの下:
 
[root@mail176 .ssh]#mv id_rsa.pub authorized_keys
[root@mail176 .ssh]#chmod 600 authorized_keys
 
複数の異なるコントローラがある場合はcat id_rsa.pub >>authorized_keys追加の形式
 
五、応用例:
 [root@china-channel AIMstor]# dsh -M -r ssh -a -- free
218.85.1.2:           total       used       free     shared    buffers     cached
218.85.1.2: Mem:       8168272    8138584      29688   0   197176    3516140
218.85.1.2: -/+ buffers/cache:    4425268    3743004
218.85.1.2: Swap:     16386260    1011732   15374528
218.85.1.3:           total       used       free     shared    buffers     cached
218.85.1.3: Mem:   8168272    8103304      64968      0    543324    3085280
218.85.1.3: -/+ buffers/cache:    4474700    3693572
218.85.1.3: Swap:     16386260    1039780   15346480
 
[root@china-channel AIMstor]# dsh -M -r ssh -a -- free|grep/cache
218.85.1.2: -/+ buffers/cache:    4423528    3744744
218.85.1.3: -/+ buffers/cache:    4462684    3705588
 
[root@china-channel AIMstor]# dsh -M -r ssh -a -- df -h          
218.85.1.2: Filesystem            Size  Used Avail Use% Mounted on
218.85.1.2:/dev/sda3              48G   31G   15G  67%/
218.85.1.2:/dev/sda6             792G  377G  375G  51%/bk
218.85.1.2:/dev/sda2              48G  4.7G   41G  11%/opt
218.85.1.2:/dev/sda1             251M   17M  222M   7%/boot
218.85.1.2:/dev/sdb1             2.7T 1008G  1.6T  39%/mail
218.85.1.2: tmpfs                 3.9G     0  3.9G   0%/dev/shm
218.85.1.3: Filesystem            Size  Used Avail Use% Mounted on
218.85.1.3:/dev/sda3              48G   35G   11G  77%/
218.85.1.3:/dev/sda6             792G  215G  537G  29%/bk
218.85.1.3:/dev/sda2              48G  5.7G   40G  13%/opt
218.85.1.3:/dev/sdb1             2.7T  812G  1.8T  32%/mail
218.85.1.3:/dev/sda1             251M   17M  222M   7%/boot
218.85.1.3: tmpfs                 3.9G     0  3.9G   0%/dev/shm
 
注意:
dsh-M-r ssh-a--実行する必要があるコマンドが複雑な場合は、後のすべてのコマンドを単一引用符で引き起こします.たとえば、次のようにします.
dsh -M -r ssh -a -- 'echo "abc">>/root/test.txt'
 
 
------------------------------------------------------
 
dshのインストール使用
dshは、複数のホストを容易に管理し、書き込みサイクルの手間を省くことができ、いくつかのクラスタ管理ツールがdshを使用する必要があります.
centOS 5でのインストール
スクリプトを直接実行
 
#!/bin/bash
# Build and install the library first wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.13.tar.gz tar xzvf libdshconfig-0.20.13.tar.gzcd libshconfig-0.20.13./configure $ makesudo make install# Then build and install the utility cd ..wget http://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.25.9.tar.gz tar xzvf dsh-0.25.9.tar.gzcd dsh-0.25.9./configuremake sudo make install
#reload lib path/sbin/ldconfig
        

vi ~/.dsh/group/temp
server1
server2
server3
 

dsh -g temp -M  -r ssh -- df -h
-g作成group-aすべてのホストはデフォルトで~/のみ使用.dsh/machines.list
Mはホスト名をリストします-rは接続方法を指定します