Skip to main content

M02.07 - Directing Traffic with Elastic Load Balancing

Spreading workloads cải thiện performance của applications bằng cách ngăn chặn bất kỳ single resource nào phải xử lý toàn bộ workload một mình. Trong bài học này, bạn sẽ học cách ELB đơn giản hóa traffic distribution và management cho AWS applications.

Chúng ta đã giải quyết vấn đề scaling với Amazon EC2 Auto Scaling. Nhưng bây giờ chúng ta có một chút vấn đề về traffic, phải không? Hãy xem tình huống.

Mục tiêu học tập

Sau khi hoàn thành bài học này, bạn sẽ có thể:

  • ✅ Mô tả thách thức của traffic distribution và scalability trong AWS environments
  • ✅ Nhận biết các lợi ích của Elastic Load Balancing (ELB) trong AWS
  • ✅ Giải thích mối quan hệ giữa Amazon EC2 Auto Scaling và ELB trong việc quản lý AWS resources
  • ✅ Mô tả các routing methods khác nhau mà ELB sử dụng

Vấn đề về Traffic Distribution

Khách hàng có ba tùy chọn cashier, nhưng có vẻ như họ đang hướng về phía tôi, vì tôi quá đáng yêu. Nhìn này, mặc dù tôi rất vui khi họ chú ý đến kiểu tóc mới của tôi, điều này đang gây ra sự phân phối không đều của khách hàng mỗi hàng.

Nhìn đằng kia. Morgan và Alan không có khách hàng và chỉ đang chụp selfie. Pfft, họ cũng nên có kiểu tóc mới. Dù sao, thay vì đó, sẽ giúp ích rất nhiều nếu chúng ta thêm một host vào coffee shop của chúng ta.

Giải pháp: Load Balancer

Host đứng ở lối vào và hướng dẫn khách hàng đến một hàng cụ thể khi họ bước vào. Họ cũng theo dõi các cashiers và đếm số lượng người trong mỗi hàng. Sử dụng thông tin real-time này, họ hướng dẫn khách hàng đến hàng ngắn nhất. Điều này giúp phân phối khách hàng đều và đảm bảo họ được phục vụ hiệu quả và nhanh chóng.

Ý tưởng tương tự áp dụng cho AWS environment của bạn khi cố gắng cân bằng traffic trên một nhóm EC2 instances. Chúng ta không muốn các EC2 instances idle, cũng không muốn các instances bị quá tải. Đây là nơi chúng ta giới thiệu khái niệm về load balancer.

Load Balancer là gì?

Một load balancer nhận requests và route chúng đến các instances. Có nhiều load balancers có sẵn hoạt động tốt trên AWS. Vì vậy, nếu bạn có một favorite flavor đã làm chính xác những gì bạn muốn, hãy tiếp tục sử dụng nó. Chỉ cần nhớ rằng bạn sẽ phải quản lý, patch, upgrade, xử lý failover và thực hiện maintenance trên nó.

Tuy nhiên, nếu bạn muốn AWS xử lý tất cả những điều đó, và bạn chỉ cần cấu hình một lần, hãy xem Elastic Load Balancing, hoặc ELB.

Elastic Load Balancing (ELB)

Elastic Load Balancing Icon

Elastic Load Balancing (ELB) được thiết kế để phân phối network traffic để cải thiện application scalability. Từ "elastic" đề cập đến khả năng scale up hoặc down dựa trên traffic, mà không thêm vào hourly costs của bạn.

ELB có thể quản lý cả internal và external traffic đến AWS. Nó cung cấp các routing strategies khác nhau để đảm bảo efficient traffic management và do đó optimal application performance.

ELB và Auto Scaling

Elastic Load Balancing (ELB) tự động phân phối incoming application traffic trên nhiều resources, chẳng hạn như EC2 instances, để tối ưu hóa performance và reliability. Một load balancer phục vụ như single point of contact cho tất cả incoming web traffic đến một Auto Scaling group. Khi số lượng EC2 instances biến động để phản ứng với traffic demands, incoming requests được hướng đến load balancer trước. Từ đó, traffic được phân phối đều trên các instances có sẵn.

Mặc dù ELB và Amazon EC2 Auto Scaling là các services riêng biệt, chúng hoạt động cùng nhau để nâng cao application performance và đảm bảo high availability. Cùng nhau, chúng cho phép applications chạy trên Amazon EC2 scale hiệu quả trong khi duy trì consistent performance.

Key Takeaways: ELB Benefits

Hãy xem xét các lợi ích chính của elastic load balancing và cách nó nâng cao performance, scalability và management của AWS environment của bạn.

1. Efficient Traffic Distribution

