Как использовать SSH для запуска локального сценария в сценарии qsub между двумя кластерами?
Я программирую скрипт для операций на 2 кластерах.
Моя цель - сфокусировать только один кластер, это означает, что каждый исходный код скрипта находится только на одном кластере.
Например, в кластерном A I все сценарии установлены, и теперь я хочу подключиться к кластеру B по ssh, чтобы не устанавливать их снова в кластере B.
Я знал, с помощью сценария Bash, как ssh root@ClusterB 'bash -s' < local_ClusterA_script.sh
затем кластер B запускает local_ClusterA_script.sh из кластера A.
Теперь есть еще одна проблема, которая заключается в том, что мне нужно использовать ssh для отправки пакетного задания на кластере B из кластера A, для этого пакетного задания требуется скрипт из кластера A.
# run.sh :
#!/bin/bash
INPUT_ARGS="$@"
qsub -v argv="$INPUT_ARGS" -l arch=x86_64 -l walltime=10:00:00 -l vmem=8GB -l nodes=1:ppn=6 $CLUSTERA_BIN/run.script
# run.script
runprogram()
{
#Input
INPUT_ARGS=`echo $argv`
$CLUSTERA_BIN/runprogram.py "$INPUT_ARGS" ;
}
Так что моя проблема в том, где кластер B находит $CLUSTERA_BIN/runprogram.py
? Как заставить код в run.script успешно работать на кластере B?
Одна команда, я думал, что это будет ssh root@ClusterB 'bash -s' < run.sh $MYARGS
, но, очевидно, это не сработает.
1 ответ
Кластер B должен получить доступ к тем файлам, которые ему нужны. Итак, у вас есть несколько вариантов:
- Передумай и скопируй (значит
scp
,rsync
,...) файлы в кластер B. Вы также можете рассмотреть возможность использования системы контроля версий (например,svn
,git
,...) для синхронизации файлов между несколькими хостами. - Когда кластеру B нужен файл, получите его из кластера A на лету (например, без пароля).
scp
). - Поместите ваши файлы в один каталог кластера А и поделитесь (значит
NFS
,SMB
...) каталог к кластеру B. - ......