로컬 컴퓨터에 원격 master
컴퓨터에 대한 SSH 세션을 만든 다음 다른 내부 SSH 세션을 master
원격 slaves
에서 각각의 원격 컴퓨터로 만들고 2 개의 명령을 실행합니다. 즉, 특정 디렉토리를 삭제하고 다시 만듭니다.
로컬 머신에는 마스터에 대한 비밀번호가없는 SSH가 있고 마스터에는 슬레이브에 대한 비밀번호가없는 SSH가 있습니다. 또한 모든 호스트 이름은 .ssh/config
로컬 / 마스터 머신에 있으며 슬레이브의 호스트 이름은 slaves.txt
로컬에 있으며 거기서 읽습니다.
그래서 내가하고 일하는 것은 이것입니다 :
username="ubuntu"
masterHostname="myMaster"
while read line
do
#Remove previous folders and create new ones.
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition""
ssh -n $username@$masterHostname "ssh -t -t $username@$line "mkdir -p EC2_WORKSPACE/$project Input Output Partition""
#Update changed files...
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rsync --delete -avzh /EC2_NFS/$project/* EC2_WORKSPACE/$project""
done < slaves.txt
이 클러스터는 Amazon EC2에 있으며 각 반복마다 6 개의 SSH 세션이 생성되어 상당한 지연을 유발하는 것으로 나타났습니다. 더 적은 SSH 연결을 얻기 위해이 3 개의 명령을 1로 결합하고 싶습니다. 그래서 처음 두 명령을
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input Output Partition""
그러나 예상대로 작동하지 않습니다. 첫 번째 ( rm -rf Input Output Partition
) 를 실행 한 다음 세션을 종료하고 계속됩니다. 어떡해?
-J
점프 호스트를 정의 하는 옵션을 사용할 수 있습니다 .