ELB phân phối traffic đều trên các EC2 instances, ngăn chặn quá tải trên bất kỳ single instance nào và tối ưu hóa resource utilization.

Efficient Traffic Distribution

2. Automatic Scaling

ELB scales với traffic và tự động điều chỉnh để phản ứng với thay đổi trong demand cho một operation liền mạch khi các backend instances được thêm hoặc loại bỏ.

Automatic Scaling

3. Simplified Management

ELB decouples front-end và backend tiers và giảm manual synchronization. Nó cũng xử lý maintenance, updates và failover để giảm operational overhead.

Simplified Management

Ví dụ: Decoupling Architecture với ELB

Hãy xem một ví dụ. Đối với coffee shop của chúng ta, chúng ta có một website để khách hàng đặt đồ uống. Website này có các tiers khác nhau cho functionality, như ordering tier, production tier, storage tier, và vân vân.

Hãy xem ordering tier và cách nó giao tiếp với production tier. Ngay bây giờ, mọi frontend instance đều biết về mọi backend instance. Nếu một backend instance mới spin up, thì nó cần cho mọi frontend instance biết rằng nó có thể chấp nhận traffic bây giờ.

Điều này đủ phức tạp với nửa tá instances. Hãy tưởng tượng nếu chúng ta có hàng trăm hoặc hàng nghìn instances trong mỗi tier. Giữ chúng đồng bộ sẽ là một công việc lớn.

Đó là lý do tại sao ELB ở đây để giúp đỡ. Chúng ta có thể sử dụng nó để quản lý việc liên kết các backend instances và frontend instances. Và vì nó là Regional, nó là một single URL mà mỗi frontend instance sử dụng để hướng đến các backend instances. ELB sau đó sẽ hướng traffic đến backend instance có ít outstanding requests nhất.

Nếu back-end cần scale, nó spin up một instance mới. Sau khi instance mới đó sẵn sàng, nó cho ELB biết rằng nó sẵn sàng cho traffic. Và chỉ như vậy, nó bắt đầu làm việc.

Frontend thậm chí không cần biết điều gì đang xảy ra. Tất cả được thực hiện tự động, và nó decouples kiến trúc để mỗi tier được coi là entity riêng của nó scale như nó thấy phù hợp.

Routing Methods

Để tối ưu hóa traffic distribution, ELB sử dụng một số routing methods: Round Robin, Least Connections, IP Hash, và Least Response Time. Các routing strategies này hoạt động cùng nhau cho efficient traffic management và optimal application performance.

1. Round Robin

Phân phối traffic đều trên tất cả các servers có sẵn theo cách cyclic.

Round Robin Routing Method

Round Robin routing method phân phối requests theo thứ tự tuần tự đến mỗi server trong pool. Request đầu tiên đến server 1, request thứ hai đến server 2, và cứ tiếp tục như vậy. Khi đã đến server cuối cùng, nó quay lại server đầu tiên.

2. Least Connections

Routes traffic đến server có ít active connections nhất, duy trì một balanced load.

Least Connections Routing Method

Least Connections routing method hướng traffic đến server có số lượng active connections thấp nhất tại thời điểm đó. Điều này đảm bảo rằng không có server nào bị quá tải với quá nhiều connections đồng thời.

3. IP Hash

Sử dụng IP address của client để consistently route traffic đến cùng một server.

IP Hash Routing Method

IP Hash routing method sử dụng hash của client's IP address để xác định server nào sẽ nhận request. Điều này đảm bảo rằng cùng một client luôn được route đến cùng một server, điều này có thể hữu ích cho session persistence.

4. Least Response Time

Hướng traffic đến server có response time nhanh nhất, giảm thiểu latency.

Least Response Time Routing Method

Least Response Time routing method hướng traffic đến server có response time nhanh nhất. Điều này giúp đảm bảo rằng users nhận được response nhanh nhất có thể bằng cách route requests đến server có thể xử lý chúng nhanh nhất.

Ví dụ: Elastic Load Balancing trong Healthcare

Hãy xem một ví dụ để hiểu rõ hơn về cách Elastic Load Balancing hoạt động trong cloud computing. Trong ngành healthcare, đặc biệt là trong các bệnh viện và cơ sở y tế cung cấp hệ thống đặt lịch hẹn trực tuyến hoặc patient portals, website traffic có thể thay đổi rất nhiều trong suốt ngày.

Initial Setup - Low-Demand Period

Low-demand period: Vào đầu ngày, chỉ có một vài bệnh nhân đang truy cập hệ thống để đặt lịch hẹn hoặc xem hồ sơ y tế. Các web servers hiện có đủ để xử lý traffic thấp. Điều này phù hợp với demand, không cần thêm resources tại thời điểm này.

