Thursday, November 21, 2024

[AWS] Scalability, High Availability và Load Balancer trong AWS

-

1. High Availability (Sẵn sàng cao).

High Availability (Sẵn sàng cao) là tính năng của một hệ thống để luôn luôn hoạt động sẵn sàng để sử dụng mà không bị gián đoạn. Nó bao gồm các biện pháp kỹ thuật để đảm bảo rằng hệ thống luôn có sẵn cho người dùng, ngay cả khi có sự cố xảy ra hoặc một phần của hệ thống gặp sự cố. High Availability thường được đảm bảo bằng cách triển khai các giải pháp khắc phục lỗi tự động, thiết lập dự phòng, cân bằng tải, và các giải pháp khác để giảm thiểu thời gian gián đoạn và đảm bảo sự liên tục hoạt động của hệ thống. Tính năng High Availability là rất quan trọng đối với các ứng dụng và hệ thống quan trọng như các hệ thống ngân hàng, dịch vụ trực tuyến, và các hệ thống kinh doanh trực tuyến khác.

2. Scalability (tính mở rộng).

Scalability là khả năng của một ứng dụng hoặc hệ thống để xử lý được tải trọng lớn hơn một cách hiệu quả và mở rộng để đáp ứng nhu cầu của người dùng. Điều này thường đòi hỏi các biện pháp kỹ thuật để cải thiện khả năng xử lý của hệ thống, bao gồm tính mở rộng theo chiều dọc (Vertical Scalability) hoặc tính mở rộng theo chiều ngang (Horizontal Scalability), để hệ thống có thể xử lý được số lượng lớn hơn các yêu cầu từ người dùng hoặc khối lượng công việc. Scalability là một tính năng quan trọng trong việc thiết kế các ứng dụng hoặc hệ thống để đảm bảo khả năng mở rộng trong tương lai và tránh tình trạng quá tải.

Có hai loại tính mở rộng: tính mở rộng theo chiều dọc (Vertical Scalability) và tính mở rộng theo chiều ngang (Horizontal Scalability).

  • Tính mở rộng theo chiều dọc (Vertical Scalability) có nghĩa là tăng khả năng xử lý của một hệ thống bằng cách tăng cấu hình của một máy chủ hoặc một thành phần của hệ thống. Ví dụ, bạn có thể thêm bộ nhớ hoặc CPU để nâng cao khả năng xử lý của máy chủ.
  • Tính mở rộng theo chiều ngang (Horizontal Scalability) có nghĩa là tăng khả năng xử lý của một hệ thống bằng cách thêm các thành phần mới vào hệ thống. Ví dụ, bạn có thể thêm một hoặc nhiều máy chủ mới vào hệ thống để tăng khả năng xử lý.

Tuy nhiên, tính mở rộng không giống với tính sẵn sàng cao. Tính sẵn sàng cao đảm bảo rằng hệ thống luôn sẵn sàng để hoạt động mà không bị gián đoạn.

Ví dụ về trung tâm dịch vụ khách hàng, nếu hệ thống không có tính mở rộng, khi có nhiều khách hàng gọi đến cùng một lúc, hệ thống sẽ bị quá tải và khách hàng sẽ gặp phải trở ngại trong việc liên lạc. Tuy nhiên, nếu hệ thống có tính mở rộng, nó có thể xử lý số lượng khách hàng lớn hơn bằng cách thích nghi với tải trọng và đáp ứng nhu cầu của khách hàng một cách hiệu quả hơn.

3. Load Balancer (Cân bằng tải).

a. Load Balancer là gì?

Load Balancer (cân bằng tải) là các máy chủ giúp chuyển tiếp lưu lượng truy cập đến nhiều máy chủ (ví dụ: các EC2 instances) phía dưới nó. Với khả năng này, các máy chủ được phân phối tải trọng đều, giảm thiểu tải cho từng máy chủ, từ đó đảm bảo ứng dụng của bạn hoạt động ổn định và hiệu quả hơn.

b. Elastic Load Balancer (ELB) là gì?

ELB là một load balancer quản lý, AWS cam kết rằng nó sẽ hoạt động và AWS sẽ chịu trách nhiệm các nâng cấp, bảo trì và khả năng sẵn sàng cao.

Ngoài ra, ELB còn tích hợp với nhiều dịch vụ / công cụ khác của AWS như Amazon EC2, Amazon ECS, AWS Certificate Manager (ACM), Cloud Watch, Route 53, AWS WAF, AWS Global Accelerator.

Mặc dù cài đặt một load balancer riêng của bạn có thể tiết kiệm chi phí, tuy nhiên nó đòi hỏi nhiều nỗ lực hơn để thiết lập và bảo trì. ELB cung cấp các cấu hình đơn giản và tùy chỉnh linh hoạt. Sử dụng ELB giúp tăng khả năng sẵn sàng cao cho ứng dụng của bạn và giảm bớt công việc của bạn về mặt quản lý.

c. Health Checks.

Kiểm tra sức khỏe (Health Checks) rất quan trọng đối với Load Balancers.

