토막숏 폼 블로그

ELB에서 모든 호스트의 상태가 unhealthy면 생기는 일

AWS ELB는 자체적인 상태 체크 규칙을 통해 호스트 머신의 상태에 따라 트래픽을 흘러보낼지 여부를 결정한다. 이 때, 모든 호스트가 unhealthy 상태라면 무슨 일이 일어날까?

당연히 트래픽을 흘러보낼 호스트가 없으니 502 bad gateway 오류가 발생할 것이라 생각했지만, 예상과는 다르게 정상적으로 요청이 처리된다.

The effect of the fail-open is to allow traffic to all targets in all enabled Availability Zones, regardless of their health status, based on the load balancing algorithm.

Fail Open

이러한 전략을 fail open 이라고 한다. 이는 얼핏 생각하면 불합리해보일 수 있지만, 실제로는 시스템 안정성을 높이는 데에 유효한 전략이다.

  1. 호스트에는 문제가 없지만 상태를 잘못 판단하고 있다면, 일단 트래픽이 흘러들어가기 때문에 요청이 정상적으로 처리된다.
  2. 반대로 실제로 모든 호스트에 문제가 있는 상황이라면, 어차피 호스트가 요청을 처 리하지 못하므로 트래픽을 라우팅하여도 결과가 동일하다.

만약 1의 상황에서 트래픽을 막았다면 해당 서비스에 의존하는 컴포넌트들이 연쇄적으로 상태 체크에 실패하여 문제가 광범위해질 것이다. 다만 정상적인 상황이 아닌 것은 맞으므로, ELB에서 제공하는 메트릭을 통해 상태 체크에 실패한 호스트가 있는지 모니터링을 해야할 필요가 있다.

참조 글

당겨서 다음 글 보기

프로필 사진

작성자

0