チュートリアル: Amazon EC2 での Windows HPC クラスターのセットアップ - Amazon Elastic Compute Cloud

チュートリアル: Amazon EC2 での Windows HPC クラスターのセットアップ

スケーラブルな Windows ハイパフォーマンスコンピューティング (HPC) クラスターは、Amazon EC2 インスタンスを使用して起動できます。Windows HPC クラスターには、Active Directory ドメインコントローラーと DNS サーバー、ヘッドノード、1 つまたは複数のコンピュートノードが必要です。

Amazon EC2 で Windows HPC クラスターをセットアップするには、次のタスクを実行します。

ハイパフォーマンスコンピューティングの詳細については、「AWS でのハイパフォーマンスコンピューティング (HPC)」を参照してください。

前提条件

VPC でインスタンスを起動する必要があります。デフォルト VPC を使用する、またはデフォルト以外の VPC を作成することができます。詳細については、『Amazon VPC ユーザーガイド』の「開始方法」を参照してください。

ステップ 1: セキュリティグループを作成する

Tools for Windows PowerShell を使用して、ドメインコントローラー、ドメインメンバーおよび HPC クラスター用のセキュリティグループを作成します。

セキュリティグループを作成するには
  1. New-EC2SecurityGroup cmdlet を使用して、ドメインコントローラのセキュリティグループを作成します。出力で、セキュリティグループ ID をメモしておきます。

    PS C:\> New-EC2SecurityGroup -VpcId vpc-id -GroupName "SG - Domain Controller" -Description "Active Directory Domain Controller"
  2. New-EC2SecurityGroup cmdlet を使用して、ドメインメンバーのセキュリティグループを作成します。出力で、セキュリティグループ ID をメモしておきます。

    PS C:\> New-EC2SecurityGroup -VpcId vpc-id -GroupName "SG - Domain Member" -Description "Active Directory Domain Member"
  3. New-EC2SecurityGroup cmdlet を使用して HPC クラスタのセキュリティグループを作成します。出力で、セキュリティグループ ID をメモしておきます。

    PS C:\> New-EC2SecurityGroup -VpcId vpc-id -GroupName "SG - Windows HPC Cluster" -Description "Windows HPC Cluster Nodes"
