Freigeben über


Ausführen von HPC SOA Services im Hybrid HPC Pack Cluster

In dieser Dokumentation wird beschrieben, wie HPC SOA-Dienste in einem hybriden HPC Pack-Cluster bereitgestellt und ausgeführt werden, der sowohl lokale Computeknoten als auch Azure IaaS-Computeknoten enthält.

Voraussetzung

Bereitstellen eines Hybrid HPC Pack-Clusters

Um einen hybriden HPC Pack Cluster bereitzustellen, können Sie iaaS Burst-Funktion aus HPC Pack 2016 Update 1 nutzen. Ausführliche Informationen finden Sie unter Burst to Azure IaaS VM aus einem HPC Pack Cluster .

Bereitstellen von HPC SOA-Diensten in einem Hybrid HPC Pack Cluster

IaaS-Computeknoten sind domänenverbunden

Wenn die IaaS-Computeknoten einer Domäne beigetreten sind, verhält sich der Cluster als lokaler HPC Pack Cluster. Weitere Informationen zu HPC SOA finden Sie in unserer Lernprogrammreihe .

IaaS-Computeknoten sind nicht einer Domäne beigetreten

Wenn die IaaS-Computeknoten nicht mit einer Domäne verknüpfte Computeknoten sind, unterscheidet sich die Möglichkeit zum Bereitstellen eines neuen HPC-SOA-Diensts geringfügig.

Bereitstellen eines neuen HPC SOA-Diensts

  1. Bereitstellen von Dienstbinärdateien

    Beim Bereitstellen eines neuen HPC-SOA-Diensts in einem hybriden HPC Pack-Cluster, der nicht domänenverbundene IaaS-Computeknoten enthält, müssen die Dienstbinärdateien in den lokalen Ordner aller Computeknoten platziert werden. (z. B. C:\Services\Sample.dll)

  2. Ändern der Einstellungen in der Dienstregistrierungsdatei

    • Ändern des Assemblypfads in die lokale Datei auf jedem Computeknoten

      <microsoft.Hpc.Session.ServiceRegistration>
          <!--Change assembly path below-->
          <service assembly="C:\Services\Sample.dll" />    
      </microsoft.Hpc.Session.ServiceRegistration>
      
    • Da domänenidentitäten auf nicht domänenverbundenen Computeknoten nicht verfügbar sind, müssen wir den Sicherheitsmodus zwischen Brokerknoten und Computeknoten Noneauf festlegen. Fügen Sie den folgenden Abschnitt zur Dienstregistrierungsdatei hinzu, oder ändern Sie vorhandene:

      <system.serviceModel>
          <bindings>
              <netTcpBinding>
                  <!--binding used by broker's backend-->
                  <binding name="Microsoft.Hpc.BackEndBinding" maxConnections="1000">
                      <!--for non domain joined compute nodes, the security mode should be None-->
                      <security mode="None"/>
                  </binding>
              </netTcpBinding>
          </bindings>
      </system.serviceModel>
      
  3. Bereitstellen der Dienstregistrierungsdatei

    Es gibt zwei Möglichkeiten, die Dienstregistrierungsdatei des neuen SOA-Diensts bereitzustellen.

    • Bereitstellen der Dienstregistrierungsdatei in jedem lokalen Ordner von Clusterknoten

      Um die Dienstregistrierungsdatei auf diese Weise bereitzustellen, müssen wir einen lokalen Dienstregistrierungsordner auf jedem Knoten (z. B. C:\ServiceRegistration) erstellen und der UMGEBUNG des CCP_SERVICEREGISTRATION_PATH HPC Pack-Clusters hinzufügen.

      Die Clusterumgebung kann mithilfe des Befehls cluscfg listenvs auf dem Kopfknoten abgerufen werden und gibt die Ausgabe wie folgt aus:

      C:\Windows\system32>cluscfg listenvs
      CCP_SERVICEREGISTRATION_PATH=CCP_REGISTRATION_STORE;\\<headnode>\HpcServiceRegistration
      HPC_RUNTIMESHARE=\\<headnode>\Runtime$
      CCP_MPI_NETMASK=10.0.0.0/255.255.252.0
      CCP_CLUSTER_NAME=<headnode>
      

      Um die Umgebung zu konfigurieren, verwenden Sie befehl cluscfg setenvs wie

      cluscfg setenvs CCP_SERVICEREGISTRATION_PATH=CCP_REGISTRATION_STORE;\\<headnode>\HpcServiceRegistration;C:\ServiceRegistration
      

      Kopieren Sie dann die Dienstregistrierungsdatei in den neu erstellten lokalen Ordner (z. B. C:\ServiceRegistration\Sample.config)

      Weitere Informationen cluscfg finden Sie in der Cluscfg-Dokumentation.

      Weitere Informationen zum Erstellen und Bereitstellen eines neuen SOA-Diensts finden Sie im HPC Pack SOA Tutorial I – Schreiben Sie Ihren ersten SOA-Dienst und -Client.

    • Bereitstellen der Dienstregistrierungsdatei mithilfe des HA-Konfigurationsdateifeatures

      Von HPC Pack Update 1 haben wir die HA-Konfigurationsdateifunktion hinzugefügt, um die Bereitstellung von Dienstregistrierungsdateien in HA-Clustern und in Clustern mit nicht-domänenverbundenen Computeknoten zu unterstützen.

      Um dieses Feature zu verwenden, stellen Sie sicher, dass sie CCP_REGISTRATION_STORE in CCP_SERVICEREGISTRATION_PATH der Clusterumgebung festgelegt ist. Überprüfen Sie das Ergebnis von cluscfg listenvs, es sollte enthalten sein

      CCP_SERVICEREGISTRATION_PATH=CCP_REGISTRATION_STORE;\\<headnode>\HpcServiceRegistration
      

      Wenn der Wert CCP_REGISTRATION_STORE fehlt, legen Sie ihn wie folgt cluscfg setenvs fest:

      cluscfg setenvs CCP_SERVICEREGISTRATION_PATH=CCP_REGISTRATION_STORE;\\<headnode>\HpcServiceRegistration
      

      Um eine HA-Konfigurationsdatei hinzuzufügen, wechseln Sie im HPC Pack 2016 Cluster Manager zum Bereich "Konfiguration –> Dienste" und klicken Sie im Aktionsbereich auf "Hoch verfügbare Konfigurationsdatei importieren" . Wählen Sie dann die zu importierende HA-Konfigurationsdatei aus.

      Screenshot der Seite

      Nach dem Importieren wird ein neuer Diensteintrag im Bereich "Dienste" angezeigt, wobei "Hoch verfügbar" auf "True" festgelegt ist.

      Screenshot eines Diensteintrags mit dem Wert

