AWS 인프라를 운영하다 보면, EC2 인스턴스를 업데이트하거나 교체해야 하는 상황이 자주 발생합니다. 이때 인스턴스에서 처리 중인 요청이 모두 완료되기 전에 인스턴스를 종료하면, 사용자는 중단된 서비스에 직면하게 될 수 있습니다. 이를 방지하기 위해 AWS에서는 연결 드레이닝(Connection Draining) 또는 등록 취소 지연(Deregistration Delay)이라는 기능을 제공합니다.
연결 드레이닝은 CLB에서 사용되는 용어로, ALB나 NLB에서는 등록 취소 지연으로 불립니다. 이 기능은 인스턴스가 등록 취소되거나 비정상 상태로 전환될 때, 해당 인스턴스에 이미 전달된 요청들이 안전하게 완료될 수 있도록 일정 시간을 부여합니다.
인스턴스 드레이닝: EC2 인스턴스가 드레이닝 모드로 전환되면, 로드 밸런서는 이 인스턴스로 새로운 요청을 보내지 않게 됩니다. 그러나 이미 인스턴스에 연결된 기존 요청들은 완료될 때까지 대기합니다.
드레이닝 시간 설정: 연결 드레이닝 시간은 1초부터 최대 3,600초(1시간)까지 설정할 수 있으며, 기본값은 300초(5분)입니다. 이 시간을 0으로 설정하면 연결 드레이닝 기능이 비활성화됩니다.
짧은 요청 vs 긴 요청: 짧은 요청의 경우, 연결 드레이닝 시간을 짧게 설정(예: 30초)하여 인스턴스가 빠르게 드레이닝되고, 이후 필요한 작업(교체, 업데이트 등)을 진행할 수 있습니다. 반면, 긴 요청(업로드 또는 장기 지속 작업)의 경우, 드레이닝 시간을 길게 설정해 요청이 완료될 때까지 충분한 시간을 보장할 수 있습니다.
EC2 인스턴스가 세 개 운영 중인 상황을 가정해 봅시다. 이 중 하나의 인스턴스를 드레이닝 모드로 설정하면, 해당 인스턴스에 이미 연결된 사용자는 작업을 완료할 충분한 시간을 가지게 됩니다. 모든 작업이 완료되면 인스턴스의 연결이 정지되고, 새로운 요청은 다른 두 인스턴스로 분배됩니다. 이렇게 하면 서비스의 중단 없이 인스턴스를 교체하거나 유지 보수 작업을 수행할 수 있습니다.
AWS Management Console이나 AWS CLI를 사용하여 로드 밸런서의 연결 드레이닝 시간을 설정할 수 있습니다. 비즈니스 요구에 따라 적절한 값을 설정하여 EC2 인스턴스를 안전하게 관리하세요.
AWS의 연결 드레이닝 기능은 인스턴스의 유지 보수 작업을 더욱 안전하고 효율적으로 만들어주는 도구입니다. 이 기능을 통해 사용자는 서비스 중단 없이 인스턴스 교체 및 업데이트 작업을 수행할 수 있습니다. 필요에 따라 설정을 조정하여, 여러분의 애플리케이션에 최적화된 환경을 구축해 보세요.