Azure MS-MPI in einer Box

Azure MPI 3

Eines der Dinge, die wir angesprochen haben in einem früherer Blogbeitrag ist die relative Schwierigkeit bei der Einrichtung eines Microsoft MPI Cluster auf Windows Azure aufgrund der HPC Pack-Installationsanforderung, die der offizielle Dokumentation empfiehlt. Wie wir festgestellt haben, ist es möglich, einen Microsoft MPI-Cluster ohne HPC Pack manuell zu installieren und zu konfigurieren, dieser Prozess ist jedoch nicht gut dokumentiert.

Wir freuen uns, heute ein eigenständiges Cloud-Service-Paket veröffentlichen zu können, das einen InfiniBand Microsoft MPI-Cluster für Azure PaaS installiert und konfiguriert. Wir sind überzeugt, dass diese „MPI-in-a-box“-Funktionalität die einmalige Einrichtung eines Clusters deutlich vereinfacht, ohne dass Investitionen in die Installation und Wartung einer vollständigen HPC Pack-Bereitstellung erforderlich sind.

Um einen verbundenen Cluster von A9-Instanzen zu starten, können Sie einfach das vorgefertigte Paket herunterladen und bereitstellen werden auf dieser Seite erläutert und nehmen Sie einige Einstellungen in der zugehörigen .cscfg-Datei vor. Das Paket enthält ein Startskript, das Microsoft MPI auf den Knoten installiert und konfiguriert. Das Startskript kümmert sich um die Details zum Öffnen der Firewall-Ports für die Kommunikation zwischen den Knoten und zum Erstellen einer grundlegenden Maschinendatei, die in mpiexec-Aufrufen verwendet werden kann. Darüber hinaus installiert das Skript auf jeder Rolleninstanz einen Cygwin OpenSSH-Server, um den Remotezugriff auf den Cluster zu ermöglichen.

Sie müssen auch einige Werte in der CSCFG-Datei konfigurieren:


  
    
    
      
      
      
      
      
    
    
  

Geben Sie zunächst im Element „Instances“ die Anzahl der zu startenden A9-Instanzen an. Geben Sie anschließend mindestens die Werte für die Einstellungen adminuser.publickey und jobuser.publickey an, damit Sie sich nach dem Booten an den Maschinen anmelden können. Die verschiedenen Konfigurationseinstellungen sind unten aufgeführt:

AdministratorDer Name des Benutzers, der in der Administratorengruppe erstellt wird
adminuser.publickeyDer öffentliche SSH-Schlüssel für den Administratorbenutzer. Der Liste ~/.ssh/authorized_keys hinzugefügt.
JobuserDer Name des Benutzers mit weniger Berechtigungen, der in der Gruppe „Benutzer“ erstellt wird. Dies ist der Benutzer, der mpiexec ausführen soll.
jobuser.publickeyDer öffentliche SSH-Schlüssel für den Jobbenutzer. Der Liste ~/.ssh/authorized_keys hinzugefügt.
blob.storageurlDas Startskript lädt beim Booten Programme von diesem Speicherort herunter. Die MS-MPI- und Cygwin-Distributables befinden sich hier. Rescale hostet die erforderlichen Dateien, sodass Sie hier keine Änderungen vornehmen müssen.

Nachdem Sie die Werte in der CSCFG-Datei ausgefüllt haben, können Sie den Dienst über die Azure-Verwaltungswebseite bereitstellen oder mit der Verwaltungs-API ein Skript dafür erstellen.

Sobald die Instanzen betriebsbereit sind, können Sie per SSH eine Verbindung zu den einzelnen Rolleninstanzen herstellen. Der Cloud-Dienst ist für die Verwendung interner Instanzendpunkte eingerichtet, damit Clients über den Load Balancer eine Verbindung zu einzelnen Rolleninstanzen herstellen können. Der OpenSSH-Server, der auf Port 22 der ersten Rolleninstanz läuft, ist dem externen Port 10106 zugeordnet. Der OpenSSH-Server der zweiten Rolleninstanz ist 10107 zugeordnet, der der dritten 10108 usw.

Wenn Sie also einen Cloud-Dienst namens foobar.cloudapp.net bereitgestellt haben, sollten Sie zur Anmeldung bei der ersten Rolleninstanz in Ihrem Cluster einen Befehl wie den folgenden verwenden:

ssh -i [jobuser-private-key-file] -p 10106 jobuser@foobar.cloudapp.net

SCP kann zum Übertragen von Dateien in den Cluster verwendet werden (beachten Sie jedoch, dass Sie -P anstelle von -p verwenden müssen, um den benutzerdefinierten SSH-Port anzugeben).

Das Startskript startet den SMPD-Prozess auf allen Rechnern mit dem in der Jobuser-Einstellung angegebenen Benutzer. Das bedeutet, dass Sie sich als dieser Benutzer anmelden müssen, um mpiexec auszuführen.
Eine Maschinendatei wird in das Home-Verzeichnis des Jobusers geschrieben, die im mpiexec-Aufruf verwendet werden kann. Nachdem Sie sich beispielsweise per SSH als Jobuser mit der ersten Rolleninstanz verbunden haben, gibt der folgende Befehl die Hostnamen aller Maschinen im Cluster aus:

$ mpiexec -machinefile Maschinendatei Hostname RD00155DC0E6D8 RD00155DC0BEB3

Abschließend konfiguriert das Startskript eine einfache Windows SMB-Dateifreigabe für alle Knoten im Cluster. Der Jobuser kann über den Pfad ~/work/shared auf diesen Ordner zugreifen. Dies ist eine einfache Möglichkeit, Dateien auf die Knoten im Cluster zu verteilen. Beachten Sie jedoch, dass Sie wahrscheinlich eine bessere Performance erzielen, wenn Sie Folgendes verwenden: azcopy damit jeder Knoten seine Eingabedateien stattdessen aus dem Blob-Speicher herunterlädt.
Das Quellcode Der Cloud-Service ist auf Github verfügbar. Sie können ihn gerne forken und beitragen.
MPIClusterService.zip

Möchten Sie mehr über Rescale erfahren?

Vereinbaren Sie eine Demo mit einem unserer Experten