Verwenden allgemeiner Daten

Von HPC Pack 2016 Update 2 können nicht domänenverbundene Computeknoten SOA Common Data aus Azure Blob Storage direkt lesen, ohne auf die HPC-Runtime-Freigabe zuzugreifen, die sich normalerweise auf dem Kopfknoten befindet. Dadurch können die SOA-Workloads in einem hybriden HPC Pack-Cluster mit in Azure bereitgestellter Computeressource aktiviert werden.

  • Konfigurieren des HPC Pack-Clusters

    Um dieses Feature zu aktivieren, muss eine Azure Storage-Verbindungszeichenfolge im HPC-Cluster konfiguriert werden. Suchen Sie im HPC Pack 2016 Cluster-Manager die Zeichenfolge für die Microsoft Azure-Speicherverbindung in "Configuration –> Deployment To-do List", und geben Sie die richtige Verbindungszeichenfolge ein.

    Screenshot der Liste

  • Ändern des SOA-Dienstcodes

    Wenn Ihr Dienst aufruft ServiceContext.GetDataClient , um einen Verweis DataClient von vorher abzurufen, ist keine Codeänderung erforderlich.

    Wenn Ihr Dienst stattdessen explizit verwendet DataClient.Openwird, müssen Sie den Aufruf einer neuen API ändern, wenn Ihr Dienst auf einem Nicht-Domänenverbundknoten ausgeführt wird. Hier ist das Beispiel dafür.

    // Get Job ID from environment variable
    string jobIdEnvVar = Environment.GetEnvironmentVariable(Microsoft.Hpc.Scheduler.Session.Internal.Constant.JobIDEnvVar);
    if (!int.TryParse(jobIdEnvVar, out int jobId))
    {
        throw new InvalidOperationException($"jobIdEnvVar is invalid:{jobIdEnvVar}");
    }
    // Get Job Secret from environment variable
    string jobSecretEnvVar = Environment.GetEnvironmentVariable(Microsoft.Hpc.Scheduler.Session.Internal.Constant.JobSecretEnvVar);
    return DataClient.Open(dataClientId, jobId, jobSecretEnvVar);
    

Weitere Informationen cluscfg finden Sie in der Cluscfg-Dokumentation.

Weitere Informationen zu Azure Storage-Verbindungszeichenfolgen finden Sie unter Konfigurieren von Azure Storage-Verbindungszeichenfolgen.

Weitere Informationen zu HPC SOA Common Data finden Sie im HPC Pack SOA Tutorial IV – Common Data.

HPC Pack SOA Tutorials