Kiểm tra sức khỏe cho phép Load Balancer kiểm tra xem các EC2 instances nó chuyển tiếp lưu lượng truy cập đến có sẵn để phản hồi các yêu cầu hay không. Kiểm tra này được thực hiện trên một cổng và một tuyến đường (thường là “/health”).

Nếu phản hồi từ máy chủ không phải là 200 (OK), thì EC2 instance sẽ được coi là không khả dụng và Load Balancer sẽ ngừng chuyển tiếp lưu lượng truy cập đến nó. Quá trình kiểm tra sức khỏe đảm bảo rằng lưu lượng truy cập chỉ được chuyển tiếp đến các EC2 instances khả dụng và giúp ứng dụng của bạn hoạt động ổn định và hiệu quả hơn.

d. Các loại Load Balancer.

Có 4 loại Load Balancer được quản lý trên AWS.

  • Classic Load Balancer (CLB) – Thế hệ cũ Hỗ trợ HTTP, HTTPS, TCP, SSL (TCP an toàn)
  • Application Load Balancer (ALB) – Thế hệ mới Hỗ trợ HTTP, HTTPS, WebSocket
  • Network Load Balancer (NLB) – Thế hệ mới Hỗ trợ TCP, TLS (TCP an toàn), UDP
  • Gateway Load Balancer (GWLB) Hoạt động ở lớp 3 (Lớp mạng) – Giao thức P GWLB là loại Load Balancer mới nhất được AWS giới thiệu năm 2020.

Nó được khuyến khích sử dụng các loại Load Balancer thế hệ mới hơn vì chúng cung cấp nhiều tính năng hơn.

Một số Load Balancer có thể được cấu hình dưới dạng ELB nội bộ (riêng tư) hoặc ELB bên ngoài (công khai).

e. Security Groups cho Load Balancer.

Security Groups cho các instance và Security Groups cho Load Balancer đều là các công cụ quan trọng để kiểm soát truy cập vào các tài nguyên trên AWS, nhưng chúng có mục đích sử dụng và phạm vi áp dụng khác nhau. Security Groups cho Load Balancer và Security Groups cho các instance trên AWS có một số điểm khác nhau:

  • Mục đích sử dụng: Security Groups cho các instance được sử dụng để kiểm soát truy cập đến các instance. Security Groups cho Load Balancer được sử dụng để kiểm soát truy cập đến Load Balancer.
  • Quy tắc: Security Groups cho các instance được sử dụng để kiểm soát truy cập đến các cổng và giao thức của instance đó. Security Groups cho Load Balancer được sử dụng để kiểm soát truy cập đến Load Balancer, không phải các instance đằng sau Load Balancer.
  • Phạm vi áp dụng: Security Groups cho các instance có thể áp dụng cho nhiều instance khác nhau. Security Groups cho Load Balancer áp dụng chỉ cho một Load Balancer cụ thể.
  • Khả năng tùy chỉnh: Security Groups cho các instance có thể được tùy chỉnh với nhiều quy tắc khác nhau. Security Groups cho Load Balancer có ít quy tắc hơn, và thường chỉ cho phép truy cập từ các nguồn đã được cấu hình trước đó, chẳng hạn như các địa chỉ IP cụ thể.

f. Các loại Load Balancer trong AWS.

AWS hiện có 4 loại Load Balancer được quản lý:

  • Classic Load Balancer: Đây là dịch vụ Load Balancer cũ nhất của AWS. Nó có thể phân phối lưu lượng truy cập đến các instance của Amazon Elastic Compute Cloud (EC2) thông qua các giao thức HTTP, HTTPS hoặc TCP.
  • Application Load Balancer: Đây là dịch vụ Load Balancer mới hơn của AWS, hỗ trợ phân phối lưu lượng truy cập cho các ứng dụng web và microservices. Nó có thể định tuyến lưu lượng truy cập dựa trên nội dung HTTP/HTTPS, địa chỉ IP của khách hàng, hoặc các thông tin khác từ yêu cầu HTTP/HTTPS.
  • Network Load Balancer: Đây là dịch vụ Load Balancer mới hơn của AWS, cung cấp phân phối lưu lượng truy cập với hiệu suất cao cho các ứng dụng ở layer 4 (TCP, UDP) và layer 7 (HTTP, HTTPS). Nó được thiết kế để xử lý lưu lượng truy cập với độ trễ thấp và có thể mở rộng tới hàng trăm nghìn kết nối trên mỗi giây.
  • Gateway Load Balancer: Đây là dịch vụ Load Balancer mới nhất của AWS, được giới thiệu vào năm 2020, cung cấp khả năng phân phối lưu lượng truy cập cho các ứng dụng của một mạng VPC (Virtual Private Cloud) hoặc một mạng VPN (Virtual Private Network). Nó hoạt động ở layer 3 (IP protocol) và hỗ trợ các giao thức khác nhau, bao gồm TCP, UDP, HTTP, HTTPS, và MQTT.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories