SSHを介して2000を超えるノードに接続する方法は?

SSHを介して2000を超えるノードに接続する方法は?

私たちが最初にすることは、sshを使用して2,000を超えるサーバーから簡単な情報を取得することです。これは30秒で完了することです。

GNUパラレルとPython paramiko +マルチプロセッシングの使用

どちらも速度を遅くするランダムなボトルネックがあります。この問題を修正できますか?カーネルのチューニングは完了しましたか?使用されるオペレーティングシステムはCentOS 7(Core 24)です。

Pythonコードの追加

        ssh=paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(host,username=username,password=password)
        stdin, stdout, stderr = ssh.exec_command(command)
        outlines=stdout.readlines()
        resp=''.join(outlines)
        print(resp)
        stdin.close()
        ssh.close()

    except Exception as err:
 
        print(err)



if __name__ == '__main__':
    start = time.time()
    host = subprocess.check_output("echo 10.0.{{1..26},{51..146}}.{1..100}", shell="True", universal_newlines=True)
    list = host.strip().split(" ")
    print (list)
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
    pool.map(loadavg, list)
    pool.close()
    pool.join()
    print("time :", time.time() - start)

ベストアンサー1

アンシプール数千台のサーバーやデータを管理/交換する作業に最適です。

アンサーブルはスクリプト、各ホストに対して実行するコマンドをリストします。そして戦略 設定できますすべてのホストが順番に動作していますか、それとも同時にホストに接続していますか?

それでも30秒のウィンドウが許可されていない場合は、Paulの「ツリー」アプローチであるAnsibleサポートと簡単に組み合わせることができます。代表団 正確にこのユースケースの場合。

Ansibleはまた、Pythonを書く手間も軽減します。接続するホストの範囲を指定する簡単な構文があります。

おすすめ記事