메뉴
Amazon Elastic Compute Cloud
User Guide for Linux Instances

자습서: Amazon EC2에서 애플리케이션의 가용성 향상

단일 EC2 인스턴스에서 애플리케이션 또는 웹 사이트 실행을 시작한 후 시간이 지나면서 수요를 충족하기 위해 두 개 이상의 인스턴스가 필요한 지점까지 트래픽이 증가하는 경우를 가정해 봅니다. AMI에서 여러 EC2 인스턴스를 시작한 다음 Elastic Load Balancing을 사용하여 애플리케이션에 대한 수신 트래픽을 EC2 인스턴스 간에 분산할 수 있습니다. 이렇게 하면 애플리케이션의 가용성이 향상됩니다. 인스턴스를 여러 가용 영역에 배치하면 애플리케이션의 내결함성도 향상됩니다. 가용 영역 하나가 중단되면 트래픽이 다른 가용 영역으로 라우팅됩니다.

Auto Scaling을 사용하여 애플리케이션에 대한 실행 인스턴스 수를 항상 최소한으로 유지할 수 있습니다. Auto Scaling은 인스턴스나 애플리케이션이 비정상일 때를 감지하고 자동으로 교체하여 애플리케이션의 가용성을 유지합니다. 또한 Auto Scaling을 사용하면 지정한 기준을 사용하여 필요에 따라 자동으로 Amazon EC2 용량을 확장하거나 축소할 수 있습니다.

이 자습서에서는 Auto Scaling과 Elastic Load Balancing을 사용하여 로드 밸런서 뒤에 지정된 수의 정상 EC2 인스턴스를 유지합니다. 트래픽이 로드 밸런서로 이동한 다음 인스턴스로 라우팅되므로 이러한 인스턴스에는 퍼블릭 IP 주소가 필요 없습니다. 자세한 내용은 Auto ScalingElastic Load Balancing 단원을 참조하십시오.

 Auto Scaling 및 Elastic Load Balancing의 아키텍처

사전 조건

이 자습서에서는 다음을 이미 완료했다고 가정합니다.

  1. 기본 Virtual Private Cloud(VPC)가 없는 경우 두 개 이상의 가용 영역에서 하나의 퍼블릭 서브넷을 사용하여 VPC를 만듭니다. 자세한 내용은 Virtual Private Cloud(VPC) 생성 단원을 참조하십시오.

  2. VPC에서 인스턴스를 시작합니다.

  3. 인스턴스에 연결하여 인스턴스를 사용자 지정합니다. 예를 들어, 소프트웨어와 애플리케이션을 설치하고 데이터를 복사하고 추가 EBS 볼륨을 연결할 수 있습니다. 인스턴스에서 웹 서버를 설정하는 방법에 대한 자세한 내용은 자습서: Amazon LinuxLAMP 웹 서버 설치 단원을 참조하십시오.

  4. 인스턴스에서 애플리케이션을 테스트하여 인스턴스가 올바르게 구성되었는지 확인합니다.

  5. 인스턴스에서 사용자 지정 Amazon 머신 이미지(AMI)를 만듭니다. 자세한 내용은 Amazon EBS 지원 Linux AMI 생성 또는 인스턴스 스토어 기반 Linux AMI 생성을 참조하십시오.

  6. (선택 사항) 더 이상 필요하지 않은 경우 인스턴스를 종료합니다.

  7. 필요한 AWS에 대한 액세스를 애플리케이션에 부여하는 IAM 역할을 만듭니다. 자세한 내용은 IAM 콘솔을 사용하여 IAM 역할을 생성하려면 다음을 수행합니다. 단원을 참조하십시오.

애플리케이션 확장 및 로드 밸런싱

다음 절차를 사용하여 로드 밸런서를 만들고, 인스턴스에 대한 시작 구성을 만든 다음. 두 개 이상의 인스턴스가 포함된 Auto Scaling 그룹을 만들고. 로드 밸런서를 Auto Scaling 그룹과 연결합니다.