Initial Setup - Low-Demand Period

Scaling Up - High-Demand Period

High-demand period: Khi ngày tiến triển, đặc biệt là trong giờ cao điểm, chẳng hạn như sáng sớm hoặc ngay trước cuối tuần, nhiều bệnh nhân hơn truy cập portal để đặt lịch hẹn, xem kết quả xét nghiệm hoặc liên hệ với các chuyên gia y tế. Để xử lý sự gia tăng demand này, hệ thống healthcare tự động scale up số lượng servers để giúp đảm bảo rằng hệ thống vẫn responsive và available cho tất cả users.

Scaling Up - High-Demand Period

Load Balancing

Một load balancer hướng incoming traffic đến các web servers khác nhau dựa trên current load của chúng. Ví dụ, nếu một server bắt đầu nhận quá nhiều requests, load balancer sẽ route các requests mới đến một server ít bận rộn hơn. Điều này đảm bảo rằng không có single server nào trở nên quá tải. Traffic được phân phối đều trên các EC2 instances có sẵn.

Load Balancing - Traffic Distribution

Bằng cách sử dụng Elastic Load Balancing và Auto Scaling, ngành healthcare có thể quản lý hiệu quả các mức độ traffic bệnh nhân khác nhau đến các online services. Điều này cung cấp reliable access đến medical portals ngay cả trong các giai đoạn high-demand.

Mối quan hệ giữa ELB và Auto Scaling

ELB và Auto Scaling làm việc cùng nhau để quản lý hiệu quả các mức độ demand khác nhau:

  • ELB chịu trách nhiệm phân phối incoming traffic đều trên nhiều EC2 instances. Điều này đảm bảo rằng không có single instance nào trở nên quá tải. Nó cũng phục vụ như một single-entry point cho traffic vào một Auto Scaling group, hướng requests đến các resources phù hợp.

  • Auto Scaling tự động điều chỉnh số lượng EC2 instances dựa trên demand. Nó thêm hoặc loại bỏ instances khi cần cho optimal performance và resource usage.

  • Cùng nhau, ELB và Auto Scaling giúp duy trì application reliability và cost efficiency.

Tóm tắt

Trong bài học này, bạn đã học về:

  • Vấn đề về Traffic Distribution: Sự phân phối không đều của traffic có thể dẫn đến quá tải hoặc idle resources
  • Load Balancer: Một service nhận requests và route chúng đến các instances
  • Elastic Load Balancing (ELB): AWS managed service tự động phân phối incoming application traffic
  • ELB Benefits: Efficient traffic distribution, automatic scaling, và simplified management
  • Routing Methods: Round Robin, Least Connections, IP Hash, và Least Response Time
  • Decoupling Architecture: ELB giúp decouple front-end và backend tiers
  • ELB và Auto Scaling: Hai services hoạt động cùng nhau để đảm bảo high availability và optimal performance

Test your skills

Câu hỏi 1

How does Elastic Load Balancing (ELB) improve scalability in AWS?

  • It manually adjusts the number of Amazon EC2 instances based on traffic.
  • It automatically routes traffic to instances based on various routing methods.
  • It directly increases the size of Amazon EC2 instances.
  • It creates new Amazon EC2 instances for each request.

Giải thích: ELB không manually điều chỉnh số lượng EC2 instances. Thay vào đó, Amazon EC2 Auto Scaling chịu trách nhiệm tự động điều chỉnh số lượng instances dựa trên traffic. Vai trò của ELB là phân phối traffic hiệu quả trên các instances có sẵn.

Câu hỏi 2

Which task does Elastic Load Balancing (ELB) perform?

  • Automatically adjusts the number of Amazon EC2 instances to match demand.
  • Distributes a workload across several Amazon EC2 instances.
  • Removes unneeded Amazon EC2 instances when demand is low.
  • Adds a second Amazon EC2 instance during an online store's popular sale.

Giải thích: ELB và Auto Scaling làm việc cùng nhau để quản lý hiệu quả các mức độ demand khác nhau. ELB chịu trách nhiệm phân phối incoming traffic đều trên nhiều EC2 instances. Điều này đảm bảo rằng không có single instance nào trở nên quá tải. Nó cũng phục vụ như một single-entry point cho traffic vào một Auto Scaling group, hướng requests đến các resources phù hợp.

Trong khi đó, Auto Scaling tự động điều chỉnh số lượng EC2 instances dựa trên demand. Nó thêm hoặc loại bỏ instances khi cần cho optimal performance và resource usage. Cùng nhau, ELB và Auto Scaling giúp duy trì application reliability và cost efficiency.