Uruchamianie usługi NAMD z pakietem Microsoft HPC Pack w węzłach obliczeniowych systemu Linux na platformie Azure
Ważne
Klasyczne maszyny wirtualne zostaną wycofane 1 marca 2023 r.
Jeśli używasz zasobów IaaS z usługi ASM, przeprowadź migrację do 1 marca 2023 r. Zachęcamy do wcześniej przełączenia w celu skorzystania z wielu ulepszeń funkcji w usłudze Azure Resource Manager.
Aby uzyskać więcej informacji, zobacz Migrowanie zasobów IaaS do usługi Azure Resource Manager do 1 marca 2023 r.
W tym artykule przedstawiono jeden ze sposobów uruchamiania obciążenia obliczeń o wysokiej wydajności (HPC) systemu Linux na maszynach wirtualnych platformy Azure. W tym miejscu skonfigurujesz klaster microsoft HPC Pack na platformie Azure z węzłami obliczeniowymi systemu Linux i uruchomisz symulację NAMD , aby obliczyć i zwizualizować strukturę dużego systemu biomolekularnego.
Uwaga
Platforma Azure ma dwa różne modele wdrażania związane z tworzeniem zasobów i pracą z nimi: Resource Manager i model klasyczny. W tym artykule przedstawiono oba modele, ale firma Microsoft zaleca przeprowadzanie większości nowych wdrożeń z zastosowaniem modelu wdrażania przy użyciu usługi Azure Resource Manager.
- NAMD (dla programu Nanoscale Molecular Dynamics) to równoległy pakiet dynamiki molekularnej przeznaczony do symulacji wysokiej wydajności dużych systemów biomolekularnych zawierających maksymalnie miliony atomów. Przykłady tych systemów to wirusy, struktury komórek i duże białka. NamD skaluje do setek rdzeni dla typowych symulacji i do ponad 500 000 rdzeni dla największych symulacji.
- Pakiet Microsoft HPC Pack udostępnia funkcje umożliwiające uruchamianie aplikacji HPC i równoległych na dużą skalę w klastrach komputerów lokalnych lub maszyn wirtualnych platformy Azure. Pierwotnie opracowany jako rozwiązanie dla obciążeń HPC systemu Windows pakiet HPC Pack obsługuje teraz uruchamianie aplikacji HPC systemu Linux na maszynach wirtualnych węzłów obliczeniowych systemu Linux wdrożonych w klastrze HPC Pack. Aby zapoznać się z wprowadzeniem, zobacz Wprowadzenie do węzłów obliczeniowych systemu Linux w klastrze HPC Pack na platformie Azure .
Wymagania wstępne
- Klaster HPC Pack z węzłami obliczeniowymi systemu Linux — wdrażanie klastra PAKIETU HPC Pack z węzłami obliczeniowymi systemu Linux na platformie Azure przy użyciu szablonu usługi Azure Resource Manager lub skryptu Azure PowerShell. Zobacz Wprowadzenie do węzłów obliczeniowych systemu Linux w klastrze PAKIETU HPC Pack na platformie Azure , aby uzyskać informacje o wymaganiach wstępnych i krokach dla każdej z tych opcji. Jeśli wybierzesz opcję wdrażania skryptu programu PowerShell, zobacz przykładowy plik konfiguracji w przykładowych plikach na końcu tego artykułu. Ten plik konfiguruje oparty na platformie Azure klaster HPC Pack składający się z węzła głównego Windows Server 2012 R2 i czterech rozmiarów dużych węzłów obliczeniowych systemu CentOS 6.6. Dostosuj ten plik zgodnie z potrzebami dla środowiska.
- Pliki oprogramowania NAMD i samouczka — pobierz oprogramowanie NAMD dla systemu Linux z witryny NAMD (wymagana rejestracja). Ten artykuł jest oparty na protokole NAMD w wersji 2.10 i korzysta z archiwum systemu Linux-x86_64 (64-bitowej firmy Intel/AMD z siecią Ethernet). Pobierz również pliki samouczka NAMD. Pliki do pobrania to pliki tar i potrzebne jest narzędzie systemu Windows do wyodrębnienia plików w węźle głównym klastra. Aby wyodrębnić pliki, postępuj zgodnie z instrukcjami w dalszej części tego artykułu.
- VMD (opcjonalnie) — aby wyświetlić wyniki zadania NAMD, pobierz i zainstaluj program wizualizacji molekularnej VMD na wybranym komputerze. Bieżąca wersja to 1.9.2. Aby rozpocząć pracę, zobacz witrynę pobierania maszyny wirtualnej.
Konfigurowanie wzajemnego zaufania między węzłami obliczeniowymi
Uruchomienie zadania między węzłami w wielu węzłach systemu Linux wymaga, aby węzły ufały sobie nawzajem (za pomocą protokołu rsh lub ssh). Podczas tworzenia klastra HPC Pack za pomocą skryptu wdrażania IaaS pakietu Microsoft HPC Pack skrypt automatycznie konfiguruje trwałe wzajemne zaufanie dla określonego konta administratora. W przypadku użytkowników niebędących administratorami tworzonymi w domenie klastra należy skonfigurować tymczasowe wzajemne zaufanie między węzłami po przydzieleniu zadania do nich. Następnie należy zniszczyć relację po zakończeniu zadania. Aby to zrobić dla każdego użytkownika, należy podać parę kluczy RSA do klastra, którego pakiet HPC Pack używa do ustanowienia relacji zaufania. Postępuj zgodnie z instrukcjami.
Generowanie pary kluczy RSA
Łatwo jest wygenerować parę kluczy RSA, która zawiera klucz publiczny i klucz prywatny, uruchamiając polecenie ssh-keygen systemu Linux.
Zaloguj się na komputerze z systemem Linux.
Uruchom następujące polecenie:
ssh-keygen -t rsa
Uwaga
Naciśnij klawisz Enter , aby użyć ustawień domyślnych do momentu ukończenia polecenia. W tym miejscu nie wprowadzaj hasła; po wyświetleniu monitu o hasło wystarczy nacisnąć klawisz Enter.
Zmień katalog na katalog ~/.ssh. Klucz prywatny jest przechowywany w id_rsa i klucz publiczny w id_rsa.pub.
Dodawanie pary kluczy do klastra PAKIETU HPC Pack
Połącz się za pomocą pulpitu zdalnego z maszyną wirtualną węzła głównego przy użyciu poświadczeń domeny podanych podczas wdrażania klastra (na przykład hpc\clusteradmin). Klaster można zarządzać z węzła głównego.
Użyj standardowych procedur systemu Windows Server, aby utworzyć konto użytkownika domeny w domenie usługi Active Directory klastra. Na przykład użyj narzędzia Użytkownicy i komputery usługi Active Directory w węźle głównym. W przykładach w tym artykule przyjęto założenie, że utworzysz użytkownika domeny o nazwie hpcuser w domenie hpclab (hpclab\hpcuser).
Dodaj użytkownika domeny do klastra HPC Pack jako użytkownika klastra. Aby uzyskać instrukcje, zobacz Dodawanie lub usuwanie użytkowników klastra.
Utwórz plik o nazwie C:\cred.xml i skopiuj do niego dane klucza RSA. Przykład można znaleźć w przykładowych plikach na końcu tego artykułu.
<ExtendedData> <PrivateKey>Copy the contents of private key here</PrivateKey> <PublicKey>Copy the contents of public key here</PublicKey> </ExtendedData>
Otwórz wiersz polecenia i wprowadź następujące polecenie, aby ustawić dane poświadczeń dla konta hpclab\hpcuser. Parametr extendeddata służy do przekazywania nazwy pliku C:\cred.xml utworzonego dla danych klucza.
hpccred setcreds /extendeddata:c:\cred.xml /user:hpclab\hpcuser /password:<UserPassword>
To polecenie kończy się pomyślnie bez danych wyjściowych. Po ustawieniu poświadczeń dla kont użytkowników należy uruchomić zadania, zapisać plik cred.xml w bezpiecznej lokalizacji lub usunąć go.
Jeśli para kluczy RSA została wygenerowana w jednym z węzłów systemu Linux, pamiętaj o usunięciu kluczy po zakończeniu korzystania z nich. Pakiet HPC Pack nie konfiguruje wzajemnego zaufania, jeśli znajdzie istniejący plik id_rsa lub plik id_rsa.pub.
Ważne
Nie zalecamy uruchamiania zadania systemu Linux jako administratora klastra w klastrze udostępnionym, ponieważ zadanie przesłane przez administratora jest uruchamiane na koncie głównym w węzłach systemu Linux. Zadanie przesłane przez użytkownika niebędącego administratorem jest uruchamiane na lokalnym koncie użytkownika systemu Linux o takiej samej nazwie jak użytkownik zadania. W takim przypadku pakiet HPC Pack konfiguruje wzajemne zaufanie dla tego użytkownika systemu Linux we wszystkich węzłach przydzielonych do zadania. Użytkownik systemu Linux można skonfigurować ręcznie w węzłach systemu Linux przed uruchomieniem zadania lub pakiet HPC Pack automatycznie tworzy użytkownika po przesłaniu zadania. Jeśli pakiet HPC Pack tworzy użytkownika, pakiet HPC Pack usuwa go po zakończeniu zadania. Aby zmniejszyć zagrożenie bezpieczeństwa, klucze są usuwane po zakończeniu zadania w węzłach.
Konfigurowanie udziału plików dla węzłów systemu Linux
Teraz skonfiguruj udział plików SMB i zainstaluj folder udostępniony na wszystkich węzłach systemu Linux, aby umożliwić węzłom systemu Linux dostęp do plików NAMD za pomocą wspólnej ścieżki. Poniżej przedstawiono kroki instalacji folderu udostępnionego w węźle głównym. Udział jest zalecany w przypadku dystrybucji, takich jak CentOS 6.6, które obecnie nie obsługują usługi Azure File. Jeśli węzły systemu Linux obsługują udział plików platformy Azure, zobacz Jak używać usługi Azure File Storage z systemem Linux. Aby uzyskać dodatkowe opcje udostępniania plików z pakietem HPC Pack, zobacz Wprowadzenie do węzłów obliczeniowych systemu Linux w klastrze pakietu HPC Pack na platformie Azure.
Utwórz folder w węźle głównym i udostępnij go wszystkim, ustawiając uprawnienia do odczytu/zapisu. W tym przykładzie \\CentOS66HN\Namd jest nazwą folderu, w którym CentOS66HN jest nazwą hosta węzła głównego.
Utwórz podfolder o nazwie namd2 w folderze udostępnionym. W polu namd2 utwórz kolejny podfolder o nazwie namdsample.
Wyodrębnij pliki NAMD w folderze przy użyciu wersji systemu Windows tar lub innego narzędzia systemu Windows, które działa w archiwach tar.
- Wyodrębnij archiwum tar NAMD do folderu \\CentOS66HN\Namd\namd2.
- Wyodrębnij pliki samouczka w folderze \\CentOS66HN\Namd\namd2\namdsample.
Otwórz okno Windows PowerShell i uruchom następujące polecenia, aby zainstalować folder udostępniony w węzłach systemu Linux.
clusrun /nodegroup:LinuxNodes mkdir -p /namd2 clusrun /nodegroup:LinuxNodes mount -t cifs //CentOS66HN/Namd/namd2 /namd2 -o vers=2.1`,username=<username>`,password='<password>'`,dir_mode=0777`,file_mode=0777
Pierwsze polecenie tworzy folder o nazwie /namd2 we wszystkich węzłach w grupie LinuxNodes. Drugie polecenie instaluje folder udostępniony //CentOS66HN/Namd/namd2 w folderze z dir_mode i file_mode bity ustawione na 777. Nazwa użytkownika i hasło w poleceniu powinny być poświadczeniami użytkownika w węźle głównym.
Uwaga
Symbol "'" w drugim poleceniu jest symbolem ucieczki dla programu PowerShell. "'," oznacza "", (znak przecinka) jest częścią polecenia.
Tworzenie skryptu powłoki Bash w celu uruchomienia zadania NAMD
Zadanie NAMD wymaga pliku nodelist dla funkcji charmrun , aby określić liczbę węzłów do użycia podczas uruchamiania procesów NAMD. Używasz skryptu powłoki Bash, który generuje plik listy węzłów i uruchamia polecenie charmrun z tym plikiem nodelist. Następnie można przesłać zadanie NAMD w Menedżerze klastra HPC, które wywołuje ten skrypt.
Używając wybranego edytora tekstów, utwórz skrypt powłoki Bash w folderze /namd2 zawierającym pliki programu NAMD i nadaj mu nazwę hpccharmrun.sh. Aby uzyskać szybki dowód koncepcji, skopiuj przykładowy skrypt hpccharmrun.sh podany na końcu tego artykułu i przejdź do pozycji Prześlij zadanie NAMD.
Porada
Zapisz skrypt jako plik tekstowy z zakończeniami wierszy systemu Linux (tylko LF, a nie CR LF). Gwarantuje to, że działa prawidłowo w węzłach systemu Linux.
Poniżej przedstawiono szczegółowe informacje o tym, co robi ten skrypt powłoki bash.
Zdefiniuj niektóre zmienne.
#!/bin/bash # The path of this script SCRIPT_PATH="$( dirname "${BASH_SOURCE[0]}" )" # Charmrun command CHARMRUN=${SCRIPT_PATH}/charmrun # Argument of ++nodelist NODELIST_OPT="++nodelist" # Argument of ++p NUMPROCESS="+p"
Pobieranie informacji o węźle ze zmiennych środowiskowych. $NODESCORES przechowuje listę wyrazów podzielonych z $CCP_NODES_CORES. $COUNT jest rozmiarem $NODESCORES.
# Get node information from the environment variables NODESCORES=(${CCP_NODES_CORES}) COUNT=${#NODESCORES[@]}
Format zmiennej $CCP_NODES_CORES jest następujący:
<Number of nodes> <Name of node1> <Cores of node1> <Name of node2> <Cores of node2>…
Ta zmienna zawiera łączną liczbę węzłów, nazw węzłów i liczbę rdzeni w każdym węźle przydzielonym do zadania. Jeśli na przykład zadanie wymaga uruchomienia 10 rdzeni, wartość $CCP_NODES_CORES jest podobna do następującej:
3 CENTOS66LN-00 4 CENTOS66LN-01 4 CENTOS66LN-03 2
Jeśli zmienna $CCP_NODES_CORES nie jest ustawiona, uruchom polecenie charmrun bezpośrednio. (Powinno to nastąpić tylko w przypadku uruchamiania tego skryptu bezpośrednio w węzłach systemu Linux).
if [ ${COUNT} -eq 0 ] then # CCP_NODES is_CORES is not found or is empty, so just run charmrun without nodelist arg. #echo ${CHARMRUN} $* ${CHARMRUN} $*
Możesz też utworzyć plik listy węzłów dla funkcji charmrun.
else # Create the nodelist file NODELIST_PATH=${SCRIPT_PATH}/nodelist_$$ # Write the head line echo "group main" > ${NODELIST_PATH} # Get every node name and number of cores and write into the nodelist file I=1 while [ ${I} -lt ${COUNT} ] do echo "host ${NODESCORES[${I}]} ++cpus ${NODESCORES[$(($I+1))]}" >> ${NODELIST_PATH} let "I=${I}+2" done
Uruchom polecenie charmrun z plikiem nodelist, uzyskaj jego stan powrotu i usuń plik nodelist na końcu.
${CCP_NUMCPUS} to kolejna zmienna środowiskowa ustawiana przez węzeł główny pakietu HPC Pack. Przechowuje on łączną liczbę rdzeni przydzielonych do tego zadania. Używamy go do określania liczby procesów dla funkcji charmrun.
# Run charmrun with nodelist arg #echo ${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $* ${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $* RTNSTS=$? rm -f ${NODELIST_PATH} fi
Zakończ z stanem powrotu charmrun .
exit ${RTNSTS}
Poniżej przedstawiono informacje w pliku nodelist, które generuje skrypt:
group main
host <Name of node1> ++cpus <Cores of node1>
host <Name of node2> ++cpus <Cores of node2>
…
Przykład:
group main
host CENTOS66LN-00 ++cpus 4
host CENTOS66LN-01 ++cpus 4
host CENTOS66LN-03 ++cpus 2
Przesyłanie zadania NAMD
Teraz możesz przesłać zadanie NAMD w Menedżerze klastra HPC.
Połącz się z węzłem głównym klastra i uruchom Menedżera klastra HPC.
W obszarze Zarządzanie zasobami upewnij się, że węzły obliczeniowe systemu Linux są w stanie Online . Jeśli tak nie jest, zaznacz je i kliknij pozycję Bring Online (Przynieś online).
W obszarze Zarządzanie zadaniami kliknij pozycję Nowe zadanie.
Wprowadź nazwę zadania, na przykład hpccharmrun.
Na stronie Szczegóły zadania w obszarze Zasoby zadań wybierz typ zasobu jako węzeł i ustaw wartość Minimum na 3. , uruchamiamy zadanie w trzech węzłach systemu Linux, a każdy węzeł ma cztery rdzenie.
Kliknij pozycję Edytuj zadania w obszarze nawigacji po lewej stronie, a następnie kliknij przycisk Dodaj , aby dodać zadanie do zadania.
Na stronie Szczegóły zadania i Przekierowanie we/wy ustaw następujące wartości:
Wiersz polecenia -
/namd2/hpccharmrun.sh ++remote-shell ssh /namd2/namd2 /namd2/namdsample/1-2-sphere/ubq_ws_eq.conf > /namd2/namd2_hpccharmrun.log
Porada
Poprzedni wiersz polecenia jest pojedynczym poleceniem bez podziałów wierszy. Zawija się on w kilku wierszach w obszarze Wiersz polecenia.
Katalog roboczy — /namd2
Minimum - 3
Uwaga
W tym miejscu ustawiono katalog roboczy, ponieważ polecenie charmrun próbuje przejść do tego samego katalogu roboczego w każdym węźle. Jeśli katalog roboczy nie jest ustawiony, pakiet HPC Pack uruchamia polecenie w losowo nazwanym folderze utworzonym w jednym z węzłów systemu Linux. Powoduje to następujący błąd w innych węzłach:
/bin/bash: line 37: cd: /tmp/nodemanager_task_94_0.mFlQSN: No such file or directory.
Aby uniknąć tego problemu, określ ścieżkę folderu, do którego można uzyskać dostęp we wszystkich węzłach jako katalog roboczy.
Kliknij przycisk OK , a następnie kliknij przycisk Prześlij , aby uruchomić to zadanie.
Domyślnie pakiet HPC Pack przesyła zadanie jako bieżące zalogowanego konta użytkownika. Po kliknięciu przycisku Prześlij może zostać wyświetlone okno dialogowe z monitem o wprowadzenie nazwy użytkownika i hasła.
W niektórych warunkach pakiet HPC Pack zapamiętuje informacje o użytkowniku wprowadzone przed i nie wyświetla tego okna dialogowego. Aby ponownie pokazać pakiet HPC Pack, wprowadź następujące polecenie w wierszu polecenia, a następnie prześlij zadanie.
hpccred delcreds
Ukończenie zadania trwa kilka minut.
Znajdź dziennik zadań w folderze \\Namd\namd2\namd2_hpccharmrun.log i plikach wyjściowych w folderze \\Namd\namd2\namdsample\1-2-sphere.
Opcjonalnie uruchom usługę VMD, aby wyświetlić wyniki zadania. Kroki wizualizacji plików wyjściowych NAMD (w tym przypadku wszechobecnej cząsteczki białka w sferze wodnej) wykraczają poza zakres tego artykułu. Aby uzyskać szczegółowe informacje, zobacz NAMD Tutorial (Samouczek usługi NAMD ).
Przykładowe pliki
Przykładowy plik konfiguracji XML na potrzeby wdrażania klastra za pomocą skryptu programu PowerShell
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
<Subscription>
<SubscriptionName>Subscription-1</SubscriptionName>
<StorageAccount>mystorageaccount</StorageAccount>
</Subscription>
<Location>West US</Location>
<VNet>
<VNetName>MyVNet</VNetName>
<SubnetName>Subnet-1</SubnetName>
</VNet>
<Domain>
<DCOption>HeadNodeAsDC</DCOption>
<DomainFQDN>hpclab.local</DomainFQDN>
</Domain>
<Database>
<DBOption>LocalDB</DBOption>
</Database>
<HeadNode>
<VMName>CentOS66HN</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>Large</VMSize>
<EnableRESTAPI />
<EnableWebPortal />
</HeadNode>
<LinuxComputeNodes>
<VMNamePattern>CentOS66LN-%00%</VMNamePattern>
<ServiceName>MyLnxCNService</ServiceName>
<VMSize>Large</VMSize>
<NodeCount>4</NodeCount>
<ImageName>5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-66-20150325</ImageName>
</LinuxComputeNodes>
</IaaSClusterConfig>
Przykładowy plik cred.xml
<ExtendedData>
<PrivateKey>-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxJKBABhnOsE9eneGHvsjdoXKooHUxpTHI1JVunAJkVmFy8JC
qFt1pV98QCtKEHTC6kQ7tj1UT2N6nx1EY9BBHpZacnXmknpKdX4Nu0cNlSphLpru
lscKPR3XVzkTwEF00OMiNJVknq8qXJF1T3lYx3rW5EnItn6C3nQm3gQPXP0ckYCF
Jdtu/6SSgzV9kaapctLGPNp1Vjf9KeDQMrJXsQNHxnQcfiICp21NiUCiXosDqJrR
AfzePdl0XwsNngouy8t0fPlNSngZvsx+kPGh/AKakKIYS0cO9W3FmdYNW8Xehzkc
VzrtJhU8x21hXGfSC7V0ZeD7dMeTL3tQCVxCmwIDAQABAoIBAQCve8Jh3Wc6koxZ
qh43xicwhdwSGyliZisoozYZDC/ebDb/Ydq0BYIPMiDwADVMX5AqJuPPmwyLGtm6
9hu5p46aycrQ5+QA299g6DlF+PZtNbowKuvX+rRvPxagrTmupkCswjglDUEYUHPW
05wQaNoSqtzwS9Y85M/b24FfLeyxK0n8zjKFErJaHdhVxI6cxw7RdVlSmM9UHmah
wTkW8HkblbOArilAHi6SlRTNZG4gTGeDzPb7fYZo3hzJyLbcaNfJscUuqnAJ+6pT
iY6NNp1E8PQgjvHe21yv3DRoVRM4egqQvNZgUbYAMUgr30T1UoxnUXwk2vqJMfg2
Nzw0ESGRAoGBAPkfXjjGfc4HryqPkdx0kjXs0bXC3js2g4IXItK9YUFeZzf+476y
OTMQg/8DUbqd5rLv7PITIAqpGs39pkfnyohPjOe2zZzeoyaXurYIPV98hhH880uH
ZUhOxJYnlqHGxGT7p2PmmnAlmY4TSJrp12VnuiQVVVsXWOGPqHx4S4f9AoGBAMn/
vuea7hsCgwIE25MJJ55FYCJodLkioQy6aGP4NgB89Azzg527WsQ6H5xhgVMKHWyu
Q1snp+q8LyzD0i1veEvWb8EYifsMyTIPXOUTwZgzaTTCeJNHdc4gw1U22vd7OBYy
nZCU7Tn8Pe6eIMNztnVduiv+2QHuiNPgN7M73/x3AoGBAOL0IcmFgy0EsR8MBq0Z
ge4gnniBXCYDptEINNBaeVStJUnNKzwab6PGwwm6w2VI3thbXbi3lbRAlMve7fKK
B2ghWNPsJOtppKbPCek2Hnt0HUwb7qX7Zlj2cX/99uvRAjChVsDbYA0VJAxcIwQG
TxXx5pFi4g0HexCa6LrkeKMdAoGAcvRIACX7OwPC6nM5QgQDt95jRzGKu5EpdcTf
g4TNtplliblLPYhRrzokoyoaHteyxxak3ktDFCLj9eW6xoCZRQ9Tqd/9JhGwrfxw
MS19DtCzHoNNewM/135tqyD8m7pTwM4tPQqDtmwGErWKj7BaNZARUlhFxwOoemsv
R6DbZyECgYEAhjL2N3Pc+WW+8x2bbIBN3rJcMjBBIivB62AwgYZnA2D5wk5o0DKD
eesGSKS5l22ZMXJNShgzPKmv3HpH22CSVpO0sNZ6R+iG8a3oq4QkU61MT1CfGoMI
a8lxTKnZCsRXU1HexqZs+DSc+30tz50bNqLdido/l5B4EJnQP03ciO0=
-----END RSA PRIVATE KEY-----</PrivateKey>
<PublicKey>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEkoEAGGc6wT16d4Ye+yN2hcqigdTGlMcjUlW6cAmRWYXLwkKoW3WlX3xAK0oQdMLqRDu2PVRPY3qfHURj0EEellpydeaSekp1fg27Rw2VKmEumu6Wxwo9HddXORPAQXTQ4yI0lWSerypckXVPeVjHetbkSci2foLedCbeBA9c/RyRgIUl227/pJKDNX2Rpqly0sY82nVWN/0p4NAyslexA0fGdBx+IgKnbU2JQKJeiwOomtEB/N492XRfCw2eCi7Ly3R8+U1KeBm+zH6Q8aH8ApqQohhLRw71bcWZ1g1bxd6HORxXOu0mFTzHbWFcZ9ILtXRl4Pt0x5Mve1AJXEKb username@servername;</PublicKey>
</ExtendedData>
Przykładowy skrypt hpccharmrun.sh
#!/bin/bash
# The path of this script
SCRIPT_PATH="$( dirname "${BASH_SOURCE[0]}" )"
# Charmrun command
CHARMRUN=${SCRIPT_PATH}/charmrun
# Argument of ++nodelist
NODELIST_OPT="++nodelist"
# Argument of ++p
NUMPROCESS="+p"
# Get node information from ENVs
# CCP_NODES_CORES=3 CENTOS66LN-00 4 CENTOS66LN-01 4 CENTOS66LN-03 4
NODESCORES=(${CCP_NODES_CORES})
COUNT=${#NODESCORES[@]}
if [ ${COUNT} -eq 0 ]
then
# If CCP_NODES_CORES is not found or is empty, just run the charmrun without nodelist arg.
#echo ${CHARMRUN} $*
${CHARMRUN} $*
else
# Create the nodelist file
NODELIST_PATH=${SCRIPT_PATH}/nodelist_$$
# Write the head line
echo "group main" > ${NODELIST_PATH}
# Get every node name & cores and write into the nodelist file
I=1
while [ ${I} -lt ${COUNT} ]
do
echo "host ${NODESCORES[${I}]} ++cpus ${NODESCORES[$(($I+1))]}" >> ${NODELIST_PATH}
let "I=${I}+2"
done
# Run the charmrun with nodelist arg
#echo ${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $*
${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $*
RTNSTS=$?
rm -f ${NODELIST_PATH}
fi
exit ${RTNSTS}