AWS 공식 문서를 통하여 AWS Region 및 Availability Zone에 대해서 알아보고, 이 정보를 바탕으로 AWS Elastic Balancer에 대해 이해해본다.
Amazon EC2는 세계 각지의 여러 곳에서 호스팅 되고 있습니다. 이 위치는 다음으로 구성됩니다.
- Region
- Availability Zone
- Local Zones (여기서 다루지 않음)
- AWS Outposts (여기서 다루지 않음)
- Wavelength Zone (여기서 다루지 않음)
AWS Region
각 Region은 개별 지리 영역입니다.
각 Amazon EC2 Region은 다른 Amazon Region에서 격리되도록 설계되었습니다. 이를 통해 가장 강력한 내결함성 및 안전성을 달성할 수 있습니다.
리소스를 볼 때, 지정한 Region에 연결된 리소스만 표시됩니다. Region은 서로 격리되어 있고, 여러 Region에 리소스가 자동으로 복제되지 않기 때문입니다.
코드 | 이름 | 옵트인 상태 |
---|
us-east-1 | US East (버지니아) | 불필요 |
us-east-2 | US East (오하이오) | 불필요 |
Availability Zone
Availability Zone은 각 Region 내에 있는 여러 격리된 위치 입니다.
각 Region은 Availablility Zone이라고 알려진 격리된 위치를 여러 개 가지고 있습니다.
가용 영역의 코드는 Region 코드와 문자 식별자를 조합한 것입니다.
예시 ) us-east-1a
인스턴스를 시작할 때 Region과 VPC(Virtual Private Cloud)를 선택한 다음 Availabilit Zone 중 하나에서 직접 서브넷을 선택하거나 자동으로 서브넷이 선택되게 할 수 있습니다.
다음 다이어그램은 AWS Region의 여러 Availability Zone을 보여줍니다.
- Availability Zone A는 하나의 서브넷이 있습니다. 서브넷에는 Instance가 있습니다.
- Availability Zone B는 하나의 서브넷이 있습니다. 서브넷에는 Instance가 있습니다.
- Availability Zone C는 서브넷이 없습니다. 이 Availability Zone으로는 Instance를 시작할 수 없습니다.
AZ ID (Availability Zone ID)
Region의 Availability Zone에 걸쳐 리소스가 배포될 수 있도록, 각 AWS 계정의 코드에 Availability Zone을 독립적으로 매핑합니다.
예를 들어, us-east-1a
계정의 AWS 가용 영역은 다른 us-east-1a
계정에 대한 AWS와 물리적 위치가 동일하지 않을 수 있습니다.
다를 수 있는 이 계정의 Availability Zone을 조정하려면, 이 Availability Zone에 대한 고유하고 일관된 식별자인 AZ ID를 사용해야 합니다.
예를 들어, use1-az1
은 us-east-1
Region의 AZ ID이고, 모든 AWS 계정에서 물리적 위치가 동일합니다.
따라서, 계정의 AZ ID를 보고 다른 계정의 리소스와 관련된 리소스의 물리적 위치를 확인할 수 있습니다.
다음 그림은 Availability Zone 코드를 AZ ID에 매핑하는 서로 다른 2개의 계정을 보여 줍니다.
-
Region은 동일(us-east-1
)하지만, 접근하는 Availability Zone의 문자 식별자는 다릅니다.
Account 1
의 경우 us-east-1a
이지만, Account 2
의 경우 us-east-1c
입니다.
-
use1-az1
이라는 AZ ID를 사용함으로서, Account 1
과 Account 2
는 같은 Availability Zone을 지칭할 수 있습니다.
Elastic Load Balancer
다음 문서를 통해 Elastic Load Balancing에 대해 이해한다.
Elastic Load Balancing은 하나 혹은 그 이상의 Availability Zone들에 있는 다음과 같은 여러 Target
- EC2
- Container
- IP 주소
을 통하는 트래픽을 자동적으로 분배해줍니다.
이것은 등록된 Target들의 상태를 감시해주며, Healthy한 Target에게만 트래픽을 라우팅 해 줍니다.
Elastic Load Balancing은 당신의 Load Balancer 용량을 들어오는 트래픽의 변화에 응답하여 자동적으로 스케일링 해줍니다.
Elastic Load Balancing은 다음과 같은 Load Balancer들을 지원합니다.
- Application Load Balancers
- Network Load Balancers
- Gateway Load Balancers
- Classic Load Balancers
How Elastic Load Balancing works
- LoadBalancer는 Client에서 들어오는 트래픽을 수락하고, 하나 이상의 가용 영역에 있는 등록된 Target(ex : EC2 Instance)로 요청을 라우팅 합니다.
- 또한 Load Balancer는 등록된 Target을 Health Check하고, Healthy한 Target 에게만 트래픽을 라우팅 합니다.
- Load Balancer는 UnHealthy한 Target을 감지하면, 해당 Target으로의 트래픽 라우팅을 중지합니다. 그런 다음 대상이 다시 정상임을 감지하면 해당 Target으로 트래픽 라우팅을 재개합니다.
Elastic Load Balancer - Availability Zone
- Load Balancer에 대해 Availability Zone을 활성화하면 Elastic Load Balancing은 Availability Zone에 Load Balancer Node를 생성합니다.
- Availability Zone에 Target을 등록해도 Availability Zone을 Activate하지 않으면 이러한 등록된 Target은 트래픽을 수신하지 않습니다.
Load Balancer는 Activate된 각 Availability Zone에 하나 이상의 Target이 등록되어 있는지 확인할 때 가장 효과적입니다.
- 모든 Load Balancer에 대해 여러 Availability Zone을 Activate하는 것이 좋습니다. 하지만 Application Load Balacner를 사용하는 경우 최소 2개 이상의 Availability Zone을 Activate해야 합니다. 이 구성은 Load Balancer가 트래픽을 계속 라우팅할 수 있도록 합니다.
한 Availability Zone을 사용할 수 없게 되거나 Healthy한 Target이 없는 경우, Load Balancer는 다른 Availability Zone의 Healthy한 Target으로 트래픽을 라우팅 할 수 있습니다.
- Availability Zone을 Deactivate한 후에도 해당 Availability Zone의 Target은 Load Balancer에 등록된 상태로 유지됩니다. 그러나 등록된 상태로 유지되더라도 Load Balancer는 트래픽을 라우팅하지 않습니다.
Elastic Load Balancer - Cross Zone
- Load Balancer의 Node는 Client의 요청을 등록된 Target으로 분산합니다.
- Cross Zone Load Balancing이 Activate되면 각 Load Balancer Node는 활성화 된 모든 Availability Zone의 등록된 Target에 트래픽을 분산합니다.
- Cross Zone Load Balancing이 Deactivate 되면 각 Load Balancer Node는 Availability Zone에 등록된 Target에만 트래픽을 분산합니다.
- 상기 다이어그램은 Round-Robin이 기본 라우팅 알고리즘인 Cross Zone Load Balancing의 효과를 보여줍니다. 2개의 Activate된 Availability Zone이 있으며, Availability Zone A에 2개의 Target과 Availability Zone B에 8개의 Target이 있습니다.
- Client는 요청을 보내고 Amazon Route 53 (DNS 서비스)은 Load Balancer Node 중 하나의 IP 주소를 사용하여 각 요청에 응답합니다.
- Round-Robin Routing Algorithm을 기반으로 각 Load Balancer Node가 Client로부터 트래픽의 50%를 수신하도록 트래픽이 분산됩니다.
- 각 Load Balancer Node는 해당 범위의 등록된 대상에 트래픽 공유를 분산합니다.
- 상기 다이어그램은 Cross Zone Load Balancing이 Deactivated 된 경우입니다,
- Availability Zone A의 2개 대상 각각은 트래픽의 25%를 수신합니다.
- Availability Zone B의 8개 대상 각각은 트래픽의 6.25%를 수신합니다.
- 이는 각 Load Balancer Node가 Client 트래픽의 50%를 Availability Zone의 Target에만 라우팅 할 수 있기 때문입니다.