애플리케이션을 확장하고 로드 밸런싱하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 [LOAD BALANCING] 아래에서 [Load Balancers]를 선택합니다.

  3. [Create Load Balancer]를 선택합니다.

  4. [Application Load Balancer]에서 [Create]를 선택합니다.

  5. [Configure Load Balancer] 페이지에서 다음 작업을 수행하십시오.

    1. [Name]에 로드 밸런서 이름을 입력합니다. 예를 들면 my-lb를 입력하십시오.

    2. [Scheme]의 [internet-facing]은 기본 값으로 유지합니다.

    3. 포트 80에서 HTTP 트래픽을 수락하는 리스너를 뜻하는 [Listeners]는 기본 값으로 유지합니다.

    4. [Availability Zones]에서 인스턴스에 사용한 VPC를 선택합니다. 가용 영역을 선택한 후 해당 가용 영역의 퍼블릭 서브넷을 선택합니다. 두 번째 가용 영역에 대해 이 절차를 반복합니다.

    5. [Next: Configure Security Settings]를 선택합니다.

  6. 이 자습서의 경우 안전한 리스너를 사용하지 않고 있습니다. [Next: Configure Security Groups]를 선택합니다.

  7. [Configure Security Groups] 페이지에서 다음 작업을 수행하십시오.

    1. Create a new security group을 선택합니다.

    2. 보안 그룹의 이름과 설명을 입력하거나 기본 이름과 설명을 유지합니다. 이 새 보안 그룹에는 리스너에 구성된 포트로 보내는 트래픽을 허용하는 규칙이 포함되어 있습니다.

    3. [Next: Configure Routing]을 선택합니다.

  8. [Configure Routing] 페이지에서 다음을 수행합니다.

    1. [Target group]에서는 기본 값인 [New target group]을 유지합니다.

    2. [Name]에 대상 그룹의 이름을 입력합니다.

    3. [Protocol]을 HTTP로, [Port]를 80으로, [Target type]을 인스턴스로 유지합니다.

    4. [Health checks]의 기본 프로토콜과 경로를 유지합니다.

    5. [Next: Register Targets]를 선택합니다.

  9. Auto Scaling를 이용해 EC2 인스턴스를 대상 그룹에 추가해야 하므로 [Register Targets] 페이지에서 [Next: Review]를 선택하여 다음 페이지로 계속합니다.

  10. [Review] 페이지에서 [Create ]을 선택합니다. 로드 밸런서가 생성된 후 [Close]를 선택합니다.

  11. 탐색 창의 [AUTO SCALING]에서 [Launch Configurations]를 선택합니다.

    • Auto Scaling를 처음 사용하는 경우 시작 페이지가 표시됩니다. [Create Auto Scaling group]을 선택하여 Auto Scaling 그룹 생성 마법사를 시작한 다음 [Create launch configuration]을 선택합니다.

    • 그렇지 않으면 [Create launch configuration]을 선택합니다.

  12. [Choose AMI] 페이지에서 [My AMIs] 탭을 선택한 다음, 사전 조건에서 생성한 AMI를 선택합니다.

  13. [Choose Instance Type] 페이지에서 인스턴스 유형을 선택한 다음 [Next: Configure details]를 선택합니다.

  14. [Configure details(세부 정보 구성)] 페이지에서 다음을 수행합니다.

    1. [Name]에 시작 구성의 이름을 입력합니다(예: my-launch-config).

    2. [IAM role]에서, 사전 조건에서 만든 IAM 역할을 선택합니다.

    3. (선택 사항) 스타트업 스크립트를 실행해야 하는 경우 [Advanced Details]를 확장하고 [User data]에 스크립트를 입력합니다.

    4. [Skip to review]를 선택합니다.

  15. [Review ] 페이지에서 [Edit security groups]를 선택합니다. 기존의 보안 그룹을 선택하거나 새로 만들 수 있습니다. 이 보안 그룹은 로드 밸런서의 HTTP 트래픽과 상태 확인을 허용해야 합니다. 인스턴스에 퍼블릭 IP 주소가 있는 경우 인스턴스에 연결해야 한다면 선택적으로 SSH 트래픽을 허용할 수 있습니다. 작업을 마쳤으면 [Review]를 선택합니다.

  16. [Review] 페이지에서 [Create launch configuration]을 선택합니다.

  17. 메시지가 나타나면 기존 키 페어를 선택하거나 새 키 페어를 만들거나 키 페어 없이 진행합니다. 승인 확인란을 선택한 다음 [Create launch configuration]을 선택합니다.

  18. 시작 구성이 생성된 후에는 Auto Scaling 그룹을 만들어야 합니다.

    • Auto Scaling을 처음 사용하고 Auto Scaling 그룹 생성 마법사를 사용 중인 경우 다음 단계로 자동으로 이동합니다.

    • 그렇지 않으면 [Create an Auto Scaling group using this launch configuration]을 선택합니다.

  19. [Configure Auto Scaling group details] 페이지에서 다음 작업을 수행하십시오.

    1. [Group name]에 Auto Scaling 그룹의 이름을 입력합니다. 예를 들면 my-asg를 입력하십시오.

    2. [Group size]에 인스턴스 수를 입력합니다(예: 2). 각 가용 영역에서 인스턴스 수를 대략적으로 동일하게 유지하는 것이 좋습니다.

    3. [Network]에서 VPC를 선택하고 [Subnet]에서 2개의 퍼블릭 서브넷을 선택합니다.

    4. [Advanced Details] 아래에서 [Receive traffic from one or more load balancers]를 선택합니다. [Target Groups]에서 대상 그룹을 선택합니다.

    5. [Next: Configure scaling policies]를 선택합니다.

  20. Auto Scaling에서 그룹을 지정된 크기로 유지할 예정이므로 [Configure scaling policies] 페이지에서 [Review]를 선택합니다. 나중에 이 Auto Scaling 그룹을 수동으로 확장하거나, 일정에 따라 그룹을 확장하도록 구성하거나, 필요에 따라 그룹을 확장하도록 구성할 수 있습니다.

  21. [Review] 페이지에서 [Create Auto Scaling group]을 선택합니다.

  22. 그룹이 생성된 후 [Close]를 선택합니다.

