Outlier Detection

Outlier Detection은 비정상적으로 동작하는 서비스 인스턴스를 자동으로 감지하고 트래픽 풀에서 제외하는 Circuit Breaker 패턴의 한 형태입니다.

목차

개요

Outlier Detection은 다음과 같은 상황에서 자동으로 인스턴스를 제외합니다:

spinner

주요 기능

  1. 자동 감지: 에러율, 지연시간, 응답 실패를 자동으로 모니터링

  2. 자동 제외: 임계값 초과 시 자동으로 트래픽 제외

  3. 자동 복구: 일정 시간 후 자동으로 복구 시도

작동 원리

Outlier Detection 프로세스

spinner

감지 방식

방식
설명
사용 시나리오

연속 에러

연속된 5xx 에러 감지

애플리케이션 크래시

게이트웨이 에러

502, 503, 504 에러 감지

서비스 과부하

연결 실패

TCP 연결 실패 감지

네트워크 문제

지연시간

응답 시간 임계값 초과

성능 저하

기본 설정

연속 에러 기반 감지

주요 파라미터 설명

consecutiveErrors

  • 설명: 연속된 에러 발생 횟수 임계값

  • 기본값: 5

  • 권장값: 3-10 (서비스 특성에 따라)

interval

  • 설명: Outlier Detection 분석 주기

  • 기본값: 10s

  • 권장값: 10s-60s

baseEjectionTime

  • 설명: 인스턴스가 제외되는 최소 시간

  • 기본값: 30s

  • 권장값: 30s-300s

maxEjectionPercent

  • 설명: 동시에 제외할 수 있는 인스턴스의 최대 비율

  • 기본값: 10%

  • 권장값: 10%-50%

고급 설정

게이트웨이 에러 기반 감지

Split Brain 방지

중요: minHealthPercentmaxEjectionPercent를 함께 사용하여 모든 인스턴스가 제외되는 것을 방지합니다.

연결 실패 기반 감지

성공률 기반 감지 (고급)

외부 서비스 보호 (ServiceEntry)

외부 API나 레거시 시스템을 ServiceEntry로 등록하고 Outlier Detection을 적용하여 장애 전파를 방지합니다.

외부 API 보호 아키텍처

spinner

예제 1: 단일 외부 API (DNS 기반)

사용 예제:

예제 2: 다중 외부 API 엔드포인트

예제 3: 레거시 데이터베이스 보호

예제 4: 외부 API with Retry

예제 5: 외부 서비스 with Rate Limiting

외부 서비스 Outlier Detection 모범 사례

1. 에러 유형 구분

중요: splitExternalLocalOriginErrors: true를 설정하면:

  • Local Origin Failures: 연결 타임아웃, DNS 실패, 연결 거부

  • Upstream Failures: 외부 API가 반환한 5xx 에러

이 둘을 별도로 카운트하여 더 정확한 감지가 가능합니다.

2. Timeout 설정

3. 외부 서비스 모니터링

4. 알림 설정

5. 문제 해결

외부 서비스 장애 시나리오

시나리오 1: 외부 API 일시적 장애

결과:

  1. 외부 API가 502/503 에러 반환

  2. 2회 연속 에러 발생 시 즉시 제외

  3. 30초 후 자동으로 복구 시도

  4. 복구 실패 시 다시 30초 제외 (지수 백오프)

시나리오 2: 외부 API 완전 다운

결과:

  1. Primary 엔드포인트 다운 → 제외

  2. 트래픽이 자동으로 Secondary로 이동

  3. Secondary도 실패 시 Tertiary로 이동

  4. Primary가 60초 후 복구되면 자동으로 재포함

실전 예제

예제 1: 마이크로서비스 체인

예제 2: Canary 배포와 함께 사용

예제 3: 다중 리전 배포

예제 4: Connection Pool + Outlier Detection

모니터링

Prometheus 메트릭

Grafana 대시보드 예제

실시간 모니터링

Kiali에서 확인

문제 해결

Outlier Detection이 작동하지 않음

너무 많은 인스턴스가 제외됨

Split Brain (모든 인스턴스 제외)

제외 후 복구가 너무 느림

임시 에러로 인한 오탐

모범 사례

1. 서비스 유형별 설정

2. Connection Pool과 함께 사용

3. 최소 헬스 비율 설정

4. 단계적 롤아웃

5. 모니터링 및 알림

참고 자료

마지막 업데이트