セキュリティグループにルールを追加するには
  1. 次のルールを作成して、ドメインコントローラセキュリティグループに追加します。プレースホルダのセキュリティグループ ID をドメインメンバーのセキュリティグループの ID で置き換え、プレースホルダの CIDR ブロックをネットワークの CIDR ブロックで置き換えます。

    PS C:\> $sg_dm = New-Object Amazon.EC2.Model.UserIdGroupPair PS C:\> $sg_dm.GroupId = "sg-12345678 PS C:\> $r1 = @{ IpProtocol="UDP"; FromPort="123"; ToPort="123"; UserIdGroupPairs=$sg_dm } PS C:\> $r2 = @{ IpProtocol="TCP"; FromPort="135"; ToPort="135"; UserIdGroupPairs=$sg_dm } PS C:\> $r3 = @{ IpProtocol="UDP"; FromPort="138"; ToPort="138"; UserIdGroupPairs=$sg_dm } PS C:\> $r4 = @{ IpProtocol="TCP"; FromPort="49152"; ToPort="65535"; UserIdGroupPairs=$sg_dm } PS C:\> $r5 = @{ IpProtocol="TCP"; FromPort="389"; ToPort="389"; UserIdGroupPairs=$sg_dm } PS C:\> $r6 = @{ IpProtocol="UDP"; FromPort="389"; ToPort="389"; UserIdGroupPairs=$sg_dm } PS C:\> $r7 = @{ IpProtocol="TCP"; FromPort="636"; ToPort="636"; UserIdGroupPairs=$sg_dm } PS C:\> $r8 = @{ IpProtocol="TCP"; FromPort="3268"; ToPort="3269"; UserIdGroupPairs=$sg_dm } PS C:\> $r9 = @{ IpProtocol="TCP"; FromPort="53"; ToPort="53"; UserIdGroupPairs=$sg_dm } PS C:\> $r10 = @{ IpProtocol="UDP"; FromPort="53"; ToPort="53"; UserIdGroupPairs=$sg_dm } PS C:\> $r11 = @{ IpProtocol="TCP"; FromPort="88"; ToPort="88"; UserIdGroupPairs=$sg_dm } PS C:\> $r12 = @{ IpProtocol="UDP"; FromPort="88"; ToPort="88"; UserIdGroupPairs=$sg_dm } PS C:\> $r13 = @{ IpProtocol="TCP"; FromPort="445"; ToPort="445"; UserIdGroupPairs=$sg_dm } PS C:\> $r14 = @{ IpProtocol="UDP"; FromPort="445"; ToPort="445"; UserIdGroupPairs=$sg_dm } PS C:\> $r15 = @{ IpProtocol="ICMP"; FromPort="-1"; ToPort="-1"; UserIdGroupPairs=$sg_dm } PS C:\> $r16 = @{ IpProtocol="UDP"; FromPort="53"; ToPort="53"; IpRanges="203.0.113.25/32" } PS C:\> $r17 = @{ IpProtocol="TCP"; FromPort="3389"; ToPort="3389"; IpRanges="203.0.113.25/32" }
  2. Grant-EC2SecurityGroupIngress cmdlet を使用して、ドメインコントローラ-のセキュリティグループにルールを追加します。

    PS C:\> Grant-EC2SecurityGroupIngress -GroupId sg-1a2b3c4d -IpPermission @( $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $r12, $r13, $r14, $r15, $r16, $r17 )

    これらのセキュリティグループのルールの詳細については、Microsoft の記事、「How to configure a firewall for domains and trusts (ドメインおよび信頼にファイアウォールを構成する方法)」を参照してください。

  3. 次のルールを作成して、ドメインメンバーのセキュリティグループに追加します。プレースホルダのセキュリティグループ ID をドメインコントローラのセキュリティグループ ID に置き換えます。

    PS C:\> $sg_dc = New-Object Amazon.EC2.Model.UserIdGroupPair PS C:\> $sg_dc.GroupId = "sg-1a2b3c4d PS C:\> $r1 = @{ IpProtocol="TCP"; FromPort="49152"; ToPort="65535"; UserIdGroupPairs=$sg_dc } PS C:\> $r2 = @{ IpProtocol="UDP"; FromPort="49152"; ToPort="65535"; UserIdGroupPairs=$sg_dc } PS C:\> $r3 = @{ IpProtocol="TCP"; FromPort="53"; ToPort="53"; UserIdGroupPairs=$sg_dc } PS C:\> $r4 = @{ IpProtocol="UDP"; FromPort="53"; ToPort="53"; UserIdGroupPairs=$sg_dc }
  4. Grant-EC2SecurityGroupIngress cmdlet を使用して、ドメインメンバーのセキュリティグループにルールを追加します。

    PS C:\> Grant-EC2SecurityGroupIngress -GroupId sg-12345678 -IpPermission @( $r1, $r2, $r3, $r4 )
  5. HPC クラスタのセキュリティグループに追加する次のルールを作成します。プレースホルダのセキュリティグループ ID を HPC クラスタのセキュリティグループの ID で置き換え、プレースホルダの CIDR ブロックをネットワークの CIDR ブロックで置き換えます。

    $sg_hpc = New-Object Amazon.EC2.Model.UserIdGroupPair PS C:\> $sg_hpc.GroupId = "sg-87654321 PS C:\> $r1 = @{ IpProtocol="TCP"; FromPort="80"; ToPort="80"; UserIdGroupPairs=$sg_hpc } PS C:\> $r2 = @{ IpProtocol="TCP"; FromPort="443"; ToPort="443"; UserIdGroupPairs=$sg_hpc } PS C:\> $r3 = @{ IpProtocol="TCP"; FromPort="1856"; ToPort="1856"; UserIdGroupPairs=$sg_hpc } PS C:\> $r4 = @{ IpProtocol="TCP"; FromPort="5800"; ToPort="5800"; UserIdGroupPairs=$sg_hpc } PS C:\> $r5 = @{ IpProtocol="TCP"; FromPort="5801"; ToPort="5801"; UserIdGroupPairs=$sg_hpc } PS C:\> $r6 = @{ IpProtocol="TCP"; FromPort="5969"; ToPort="5969"; UserIdGroupPairs=$sg_hpc } PS C:\> $r7 = @{ IpProtocol="TCP"; FromPort="5970"; ToPort="5970"; UserIdGroupPairs=$sg_hpc } PS C:\> $r8 = @{ IpProtocol="TCP"; FromPort="5974"; ToPort="5974"; UserIdGroupPairs=$sg_hpc } PS C:\> $r9 = @{ IpProtocol="TCP"; FromPort="5999"; ToPort="5999"; UserIdGroupPairs=$sg_hpc } PS C:\> $r10 = @{ IpProtocol="TCP"; FromPort="6729"; ToPort="6730"; UserIdGroupPairs=$sg_hpc } PS C:\> $r11 = @{ IpProtocol="TCP"; FromPort="7997"; ToPort="7997"; UserIdGroupPairs=$sg_hpc } PS C:\> $r12 = @{ IpProtocol="TCP"; FromPort="8677"; ToPort="8677"; UserIdGroupPairs=$sg_hpc } PS C:\> $r13 = @{ IpProtocol="TCP"; FromPort="9087"; ToPort="9087"; UserIdGroupPairs=$sg_hpc } PS C:\> $r14 = @{ IpProtocol="TCP"; FromPort="9090"; ToPort="9092"; UserIdGroupPairs=$sg_hpc } PS C:\> $r15 = @{ IpProtocol="TCP"; FromPort="9100"; ToPort="9163"; UserIdGroupPairs=$sg_hpc } PS C:\> $r16 = @{ IpProtocol="TCP"; FromPort="9200"; ToPort="9263"; UserIdGroupPairs=$sg_hpc } PS C:\> $r17 = @{ IpProtocol="TCP"; FromPort="9794"; ToPort="9794"; UserIdGroupPairs=$sg_hpc } PS C:\> $r18 = @{ IpProtocol="TCP"; FromPort="9892"; ToPort="9893"; UserIdGroupPairs=$sg_hpc } PS C:\> $r19 = @{ IpProtocol="UDP"; FromPort="9893"; ToPort="9893"; UserIdGroupPairs=$sg_hpc } PS C:\> $r20 = @{ IpProtocol="TCP"; FromPort="6498"; ToPort="6498"; UserIdGroupPairs=$sg_hpc } PS C:\> $r21 = @{ IpProtocol="TCP"; FromPort="7998"; ToPort="7998"; UserIdGroupPairs=$sg_hpc } PS C:\> $r22 = @{ IpProtocol="TCP"; FromPort="8050"; ToPort="8050"; UserIdGroupPairs=$sg_hpc } PS C:\> $r23 = @{ IpProtocol="TCP"; FromPort="5051"; ToPort="5051"; UserIdGroupPairs=$sg_hpc } PS C:\> $r24 = @{ IpProtocol="TCP"; FromPort="3389"; ToPort="3389"; IpRanges="203.0.113.25/32" }
  6. Grant-EC2SecurityGroupIngress cmdlet を使用して、HPC クラスタのセキュリティグループにルールを追加します。

    PS C:\> Grant-EC2SecurityGroupIngress -GroupId sg-87654321 -IpPermission @( $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $r12, $r13, $r14, $r15, $r16, $r17, $r18, $r19, $r20, $r21, $r22, $r23, $r24 )

    これらのセキュリティグループのルールの詳細については、Microsoft の記事、「HPC Cluster Networking: Windows ファイアウォールconfiguration (HPC クラスタネットワーク: Windows ファイアウォール構成)」をご覧ください。

  7. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  8. ナビゲーションペインで、[Security Groups] を選択します。3 つのセキュリティグループすべてがリストに表示されており、必要なルールがあることを確認します。

