外部ノードネットワークを介してコードを実行しようとしています。 「マスター」ノードへのアクセス権を持ち、利用可能な5つのノードのクラスタ全体にわたってタスクを分割するスクリプトをssh
実行できます。他の前提条件とともに、このコマンドを含むスクリプトがparallel
あります。bash
parallel
私が使用した最後のコマンドは次のようになりました。
parallel -S node0,node1,node2,node3,node4 --ssh-delay 0.25 --delay 0.5 'run {1} {2}' ::: foo ::: bar
しかし、私が作業しているクラスターは比較的頻繁に停止することが知られています。たとえば、約5分間アイドル時間が経過するとエラーが発生し、Broken pipe
接続ssh
が切断されます。そのため、上記のbashスクリプト(上記のparallel
行を含む)を実行してnohup
ssh接続をアクティブに保つ必要があります。
ただし、実際のコードにはかなりの計算時間が必要なため、SSHの切断に関連するエラーが発生します。
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory^M
Permission denied, please try again.
ボスノードから別のノードにnode0
接続してもパスワードは必要ありません。これにより、空席がなくなったという苦情やログインできないという警告メッセージがnode1
表示されます。parallel
parallel: Warning: There are no job slots available. Increase --jobs.
parallel: Warning: Using only -1 connections to avoid race conditions.
parallel: Warning: ssh to node0 only allows for 0 simultaneous logins.
parallel: Warning: You may raise this by changing /etc/ssh/sshd_config: MaxStartups and MaxSessions on node0.
parallel: Warning: You can also try --sshdelay 0.1
私は、ボスノードへの接続を閉じた結果、クラスタ内の他のノードへのSSH接続を早期に閉じるのは難しいことが進行していると思いますnode0
。
ssh-agent
、ssh-copy-id
およびGNUパラレルチュートリアルに従って接続を確立し、sshpass
でMaxStartups
およびMaxSessions
パラメータを設定しようとしましたが、/etc/ssh/sshd_config
役に立ちませんでした。さらに、コード計算時間を短縮すると、並列命令が完全に実行され、期待どおりに動作します。
かなり長い時間がかかるプログラムを実行するときにSSH接続が中断されないようにする方法はありますか?parallel
それとも別のことが起こっていますか?
ベストアンサー1
接続を維持するServerAliveInterval
には で設定できる.ssh/config
。