다른 날 우리는 응용 프로그램로드 밸런서 뒤에있는 인스턴스 중 하나가 인스턴스 상태 확인 및 시스템 검사에 실패하는 문제에 직면했습니다. ELB가이를 감지하고 인스턴스를 "건강에 좋지 않은"것으로 표시하는 데는 약 10 초 (우리가 얻을 수있는 최소)가 걸렸지 만 ELB가 유해한 인스턴스로 트래픽을 라우팅하는 동안 10 초 동안 트래픽이 손실되었습니다. 문자 그대로 다운 타임을 피할 수있는 솔루션이 있습니까 아니면 너무 비현실적입니까?AWS ELB의 가동 중단 시간을 사용자 정의/설계
1
A
답변
0
이 답변을 듣고 싶지는 않겠지 만 시스템에서 트래픽 손실을 최소화하려면 10 초를 허용 할 수없는 경우 자체 건강 진단 /로드 균형 조정 솔루션을 구현해야합니다. 우리 조직에는 패킷 손실이 용납 될 수없는 시스템이 있으며 이는 우리가해야 할 일입니다.
이 솔루션은 두 가지입니다.
- 사용자 고유의로드 균형 조정 인프라를 구현해야합니다. 각 서버에 동일한 가중치를 가진 Route53 가중치 레코드 세트 (TTL 1)를 사용하기로 결정했습니다.
- 상태 확인 전용 인로드 균형 조정 된 EC2 인스턴스 당 ECS 컨테이너 인스턴스를 시작합니다. DNS 및 IP 상태 검사 (Python에서 요청 라이브러리)를 실행하고 Route53 가중치 기록을 실시간으로 추가/제거합니다 (문제가있는 경우). 우리의 테스트에서
은, 그러나, 우리는 발견 그 Route53에서 업스트림 DNS 서버는 백업 오는 DNS 레코드들은 "블랙리스트"해당 레코드 (FQDN + IP 콤보) 제거시 일초 TTL을 존중하면서 다시 최대 10 분 동안 (우리는 1m-10m에서 분해능의 분산을 얻음). 따라서 신속하게 장애 조치를 수행 할 수는 있지만 기록을 다시 추가하는 데는 최대 10 분이 소요될 것입니다.
AWS에서 상태 확인에서 설정할 수있는 최소 시간은 10 초입니다. AWS Support에 따르면 이보다 더 심하다. – vishwa0077