ステップ 2: Active Directory ドメインコントローラーをセットアップする

Active Directory ドメインコントローラーは、HPC 環境で認証とリソース中央管理を行うもので、インストールに必要です。Active Directory を設定するには、HPC クラスターのドメインコントローラーとして機能するインスタンスを作成し、設定します。

HPC クラスタのドメインコントローラを立ち上げるには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. コンソールダッシュボードで、[Launch Instance] を選択します。

  3. [Choose an AMI] ページで、Windows Server の AMI を選択し、[Select] を選択します。

  4. ウィザードの次のページで、インスタンスタイプを選択し、[Next: Configure Instance Details] を選択します。

  5. [Configure Instance Details] ページで、[Network] から VPC を選択し、[Subnet] からサブネットを選択します。ウィザードの次のページで、インスタンスに追加のストレージを指定できます。

  6. [Add Tags] ページで、インスタンスの Domain Controller タグの値として Name と入力し、[Next: Configure Security Group] を選択します。

  7. [Configure Security Group] ページで、[Select an existing security group] を選択し、SG - Domain Controller セキュリティグループを選択して、[Review and Launch] を選択します。

  8. [Launch] を選択します。

  9. ナビゲーションペインで [Elastic IP] を選択します。

  10. [Allocate new address] を選択します。[Allocate] を選択します。[閉じる] を選択します。

  11. 作成した Elastic IP アドレスを選択し、[Actions]、[Associate address] の順に選択します。[Instance] で、ドメインコントローラのインスタンスを選択します。[Associate] を選択します。

