Connection Draining
Tổng quan
Giúp 1 EC2 instance ngừng nhận request mới, nhưng vẫn xử lý xong các request hiện tại (in-flight) trước khi:
- Bị gỡ khỏi target group
- Bị terminate (scale in)
- Bị unhealthy (fail health check)

- Tên tính năng
- Connection Draining – dùng cho CLB
- Deregistration Delay – dùng cho ALB & NLB
- Mô tả chức năng
- Trong thời gian để hoàn tất các request đang trong quá trình xử lý (“in-flight requests”) trong khi instance đang bị deregister hoặc đang ở trạng thái unhealthy
- Dừng gửi request mới tới EC2 instance đang trong quá trình deregister
- Chờ thêm 1 khoảng thời gian để xử lý các request đang xử lý dở. Giá trị này nằm trong khoảng 1 đến 3600 giây (mặc định: 300 giây)
- Nếu trước 300 giây, tất cả các request xử lý xong, các instance sẽ bị xóa khỏi danh sách backend.
- Nếu sau 300 giây, request nào chưa xử lý xong, Load Balancer (ALB/NLB/CLB) sẽ forcefully terminate connection đó.
- Có thể vô hiệu hóa bằng cách set giá trị = 0
- Nên set giá trị thấp nếu các request của bạn có thời gian xử lý ngắn
- Trong thời gian để hoàn tất các request đang trong quá trình xử lý (“in-flight requests”) trong khi instance đang bị deregister hoặc đang ở trạng thái unhealthy
- Hình minh họa
- EC2 Instance ở trạng thái DRAINING → chỉ chờ hoàn tất các kết nối hiện tại
- Load Balancer (ELB) chỉ gửi request mới tới các EC2 instance còn lại
- Khi tất cả kết nối hiện tại kết thúc hoặc hết timeout, instance sẽ bị gỡ khỏi ELB
Bạn thấy bài này thế nào?