HealthChecks
1 Health Checks
- Route 53은 헬스 체크 기능을 통해 리소스의 상태를 모니터링하고, 자동으로 DNS 장애 조치(failover)를 설정할 수 있습니다.
1.1 헬스 체크의 주요 방식
- Amazon Route 53은 리소스의 상태를 모니터링하기 위해 다양한 헬스 체크 방식을 제공합니다.
- 주요 헬스 체크 방식은 다음과 같습니다
- 엔드포인트 모니터링 헬스 체크 (Endpoint Monitoring Health Checks)
- 계산된 헬스 체크 (Calculated Health Checks)
- CloudWatch 알람 모니터링 헬스 체크 (Health Checks Monitoring CloudWatch Alarms)
2 엔드포인트 모니터링 헬스 체크 (Endpoint Monitoring Health Checks)
- 웹 서버, 애플리케이션 서버, 또는 기타 AWS 리소스와 같은 특정 엔드포인트를 모니터링합니다.
- HTTP, HTTPS, TCP 프로토콜을 사용하여 상태를 확인합니다.
- 약 15개의 글로벌 헬스 체크 서버가 엔드포인트의 상태를 확인하며, 응답이 2xx 또는 3xx 상태 코드를 반환하면 Healthy 상태로 간주합니다.
- 전체 헬스 체크 서버 중 18% 이상이 엔드포인트를 Healthy 상태로 보고하면 해당 엔드포인트는 Healthy 상태로 간주됩니다.
- 이는 약 3개의 헬스 체크 서버가 Healthy 상태로 보고해야 함을 의미합니다.
- 기본적으로 Healthy/UnhealthyThreshold는 3으로 설정되어 있습니다.
- 이는 특정 엔드포인트가 연속적으로 3번 성공적인 응답을 반환해야 "Healthy" 상태로 간주되며, 3번 연속으로 실패하면 "Unhealthy" 상태로 간주된다는 의미입니다.
- 헬스 체크 간격은 기본 30초이며, 10초로 설정할 수 있지만, 이 경우 비용이 증가합니다.
- 헬스 체크는 public 리소스에만 적용됩니다.
- 헬스 체크 서버의 위치를 선택할 수 있습니다.
주의 사항
- 헬스 체크 서버로부터의 요청을 허용하도록 라우터 또는 방화벽을 설정해야 합니다.
- 이 설정을 통해 헬스 체크 서버가 엔드포인트에 정상적으로 접근하여 상태를 모니터링할 수 있습니다.
3 계산된 헬스 체크 (Calculated Health Checks)
- 여러 개의 개별 헬스 체크 결과를 결합하여 하나의 헬스 체크로 평가합니다.
- OR, AND, NOT 논리 연산자를 사용하여 조합할 수 있으며, 최대 256개의 하위 헬스 체크를 모니터링할 수 있습니다.
- 모든 헬스 체크가 실패하지 않도록 유지 보수 시에도 사용 가능합니다.
4 CloudWatch 알람 모니터링 헬스 체크 (Health Checks Monitoring CloudWatch Alarms)
- Amazon CloudWatch 알람을 기반으로 헬스 체크를 수행합니다.
- 예를 들어, DynamoDB의 쓰로틀링 상태나 RDS의 알람, 사용자 정의 메트릭을 모니터링합니다.
- 이 방식은 VPC 내부의 비공개 리소스나 온프레미스 리소스를 모니터링할 때 유용합니다.
- CloudWatch 메트릭과 통합되어 상태 모니터링을 더욱 세밀하게 조정할 수 있습니다.
VPC 내부의 비공개 리소스나 온프레미스 리소스 Health Checks
- Route 53의 헬스 체크 서버는 VPC 외부에 위치해 있으므로, VPC 내부의 비공개 엔드포인트나 온프레미스 리소스에 직접 접근할 수 없습니다.
- VPC 내부의 비공개 엔드포인트나 온프레미스 리소스에 대해 헬스 체크를 하려면, CloudWatch를 사용해야 합니다.
- CloudWatch 메트릭을 생성하고, 해당 메트릭에 기반한 알람을 설정한 후, 이 알람을 모니터링하는 헬스 체크를 설정하여 리소스의 상태를 간접적으로 모니터링할 수 있습니다.
5 헬스 체크와 라우팅 정책 통합
- Route 53에서 설정된 헬스 체크는 다양한 라우팅 정책과 통합하여 사용될 수 있습니다.
- 헬스 체크는 리소스의 가용성을 실시간으로 모니터링하며, 라우팅 정책은 헬스 체크의 결과를 기반으로 트래픽을 적절히 분산시킵니다.
5.1 라우팅 정책과 헬스 체크 연계
- 지연 시간 기반 라우팅 (Latency-Based Routing): 헬스 체크를 통해 각 리전의 리소스 상태를 모니터링하여, 비정상적인 리소스는 지연 시간 평가에서 제외합니다. 이로 인해 가장 낮은 지연 시간을 제공하는 건강한 리소스로 트래픽이 라우팅됩니다.
- 장애 조치 라우팅 (Failover Routing): 기본(primary) 리소스와 보조(secondary) 리소스를 설정할 때, 헬스 체크를 통해 리소스의 상태를 모니터링합니다. 기본 리소스가 실패할 경우, 자동으로 보조 리소스로 트래픽이 전환됩니다.
- 가중치 기반 라우팅 (Weighted Routing): 여러 리소스 간에 트래픽을 분산할 때, 헬스 체크를 통해 비정상적인 리소스가 제외되도록 설정할 수 있습니다. 헬스 체크를 통과한 리소스만이 트래픽을 처리하도록 보장합니다.
- 멀티 값 응답 라우팅 (Multi-Value Answer Routing): 여러 IP 주소를 반환할 때 헬스 체크를 통과한 건강한 리소스만 반환되도록 설정할 수 있습니다. 이를 통해 가용성을 높이고, 비정상적인 리소스로의 트래픽을 방지할 수 있습니다.
- 지리 위치 기반 라우팅 (Geolocation Routing): 헬스 체크를 통해 각 지리적 위치의 리소스를 모니터링합니다. 특정 지역의 리소스가 비정상일 경우, 헬스 체크를 통해 다른 가용한 리소스로 트래픽을 전환할 수 있습니다.
- 지리 근접성 라우팅 (Geoproximity Routing): 헬스 체크는 각 리소스의 상태를 평가하여 비정상적인 리소스를 제외하고, 사용자의 위치와 가장 가까운 건강한 리소스로 트래픽을 라우팅합니다. 바이어스 값을 조정하여 트래픽 분포를 제어할 수 있습니다.
5.2 헬스 체크 설정 시 고려사항
- 헬스 체크는 라우팅 정책의 정확성과 가용성 확보를 위해 중요한 역할을 합니다.
- 각 리소스에 대해 적절한 헬스 체크를 설정하여 리소스의 상태를 모니터링하고, 라우팅 정책에서 이를 참조하여 최적의 트래픽 분산을 구현해야 합니다.
- 비정상적인 상태가 지속되면, 헬스 체크는 자동으로 해당 리소스를 제외하고, 장애 조치 메커니즘이 활성화됩니다.