作成したインスタンスに接続し、そのインスタンスを HPC クラスターのドメインコントローラーとして設定します。

インスタンスをドメインコントローラーとして設定するには
  1. Domain Controller インスタンスに接続します。詳細については、「Windows インスタンスに接続する」を参照してください。

  2. [Server Manager] を開き、Active Directory ドメインサービスの役割を追加します。

  3. [Server Manager] を使用するか、または DCPromo.exe を実行して、サーバーをドメインコントローラーに昇格させます。

  4. 新しいフォレスト内に新しいドメインを作成します。

  5. 完全修飾ドメイン名 (FQDN) として hpc.local を入力します。

  6. Forest Functional Level として [Windows Server 2008 R2] を選択します。

  7. [DNS Server] オプションが選択されていることを確認し、[Next] を選択します。

  8. [はい、このコンピュータは DHCP サーバーによって自動的に割り当てられた IP アドレスを使用します (非推奨)] を選択します。

  9. プロンプトが表示されたら、[Yes] を選択して続行します。

  10. ウィザードを完了して[”Reboot on Completion”]を選択します。

  11. インスタンスに hpc.local\administrator として接続します。

  12. ドメインユーザー hpc.local\hpcuser を作成します。

ステップ 3: ヘッドノードを設定する

HPC クライアントはヘッドノードに接続します。ヘッドノードは、スケジュールされたジョブを実行できるようにします。インスタンスを作成し、HPC Pack をインストールし、クラスターを設定することで、ヘッドノードを設定します。

インスタンスを起動し、必要なユーザーアカウントを持つ hpc.local ドメインのメンバーとして設定します。

