Elastic Load Balancer (ELB) trong AWS là gì?

2 min read

Elastic Load Balancer

Khái niệm về Scalability

VerticalHorizontal
– số lượng thực thể vẫn giữ nguyên, chỉ tăng chất lượng của các thực thể
VD: đang dùng một con EC2 t2.micro thì tăng lên thành t2.xlarge
  • khá nhiều services đang hỗ trợ tự động scale theo chiều dọc | – giữ nguyên chất lượng của các thực thể, tăng số lượng lên để đáp ứng đủ nhu cầu VD: đang có 3 con EC2 t2.large để handle các tasks ⇒ tăng thêm 2 con nữa thành 5 con EC2 t2.large |

Khái niệm về Availibility

  • Thường đi kèm với scalability
  • Để ngăn chặn việc mất dữ liệu, service bị gián đoạn ⇒ chạy hệ thống ở nhiều data centers (2 AZs trở lên – multi-AZ)

Load balancing

  • Điều hướng traffics tới các servers con
  • giúp cho chạy ổn định, hiệu năng tốt, tăng khả năng chịu lỗi (1 con server bị lỗi/quá tải thì toàn bộ traffics sẽ được forward tới các servers khác)
  • hoạt động như 1 middleware, giúp thực hiện thêm một số chức năng khác

Elastic Load Balancer

  • Dễ setup – AWS hỗ trợ từ A đến Z
  • Tương thích với rất nhiều services:
  • EC2, EC2 Auto Scaling Groups, Amazon ECS, AWS lamdas
  • ACM, Cloudwatch (dùng để setup healthcheck)
  • Route 53, AWS WAF, AWS Global Accelerator
  • Có 4 loại load balancer trong AWS
    • Classic (deprecated)
    • Application
    • Network
    • Gateway
  • Để control traffics (security) trong load balancer ⇒ sử dụng security group

Application load balancer

  • Xử lý các request ở tầng HTTP/HTTPS
  • Handle một số lượng nhỏ requests với độ trễ tương đối cao
  • Có thể route traffics tới các target group
  • Hỗ trợ WebSocket, redirect (proxy)
  • Target groups:
    • Chứa tập hợp các thực thể xử lý các request:
      • EC2 instances – quản lý bởi auto scaling groupECS tasksLambda functionsIP addresses – private IPs
      Một ALB có thể link tới nhiều target groupsCác target groups tự động scale dựa theo health check (có thể là một hoặc một số metrics gì đó như CPU utility, RAM utility, ….)
  • Có thể routing bằng parameters
  • Sử dụng X-forward-For để cho server thấy được IP của clients

Network Load Balancer

  • Xử lý số lượng request rất lớn – hàng triệu requests mỗi giây
  • Độ trễ thấp
  • Xử lý các request ở tầng TCP/UDP
  • Dễ kết hợp với Elastic IP
  • Target groups của NLB có thể là:
    • EC2 instances
    • IP addresses
    • Các ALB
  • Có hỗ trợ Health Check

Gateway Load Balancer

  • Xử lý các request ở tầng mạng
  • Deploy, scale các app ở bên thứ 3
  • Các target groups có thể là:
    • EC2 instances
    • IP addresses

Một số khái niệm khác

  • SSL/TLS: ALB và NLB đều hỗ trợ
  • Connection Draining/Deregistration Delay: khoảng time để xử lý nốt các request đang được xử lý trước khi bị de-register (traffics sẽ được chuyển sang các instance khác)

Auto Scaling Group

  • Tự động scale in/out các thực thể (EC2) để có thể tải được số lượng requests
  • Các thông số cơ bản: min, desired, max
  • Sử dụng health check hoặc cloud watch alarm để scale in/out
  • Hỗ trợ scaling policy
  • Scaling cooldown, instance refresh

Các thông tin khác

  • Sử dụng ALB access log để log thông tin các request (headers, response, độ trễ , IP khách, ….)

Tài liệu tham khảo

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *