Elastic Beanstalk 환경 사용자 정의 메모

개요



Elastic Beanstalk 사용하고 있습니까?
응용 프로그램 배포가 매우 편리하기 때문에 추천합니다.

최근에는 Docker에도 대응하고 Immutable Infrastructure와도 궁합이 좋습니다.

이 글에서는 Docker on Elastic Beanstalk에서 만든 환경을 사용자 정의하는 방법에 대해 설명합니다.

전제


  • Elastic Beanstalk를 사용하여 응용 프로그램이 작동하는지 확인하십시오

  • AWS Elastic Beanstalk Command Line Tool이 설치되었습니다.

  • 환경 커스터마이징 ① - 자동 스케일링 등 인프라 전체 설정



    사용자 정의 방법


    .elasticbeanstalk 아래에 생성된 optionsettings.yourapp-env 파일을 수정합니다.

    구성 가능한 매개 변수는 여기에서 : 선택적 값 - AWS Elastic Beanstalk

    예: autoscaling MaxSize/MinSize 변경



    .elasticbeanstalk/optionsettings.yourapp-env
    [aws:autoscaling:asg]
    MaxSize=4
    MinSize=1
    

    예: ELB의 subnet 변경



    .elasticbeanstalk/optionsettings.yourapp-env
    [aws:ec2:vpc]
    VPCId=vpc-xxxxxxxx
    ELBScheme=public
    ELBSubnets=subnet-xxxxxxxx
    

    반영 방법


    eb update 를 실행하면 반영됩니다.
    $ eb update
    Warning. File "config" has incorrect access permission and can be accessed by other users.
    Update environment? [y/n]: y
    Updating environment "yourapp-env". This may take a few minutes.
    2014-09-30 14:31:27 INFO    Updating environment yourapp-env's configuration settings.
    2014-09-30 14:32:10 INFO    Successfully deployed new configuration to environment.
    2014-09-30 14:32:10 INFO    Environment update completed successfully.
    Update of environment "yourapp-env" has completed.
    



    환경 사용자 정의 ② - 미들웨어 설치 등 인스턴스 단위 설정



    서버에 공통적인 설정이나 미들웨어를 인스톨 하고 싶은 경우가 있을까 생각합니다.
    일부러 IMAGE를 작성하지 않아도, 설정 파일을 작성하는 것만으로 대응하는 것이 가능합니다.

    사용자 정의 방법


    .ebextensions 아래에 *.config라는 파일을 배치하여 환경을 사용자 정의합니다.
    이들은 파일 이름의 오름차순으로 실행됩니다.

    참고 : AWS Elastic Beanstalk 환경 사용자 지정 및 설정 - AWS Elastic Beanstalk

    예: swap 영역 확보



    기본적으로 t2.micro 인스턴스에는 swap 영역이 없습니다.
    곧 OOM 에러가 되어 버리므로 만들어 줍니다.

    .ebextensions/00_add_swap.config
    commands:
      01_enable_sudo:
        command: "echo Defaults:root !requiretty >> /etc/sudoers"
        test: "test ! -e /home/ec2-user/swapdone"
      02_dd:
        command: "sudo dd if=/dev/zero of=/swapfile bs=1M count=1024"
        test: "test ! -e /home/ec2-user/swapdone"
      03_mkswap:
        command: "sudo mkswap /swapfile"
        test: "test ! -e /home/ec2-user/swapdone"
      04_swapon:
        command: "sudo swapon /swapfile"
        test: "test ! -e /home/ec2-user/swapdone"
      05_swapdone:
        command: "touch /home/ec2-user/swapdone"
        test: "test ! -e /home/ec2-user/swapdone"
    

    참고 : Amazon EC2 t1.micro 인스턴스에서 swap 사용 - blog입니까?

    예: NewRelic 설치



    서버 감시를 위해 NewRelic 에이전트를 도입합니다.

    .ebextensions/01_newrelic.config
    packages:
      yum:
        newrelic-sysmond: []
      rpm:
        newrelic: http://download.newrelic.com/pub/newrelic/el5/i386/newrelic-repo-5-3.noarch.rpm
    commands:
      01_configure_new_relic:
        command: nrsysmond-config --set license_key=YOUR-LICENSE-KEY
      02_start_new_relic:
        command: /etc/init.d/newrelic-sysmond start
    
    

    예: Shellshock 지원



    2014-09-30 현재 EB의 인스턴스가 참조하는 리포지토리에는 최신 버전의 bash가 없습니다.
    수동으로 bash rpm을 추가하고 설치하십시오.

    .ebextensions/02_update_bash.config
    packages:
      yum:
        bash: []
      rpm:
        bash: http://packages.us-east-1.amazonaws.com/2014.03/updates/e10f5b547e18/x86_64/Packages/bash-4.1.2-15.19.amzn1.x86_64.rpm
    

    참고 : ElasticBeanstalk - Shellshock 지원 @ Elastic Beanstalk - Qiita

    반영 방법


    git aws.push 를 실행하면 반영됩니다.
    $ git aws.push
    Updating the AWS Elastic Beanstalk environment yknot-staging...
    Environment update initiated successfully.
    



    참고


  • AWS Elastic Beanstalk 환경 사용자 지정 및 설정 - AWS Elastic Beanstalk
  • ElasticBeanstalk - Shellshock 지원 @ Elastic Beanstalk - Qiita
  • AWS Elastic Beanstalk Command Line Tool : Sample Code & Libraries : Amazon Web Services
  • Amazon EC2 t1.micro 인스턴스에서 swap 사용 - blog입니까?
  • 좋은 웹페이지 즐겨찾기