在混合 HPC Pack 群集中运行 HPC SOA 服务

本文档介绍如何在混合 HPC Pack 群集中部署和运行 HPC SOA 服务,该群集包含本地计算节点和 Azure IaaS 计算节点。

先决条件

部署混合 HPC Pack 群集

若要部署混合 HPC Pack 群集,可以利用 HPC Pack 2016 Update 1 中的 IaaS 突发功能。 有关详细信息,请参阅 HPC Pack 群集中的突发到 Azure IaaS VM

在混合 HPC Pack 群集中部署 HPC SOA 服务

IaaS 计算节点已加入域

如果 IaaS 计算节点已加入域,则群集应充当本地 HPC Pack 群集。 有关 HPC SOA 的详细信息,请参阅我们的 教程系列

IaaS 计算节点未加入域

如果 IaaS 计算节点是未加入域的计算节点,则部署新的 HPC SOA 服务的方式略有不同。

部署新的 HPC SOA 服务

  1. 部署服务二进制文件

    将新的 HPC SOA 服务部署到包含未加入域的 IaaS 计算节点的混合 HPC Pack 群集时,服务二进制文件需要放置在每个计算节点的本地文件夹中。 (例如 C:\Services\Sample.dll

  2. 更改服务注册文件中的设置

    • 将程序集路径更改为每个计算节点上的本地文件

      <microsoft.Hpc.Session.ServiceRegistration>
          <!--Change assembly path below-->
          <service assembly="C:\Services\Sample.dll" />    
      </microsoft.Hpc.Session.ServiceRegistration>
      
    • 由于域标识在未加入域的计算节点上不可用,因此我们需要在中转站节点和计算节点 None之间设置安全模式。 将以下部分添加到服务注册文件中或更改现有部分:

      <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. 部署服务注册文件

    有两种方法可以部署新 SOA 服务的服务注册文件

    • 将服务注册文件部署到每个群集节点的本地文件夹

      若要使用这种方式部署服务注册文件,需要在每个节点上(例如 C:\ServiceRegistration)上创建本地服务注册文件夹,并将其添加到 HPC Pack 群集 CCP_SERVICEREGISTRATION_PATH 的环境。

      可以使用命令 cluscfg listenvs 在头节点上提取群集环境,并提供如下所示的输出:

      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>
      

      若要配置环境,请使用类似于cluscfg setenvs

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

      然后将服务注册文件复制到新创建的本地文件夹(例如 C:\ServiceRegistration\Sample.config

      有关的详细信息 cluscfg ,请参阅 cluscfg 文档

      有关创建和部署新的 SOA 服务的详细信息,请参阅 HPC Pack SOA 教程 I – 编写第一个 SOA 服务和客户端

    • 使用 HA 配置文件功能部署服务注册文件

      在 HPC Pack Update 1 中,我们添加了 HA 配置文件功能,以帮助在 HA 群集和未加入域的计算节点的群集中部署服务注册文件。

      若要使用此功能,请确保 CCP_REGISTRATION_STORECCP_SERVICEREGISTRATION_PATH 群集环境中设置。 检查结果 cluscfg listenvs,它应包含

      CCP_SERVICEREGISTRATION_PATH=CCP_REGISTRATION_STORE;\\<headnode>\HpcServiceRegistration
      

      如果缺少该值 CCP_REGISTRATION_STORE ,请将其设置为使用命令 cluscfg setenvs ,例如

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

      若要添加 HA 配置文件,请在 HPC Pack 2016 群集管理器中转到“配置 -> 服务”面板,单击“作”面板中的“ 导入高可用配置文件...” 。 然后选择要导入的 HA 配置文件。

      屏幕截图显示了“配置”页,其中选择了“服务”,并突出显示了“导入高可用配置文件”。

      导入后,新的服务条目将显示在“服务”面板中,“高可用”设置为 True。

      屏幕截图显示了一个服务条目,值为 True for High Available。

使用通用数据

从 HPC Pack 2016 Update 2 开始,未加入域的计算节点可以直接从 Azure Blob 存储读取 SOA Common Data,而无需访问通常位于头节点上的 HPC 运行时共享。 这样就可以在混合 HPC Pack 群集中使用 Azure 中预配的计算资源启用 SOA 工作负荷。

  • 配置 HPC Pack 群集

    若要启用此功能,需要在 HPC 群集中配置 Azure 存储连接字符串。 在 HPC Pack 2016 群集管理器中,在配置 -> 部署到列表中找到“设置”Microsoft Azure 存储连接字符串,并填写正确的连接字符串。

    屏幕截图显示了“配置部署到”列表,其中突出显示了“设置Microsoft Azure 存储连接字符串”。

  • 更改 SOA 服务代码

    如果服务调用 ServiceContext.GetDataClient 之前获取引用 DataClient ,则无需更改代码。

    相反,如果服务显式使用 DataClient.Open,则需要在未加入域的节点上运行服务时更改对新 API 的调用。 下面是它的示例。

    // 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);
    

有关的详细信息 cluscfg ,请参阅 cluscfg 文档

若要详细了解 Azure 存储连接字符串,请参阅 配置 Azure 存储连接字符串

若要详细了解 HPC SOA Common Data,请参阅 HPC Pack SOA Tutorial IV – Common Data

HPC Pack SOA 教程