AWS ALB의 타겟 그룹 등록 취소 지연이 정말 지연되는가?

3975 단어 ALBECSAWS
좋은 아침. 갈거야.

오늘은 제목대로 AWS Application Load Balancer(이후 ALB)의 타겟 그룹 등록 해제 지연의 거동을 조사해 보았습니다.

원래 조사하려고 했던 계기는 현재 ECS(Fargate)를 사용하고 있고, 배포 도구에 ecs-deploy 를 사용하고 있고, 이 배포 시간을 짧게 하려고 했기 때문입니다.

ecs-deploy는 여기


우선, 배포(롤링 업데이트)시의 ALB는 무엇을 하고 있는지, 정리했습니다.

ECS (Fargate) 롤링 업데이트에서 ALB 거동



어쩌면 새 인스턴스를 세우고 ALB를 사용하여 인스턴스가 서면 새 인스턴스에 패킷을 흘리자! 라는 것입니다. . .

간단한 그림으로 해 보았습니다.

1. 배포 전





로드 밸런서가 Fargate 인스턴스에 패킷을 전송합니다.

2. 배포 중





배포 중. 새로운 Fargate 인스턴스가 시작되었습니다.

3. 배포 후 ①





ALB가 새 인스턴스가 서 있는지 확인하고 새 인스턴스로 패킷을 흘리기 시작합니다.

4. 배포②





더 이상 사용하지 않는 오래된 Fargate 인스턴스가 사라집니다.

이 방법으로 롤링 업데이트가 수행됩니다. 여기에 등록 해제 지연이라는 개념이 등장합니다.

등록 취소 지연이란?



AWS에는 이러한 설명이 있습니다.

대상 등록 취소 중 처리되지 않은 요청이 완료될 때까지 기다리는 시간입니다. 이 시간 동안 대상의 상태는 스트리밍됩니다.

여기서 말하는 대상(대상 그룹)은 Fargate 인스턴스입니다.
그래서, 타겟의 등록이란 어떤 인스턴스에 패킷을 흘리는지를 결정하는 것이군요.


등록된 대상에 화살표처럼 액세스가 흐릅니다.

이 설명에서 추측하기 위해 처리되지 않은 모든 요청이 완료되면 지연 시간을 기다리지 않고 등록을 취소합니까? 🤔
아니면 지연 시간이 끝날 때까지 기다렸다가 등록을 취소할까요? 🤔

또한 공식Docs 에는 이와 같이 있습니다.

Elastic Load Balancing은 등록을 취소하려는 대상에 대한 요청 전송을 중지합니다. 기본적으로 Elastic Load Balancing 등록 취소 프로세스를 완료하기 전에 300초를 기다리면 대상에 처리 중인 요청을 완료하는 데 도움이 됩니다. Elastic Load Balancing이 대기하는 시간을 변경하려면 등록 취소 지연 값을 업데이트합니다.

오. 후자일까.

만약 후자라면 지연 시간을 짧게 하면 배포 시간은 단축되어야 한다.

이번에는 작은 실험을 하고 지연 시간과 ecs-deploy 시간의 관계를 조사해 보았습니다.

실험 : 지연 시간과 ecs-deploy 시간의 관계



운영 환경


・ECS(Fargate)にRuby on Railsアプリをのせている
・ecs-deployからローリングアップデートをさせる
・アプリに30秒ごとのヘルスチェック以外のアクセスはしない

할 일



지연 시간을 30초 간격으로 0초에서 120초까지 늘려가는 실험을 실시하고, 지연 시간과 ecs-deploy로 걸리는 시간을 조사한다.

결과



표로했습니다.


지연 시간(sec)
ecs-deploy 처리 시간(sec)


0
162

30
191

60
203

90
234

120
275


고찰



대략,(ecs-deployの処理時間) = (遅延時間) + 160 [sec]
라고 볼 수 있습니까? 👀
선형으로 증가하는 것 같습니다. 과연.

배포 시간은 지연 시간에 비례하여 늘어나는 것 같습니다.

요약



배포 시간은 등록 취소 지연 시간으로 선형으로 확장됩니다.
그래서 롤링 업데이트를 하고 있는 시스템에서, 배포 시간을 짧게 하고 싶은 경우는, 이 지연 시간을 짧게 할 필요가 있을 것 같습니다.

좋은 웹페이지 즐겨찾기