JAWSUG HPC: AWS Batch x OpenFoam HandsOn

JAWSUG HPC 지부 제10회 학습회 AWS Batch x OpenFoam Hands-ON
https://jawsug-hpc.connpass.com/event/61919/
프로토타입: http://qiita.com/porcaro33/items/0b6cf3e2c2a0f88fc305
OpenFoam x AWS Batch Harson 환경

1. Build Infrastructure


Prerequisites

  • AWS에 먼저 로그인https://console.aws.amazon.com/
  • Oregon 영역으로 이동하여 로그인한 사용자가 EC2, S3, Batch, ECR, Cloudformation, IAM 등을 조작할 수 있는 권한이 있는지 확인하십시오.
  • Create KeyPair

  • Bastion Server에 액세스할 때 사용하는 KeyPair를 만듭니다.
  • 나중에 CloudFormation을 실행할 때 KeyName을 입력하십시오.
    AWS Console -> EC2 -> Key Pairs -> Create Key Pair -> Enter key name -> Create

  • Run CloudFormation


  • AWS에서 Docker Image 구축 환경으로 Ubuntu 서버를 설정합니다.이 손잡이는 클라우드 포메이션에 필요한 환경을 구축한다.
  • VPC
  • Subnet
  • SecurityGroup
  • Bastion EC2 (Ubuntu16.06)
  • SpotFleet Role
  • AWS Batch Role
  • Batch Job Role
  • S3 Bucket
  • Container Repo
  • Giithub에서 CloudFormation 템플릿 다운로드
    https://raw.githubusercontent.com/porcaro33/openfoam-docker/master/aws_batch_base.yml
  • CloudFormation -> Create New Stack -> Choose File -> Next
  • Enter Stack Name, Bucket Name, KeyPair Name -> Next
  • Next -> checkin at "I acknowledge that AWS CloudFormation..."-> Create
  • CloudFormiton이 종료되면 Outputs를 참조하십시오.Batch Job 설정에 대한 스크립트 정보를 편집할 수 있습니다.이 Browser Tab을 남겨 두십시오.
  • 2. Docker Build and Push


    Bastion Server

  • CloudFormation에서 만든 Ubuntu 서버에 로그인합니다.원하는 ssh client로 로그인하십시오.사용자 이름은 "ubuntu"입니다.
  • ssh -i <path_to_keypair> ubuntu@<IP_from_CF_OUTPUT>
    
  • docker-ce와awscli가 설치되었습니다.확인해봐.
  • aws --version
    docker --version
    
  • 에 필요한 스크립트 클래스가github에서 다운로드되었습니다.이것도 확인해봐야지.
  • cd /home/ubuntu/openfoam-docker
    ll
    

    docker build/push

  • Docker에서 OpenFoom을 실행하는 스크립트에서 만든 BucktName을 입력합니다.
  • sudo vi openfoam_run.sh
    
  • Bucket Name 편집이 끝나면 구성됩니다.
  • sudo docker build -t openfoam-batch:latest .
    
  • 빌딩이 끝난 후 ECR에서 push docker image.
  • Go to ECR
  • aws --region us-west-2 ecr get-login --no-include-email
    
  • 값을 반환하는 "docker login-u AWS-p..."복사, sudo 전에 붙여넣기 실행합니다.
    Login Succeeded 가 표시되면 OK 입니다.
  • * 다음에는 포크를 칩니다.push.
    sudo docker tag openfoam-batch:latest <account-id>.dkr.ecr.us-west-2.amazonaws.com/openfoam-batch:latest
    sudo docker push <account-id>.dkr.ecr.us-west-2.amazonaws.com/openfoam-batch:latest
    

    3. Create Batch Environment

  • Batch를 실행하는 데 필요한 Job Definition, ComputeEnvironment, Job Quee를 만듭니다.CloudFormation의 Outputs를 기반으로 3개의 json 파일을 편집하여 AWSCLI를 실행합니다.
  • job_definition.json

    sudo vi job_definition.json
    
  • 이미지에 ARN 대신 URI를 입력해야 하기 때문에 ECS 화면에서 URI를 복사하여 json에 붙여넣습니다.

  • compute_environment.json

    sudo vi computing_env.json
    

    job_queue.json

    sudo vi job_queue.json
    
  • 특별한 변경점은 없고 내용만 확인해 주세요.
  • create job definition, computeenmvironment, job queue의 CLI 실행각각 반환 값을 확인하고 실행하십시오.
  • aws --region us-west-2 batch register-job-definition --cli-input-json file://job_definition.json
    aws --region us-west-2 batch create-compute-environment --cli-input-json file://computing_env.json
    aws --region us-west-2 batch create-job-queue --cli-input-json file://job_queue.json
    

    5.Submit Jobs

  • OpenFoom을 실행할 수 있는 환경이 마련되었습니다.마지막으로 임무를 집행하다.AWSCLI를 사용하여 S3에 결과를 저장하는 작업을 10번 수행합니다.
  • ./submit_batch.sh
    
  • 임무를 수행한 후 Batch의 Dashboard에서 각 작업의 status가 잇따라 변화하는 것을 볼 수 있다.작업 없이 ECS Cluster의 핵심 수를 0으로 설정하면 작업에 맞춰 EC2 Instance를 시작하는 것을 볼 수 있습니다.
  • Batch Dashboard

    EC2
  • 마지막으로 S3에 파일이 저장되어 있는지 확인하십시오.
  • 6.Close this environment

  • 배치 환경을 없애려면 제작과 반대되는 순서로 없애야 한다.
  • disable/delete job queue
  • disable/delete compute environment
  • deregister job definition
  • Batch를 삭제한 경우 S3 내의 결과 파일도 삭제합니다.통이 비어 있지 않으면 CloudFormation을 제거할 때 fail이 실행됩니다.
    * delete s3 objects
  • delete container repo
  • delete cloudformation stack
  • fin!

    좋은 웹페이지 즐겨찾기