Connection Draining

1 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

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
  • 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?