로드 밸런서 테스트

클라이언트가 로드 밸런서에 요청을 보내면 로드 밸런서는 그 요청을 등록된 인스턴스 중 하나로 라우팅합니다.

로드 밸런서를 테스트하려면

  1. 인스턴스가 준비되었는지 확인합니다. [Auto Scaling Groups] 페이지에서 Auto Scaling 그룹을 선택한 다음 [Instances] 탭을 선택합니다. 처음에는 인스턴스가 Pending 상태로 되어 있습니다. 상태가 InService이면, 사용할 준비가 된 것입니다.

  2. 인스턴스가 로드 밸런서에 등록되어 있는지 확인합니다. [Target Groups] 페이지에서 대상 그룹을 선택한 다음 [Targets] 탭을 선택합니다. 인스턴스의 상태가 initial이면, 아직 등록 중일 수도 있습니다. 인스턴스의 상태가 healthy이면 사용할 준비가 된 것입니다. 인스턴스가 준비되면 다음과 같이 로드 밸런서를 테스트할 수 있습니다.

  3. [Load Balancers] 페이지에서 로드 밸런서를 선택합니다.

  4. [Description] 탭에서 DNS 이름을 찾습니다. 이름은 다음과 같은 형식으로 되어 있습니다.

    my-lb-xxxxxxxxxx.us-west-2.elb.amazonaws.com
  5. 웹 브라우저에서 로드 밸런서의 DNS 이름을 주소 표시줄에 붙여넣기 하고 Enter 키를 누릅니다. 웹 사이트가 표시됩니다.