インスタンスをヘッドノードとして設定するには
  1. インスタンスを起動し、HPC-Head という名前を付けます。インスタンスを起動するときは、セキュリティグループ [SG - Windows HPC Cluster] および [SG - Domain Member] の両方を選択します。

  2. インスタンスに接続し、次のコマンドを使用して既存の DNS サーバーアドレスを取得します。

    IPConfig /all
  3. [HPC-Head] NIC の TCP/IPv4 プロパティを、プライマリ DNS として Domain Controller インスタンスの Elastic IP アドレスを含めるように更新し、前の手順の追加の DNS IP アドレスを指定します。

  4. hpc.local (ドメイン管理者アカウント) の認証情報を使って、コンピュータを hpc.local\administrator ドメインに参加させます。

  5. hpc.local\hpcuser をローカル管理者として追加します。証明書を求められたら、hpc.local\administrator を使用してインスタンスを再起動します。

  6. HPC-Headhpc.local\hpcuser として接続します。

HPC Pack をインストールするには
  1. hpc.local\hpcuser アカウントを使って HPC-Head インスタンスに接続します。

  2. [Server Manager] を使って、Administrators の Internet Explorer セキュリティ強化の構成 (IE ESC) をオフにします。

    1. [Server Manager] の [Security Information] で、[Configure IE ESC] を選択します。

    2. Administrators の IE ESC をオフにします。

  3. HPC-Head に HPC Pack をインストールします。

    1. HPC-HeadMicrosoft Download Center から HPC Pack を にダウンロードします。HPC-Head で Windows Server のバージョンに合った HPC Pack を選択します。

    2. フォルダにファイルを抽出し、フォルダを開いて、[setup.exe] をダブルクリックします。

    3. インストールのページで [Create a new HPC cluster by creating a head node] を選択し、[Next] を選択します。

    4. デフォルト設定のままですべてのデータベースをヘッドノードにインストールし、[Next] を選択します。

    5. ウィザードを終了します。

HPC クラスターにヘッドノードを設定するには
  1. [HPC Cluster Manager] を開始します。

  2. [”Deployment To-Do List”]内で、[”Configure your network”]を選択します。

    1. ウィザードでデフォルトオプション (5) を選択し、[”Next”]を選択します。

    2. すべての画面でデフォルト値を受け入れ、サーバーの更新方法とカスタマーフィードバックへの参加方法を選択して、ウィザードを終了します。

    3. [Configure] を選択します。

  3. [Provide Network Credentials] を選択し、hpc.local\hpcuser 認証情報を提供します。

  4. [Configure the naming of new nodes] を選択し、[OK] を選択します。

  5. [Create a node template]を選択します。

    1. [Compute node template] を選択し、[Next] を選択します。

    2. [Without operating system] を選択し、デフォルト設定のまま続行します。

    3. [作成] を選択します。

ステップ 4: コンピュートノードをセットアップする

インスタンスを作成し、HPC Pack をインストールし、クラスターにノードを追加することで、コンピュートノードを設定します。

まずインスタンスを作成し、必要なユーザーアカウントを持つ hpc.local ドメインのメンバーとして設定します。

コンピュートノード用のインスタンスを設定するには
  1. インスタンスを起動し、HPC-Compute という名前を付けます。インスタンスを起動するときは、セキュリティグループ [SG - Windows HPC Cluster] および [SG - Domain Member] を選択します。

  2. インスタンスにログインし、次のコマンドを使用して、HPC-Compute から既存の DNS サーバーアドレスを取得します。

    IPConfig /all
  3. HPC-Compute NIC の TCP/IPv4 プロパティを、プライマリ DNS として Domain Controller インスタンスの Elastic IP アドレスが含まれるように更新します。前の手順から追加 DNS IP アドレスを指定します。

  4. hpc.local (ドメイン管理者アカウント) の認証情報を使って、コンピュータを hpc.local\administrator ドメインに参加させます。

  5. hpc.local\hpcuser をローカル管理者として追加します。認証情報を求められたら、hpc.local\administrator を指定し、再起動します。

  6. HPC-Computehpc.local\hpcuser として接続します。

コンピュートノードに HPC Pack をインストールするには
  1. HPC-Compute アカウントを使って hpc.local\hpcuser インスタンスに接続します。

  2. [Server Manager] を使って、Administrators の Internet Explorer セキュリティ強化の構成 (IE ESC) をオフにします。

    1. [Server Manager] の [Security Information] で、[Configure IE ESC] を選択します。

    2. Administrators の IE ESC をオフにします。

  3. HPC-Compute に HPC Pack をインストールします。

    1. HPC-ComputeMicrosoft Download Center から HPC Pack を にダウンロードします。HPC-Compute で Windows Server のバージョンに合った HPC Pack を選択します。

    2. フォルダにファイルを抽出し、フォルダを開いて、[setup.exe] をダブルクリックします。

    3. [Installation] ページで、[Join an existing HPC cluster by creating a new compute node] を選択し、[Next] を選択します。

    4. HPC-Head インスタンスの完全修飾名を指定し、デフォルトを選択します。

    5. ウィザードを終了します。

クラスター設定を完了するために、ヘッドノードから、コンピュートノードをクラスターに追加します。

クラスターにコンピュートノードを追加するには
  1. HPC-Head インスタンスに hpc.local\hpcuser として接続します。

  2. [HPC Cluster Manager] を開きます。

  3. [Node Management] を選択します。

  4. [Unapproved] バケット内にコンピュートノードが表示されたら、リストされているノードを右クリックして [Add Node] を選択します。

    1. [Add compute nodes or broker nodes that have already been configured] (すでに構成されているコンピュートノードまたはブローカーノードを追加する) を選択します。

    2. ノードの横にあるチェックボックスを選択して、[Add] を選択します。

  5. ノードを右クリックして [Bring Online] を選択します。

ステップ 5: HPC コンピュートノードを拡張する (オプション)

コンピュートノードをスケーリングするには
  1. HPC-Compute インスタンスに hpc.local\hpcuser として接続します。

  2. HP Pack インストールパッケージからローカルにダウンロードしたファイルをすべて削除します (すでにセットアップを実行してイメージ上にこれらのファイルが作成されているため、AMI 用にクローンを保持する必要はありません)。

  3. [C:\Program Files\Amazon\Ec2ConfigService] で、[sysprep2008.xml] のファイルを開きます。

  4. <settings pass="specialize"> の下部に、次のセクションを追加します。必ず、環境に合わせて hpc.localpasswordhpcuser を置き換えてください。

    <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Identification> <UnsecureJoin>false</UnsecureJoin> <Credentials> <Domain>hpc.local</Domain> <Password>password</Password> <Username>hpcuser</Username> </Credentials> <JoinDomain>hpc.local</JoinDomain> </Identification> </component>
  5. sysprep2008.xml を保存します。

  6. [スタート]、[すべてのプログラム]、[EC2ConfigService Settings] の順に選択します。

    1. [General] タブを選択し、[Set Computer Name] チェックボックスをオフにします。

    2. [Bundle] タブを選択し、[Run Sysprep and Shutdown Now] を選択します。

  7. Amazon EC2 コンソールを開きます。

  8. ナビゲーションペインで、[インスタンス] を選択します。

  9. インスタンスのステータスが [Stopped] になるまで待ちます。

  10. インスタンスを選択し、[Actions]、[Image and templates]、[Create image] の順に選択します。

  11. イメージ名とイメージの説明を入力し、[Create image] を選択すると、インスタンスから AMI が作成されます。

  12. シャットダウンされた元の [HPC-Compute] インスタンスを開始します。

  13. hpc.local\hpcuser アカウントを使ってヘッドノードに接続します。

  14. [HPC Cluster Manager] から、エラー状態で表示されるようになった古いノードを削除します。

  15. Amazon EC2 コンソールのナビゲーションペインで、[AMI] を選択します。

  16. 作成した AMI を使ってクラスターに追加のノードを作成します。

作成した AMI から追加のコンピュートノードを起動できます。これらのノードは自動的にドメインに追加されますが、クラスターへの追加は手動で行う必要があります。ヘッドノードを使って [HPC Cluster Manager] から設定済みノードとして追加した後、オンラインにします。