Trong thế giới của dịch vụ cloud, việc đảm bảo tính sẵn sàng(High Availability) và độ tin cậy(reliability) của ứng dụng là một ưu tiên hàng đầu. Elastic Load Balancing (ELB) là một trong những dịch vụ quan trọng của Amazon Web Services (AWS) được thiết kế để giải quyết vấn đề này một cách hiệu quả. ELB là một dịch vụ quản lý tải và phân phối lưu lượng truy cập đến các ứng dụng và máy chủ trong môi trường đám mây của bạn.

Bằng cách sử dụng ELB, bạn có thể phân phối đồng đều lưu lượng truy cập từ người dùng đến các máy chủ đằng sau nó, đồng thời đảm bảo rằng các máy chủ đó hoạt động hiệu quả và không quá tải. Điều này giúp cải thiện hiệu suất, độ tin cậy và khả năng mở rộng của ứng dụng của bạn mà không cần phải lo lắng về việc quản lý tải trọng.

Với một loạt các tính năng như tự động phát hiện và thay thế máy chủ lỗi, cân bằng tải theo cơ chế chia nhóm, và tích hợp với các dịch vụ AWS khác như Auto Scaling và AWS Certificate Manager, ELB trở thành một công cụ không thể thiếu trong việc xây dựng ứng dụng có khả năng hoạt động ổn định và linh hoạt trên AWS. Hãy cùng nhau khám phá thêm về ELB và cách nó có thể giúp tối ưu hóa ứng dụng của bạn trên nền tảng đám mây AWS.

Scalability & High Availability

Scalability (khả năng mở rộng) đề cập đến khả năng của một ứng dụng hoặc hệ thống để xử lý các tải lớn hơn bằng cách điều chỉnh và mở rộng tài nguyên để thích ứng với tình hình.

High Availability (sẵn sàng cao) liên quan đến khả năng của hệ thống để duy trì sự hoạt động liên tục và không gián đoạn.

Scalability vs. High Availability:

  • Scalability và High Availability liên kết với nhau nhưng khác nhau về mục tiêu và cách thức thực hiện.
  • Scalability nhấn mạnh vào khả năng mở rộng để xử lý các tải lớn hơn.
  • High Availability tập trung vào việc đảm bảo rằng dịch vụ luôn sẵn sàng và hoạt động một cách liên tục, ngay cả khi có sự cố xảy ra.

Có 2 loại scalability:

    • Vertical Scalability (mở rộng theo chiều dọc)
      • Vertical Scalability (mở rộng theo chiều dọc) là việc tăng cường khả năng của một máy chủ bằng cách tăng cấu hình phần cứng hoặc tài nguyên, như CPU, RAM, hoặc băng thông.
    • Horizontal Scalability (= elasticity)
      • Horizontal Scalability (mở rộng theo chiều ngang hoặc đàn hồi) là việc tăng cường khả năng của hệ thống bằng cách thêm máy chủ mới vào cụm hoặc cluster, từ đó phân phối tải trọng giữa các máy chủ một cách cân đối.
      • Điều này thường được thực hiện tự động và linh hoạt để đáp ứng với biến động của lưu lượng truy cập

Vertical Scalability

  1. Vertical Scalability (Mở rộng theo chiều dọc):

    • Vertical Scalability đề cập đến việc tăng kích thước của một instance hoặc máy chủ đơn lẻ để cải thiện hiệu suất của ứng dụng hoặc hệ thống.
    • Ví dụ, nếu ứng dụng của bạn ban đầu chạy trên một instance t2.micro, việc mở rộng theo chiều dọc có thể là chạy ứng dụng đó trên một instance t2.large, có nhiều tài nguyên hơn.
  2. Vertical Scalability cho ELB:

    • Trong ELB, vertical scalability thường không phải là ưu tiên chính, vì ELB thường được sử dụng để phân phối tải trọng giữa nhiều máy chủ hoặc instances.
    • Tuy nhiên, trong một số trường hợp, có thể thấy vertical scalability được áp dụng cho ELB khi cần thiết, chẳng hạn nếu bạn cần một instance EC2 lớn hơn để chạy ELB.
  3. Vertical Scalability cho Dịch Vụ AWS khác:

    • Trong một số dịch vụ AWS như RDS (Relational Database Service) hoặc ElastiCache, vertical scalability là một tính năng quan trọng.
    • Bằng cách tăng kích thước của instance RDS hoặc node của ElastiCache, bạn có thể cải thiện hiệu suất và khả năng chịu tải của cơ sở dữ liệu hoặc hệ thống cache.
  4. Giới Hạn của Vertical Scalability:

    • Tuy nhiên, cũng cần lưu ý rằng có giới hạn về mức độ mà bạn có thể mở rộng theo chiều dọc, thường do các giới hạn về phần cứng của instance hoặc node.
    • Mặc dù có thể tăng kích thước của instance hoặc node, nhưng sẽ có một giới hạn nào đó mà bạn không thể vượt qua do hạn chế về phần cứng.

 

Horizontal Scalability

  1. Horizontal Scalability (Mở rộng theo chiều ngang):

    • Horizontal Scalability đề cập đến việc tăng số lượng các instance hoặc hệ thống cho ứng dụng của bạn để cải thiện khả năng xử lý và chịu tải.
    • Thay vì tăng kích thước của một instance đơn lẻ, bạn tăng số lượng các instance hoạt động song song với nhau để phân phối tải trọng.
  2. Horizontal Scalability cho ELB:

    • ELB thường được sử dụng để phân phối lưu lượng truy cập giữa nhiều instance hoặc hệ thống một cách đồng đều và hiệu quả.
    • Khi lượng truy cập tăng cao, bạn có thể tăng số lượng instance EC2 hoạt động và kết nối chúng với ELB để phân phối tải trọng.
  3. Horizontal Scalability cho Dịch Vụ AWS khác:

    • Horizontal Scalability là một điều rất phổ biến trong các dịch vụ AWS như Amazon EC2, Amazon RDS, và Amazon S3.
    • Bằng cách tăng số lượng các instance EC2 hoặc node trong một cụm RDS, bạn có thể cải thiện khả năng xử lý và chịu tải của ứng dụng hoặc dịch vụ của mình.
  4. Dễ dàng thực hiện Horizontal Scalability trong Cloud:

    • Nhờ vào các dịch vụ đám mây như Amazon EC2, việc thực hiện Horizontal Scalability trở nên dễ dàng hơn bao giờ hết.
    • Bằng cách sử dụng các công cụ quản lý tự động và API linh hoạt của AWS, bạn có thể tự động triển khai và quản lý hàng trăm hoặc thậm chí hàng nghìn instance một cách hiệu quả.

High Availability

  1. High Availability và Horizontal Scaling:

    • High Availability (HA) thường đi đôi với Horizontal Scaling (mở rộng theo chiều ngang).
    • Mục tiêu của High Availability là đảm bảo rằng ứng dụng hoặc hệ thống của bạn vẫn hoạt động một cách liên tục ngay cả khi có sự cố xảy ra ở một trong các trung tâm dữ liệu (Availability Zones).
    • Horizontal Scaling, thông qua việc tăng số lượng các instance hoặc hệ thống, giúp cải thiện khả năng xử lý và chịu tải của hệ thống, đồng thời cũng tăng cường khả năng High Availability bằng cách phân tải trọng trên nhiều instance.
  2. Mục Tiêu của High Availability:

    • Mục tiêu của High Availability là tồn tại qua một sự cố xảy ra ở một trung tâm dữ liệu.
    • Bằng cách triển khai ứng dụng hoặc hệ thống trong ít nhất 2 Availability Zones (AZs), bạn đảm bảo rằng nếu một AZ gặp sự cố, hệ thống vẫn có thể tiếp tục hoạt động một cách bình thường.
  3. High Availability có thể là Passive hoặc Active:

    • High Availability có thể được thực hiện dưới dạng passive hoặc active.
    • Trong trường hợp của RDS Multi-AZ, ví dụ, High Availability được thực hiện một cách passive, với việc sao lưu dữ liệu sang một AZ khác để đảm bảo sẵn sàng khi có sự cố.
    • Trong khi đó, trong trường hợp của Horizontal Scaling, High Availability được thực hiện dưới dạng active, với việc triển khai các instance hoặc hệ thống mới để thay thế các instance hoặc hệ thống bị gián đoạn. ELB giúp phân tải trọng giữa các instance hoặc hệ thống này một cách cân bằng.

High Availability & Scalability For EC2

  1. Vertical Scaling (Mở rộng theo chiều dọc):

    • Vertical Scaling đề cập đến việc tăng kích thước của một instance EC2 để cải thiện hiệu suất của ứng dụng hoặc hệ thống.
    • Trong ví dụ của bạn, Vertical Scaling được minh họa từ việc tăng cỡ của instance từ t2.nano (0.5GB RAM, 1 vCPU) lên đến u-12tb1.metal (12.3 TB RAM, 448 vCPUs).
    • Điều này cho phép bạn điều chỉnh tài nguyên phần cứng của instance để đáp ứng với nhu cầu về hiệu suất và khả năng chịu tải của ứng dụng hoặc hệ thống.
  2. Horizontal Scaling (Mở rộng theo chiều ngang):

    • Horizontal Scaling đề cập đến việc tăng số lượng các instance EC2 hoạt động để cải thiện khả năng xử lý và chịu tải của hệ thống.
    • Điều này thường được thực hiện thông qua việc sử dụng Auto Scaling Group, trong đó AWS tự động thêm hoặc giảm số lượng các instance EC2 dựa trên các yếu tố như lưu lượng truy cập, tải CPU, hoặc các yếu tố khác.
  3. High Availability (Sẵn sàng cao):

    • High Availability đề cập đến việc đảm bảo rằng ứng dụng hoặc hệ thống của bạn vẫn hoạt động một cách liên tục ngay cả khi có sự cố xảy ra tại một Availability Zone (AZ).
    • Trong ELB, High Availability thường được đạt được bằng cách triển khai các instance cho cùng một ứng dụng hoặc hệ thống trên nhiều AZ.
    • Auto Scaling Group và Load Balancer cũng có thể được cấu hình để hoạt động trên nhiều AZ để đảm bảo rằng hệ thống của bạn vẫn có sẵn và hoạt động ngay cả khi một AZ gặp sự cố.=

What is load balancing?

  1. Load Balancing (Cân bằng tải):

    • Load Balancing là quá trình phân phối lưu lượng truy cập đến nhiều máy chủ hoặc instances (ví dụ: EC2 instances) trong hệ thống một cách cân bằng, giúp cải thiện hiệu suất, độ tin cậy và sẵn sàng của ứng dụng hoặc hệ thống.
  2. Forwarding Traffic (Chuyển tiếp lưu lượng truy cập):

    • Trong ELB, các máy chủ được gọi là "load balancers" hoặc "load balancer instances". Chúng là các máy chủ được quản lý bởi ELB và được cấu hình để nhận và phân phối lưu lượng truy cập đến các EC2 instances hoặc các tài nguyên khác trong mạng của bạn.
    • Các load balancer sẽ nhận lưu lượng truy cập từ các client và sau đó chuyển hướng nó đến các máy chủ hoặc instances được quản lý, đảm bảo rằng mỗi máy chủ hoặc instance nhận được một lượng lưu lượng truy cập cân đối.
  3. Chức năng của Load Balancer:

    • Load balancer thường sử dụng các thuật toán cân bằng tải như Round Robin hoặc Least Connections để quyết định máy chủ hoặc instance nào sẽ nhận lưu lượng tiếp theo.
    • Ngoài việc cân bằng tải, load balancer cũng thực hiện các chức năng như check health của máy chủ hoặc instance, tự động loại bỏ máy chủ hoặc instance gặp sự cố khỏi quá trình phân phối lưu lượng, và chuyển hướng lưu lượng truy cập đến các máy chủ hoặc instance khác khi cần thiết. 
  4. Mục tiêu của Load Balancing:
    • Mục tiêu của load balancing là phân phối lưu lượng truy cập một cách cân bằng và hiệu quả giữa các máy chủ hoặc instances, từ đó cải thiện hiệu suất và đảm bảo sự sẵn sàng của ứng dụng hoặc dịch vụ.

Why use a load balancer?

  1. Phân phối tải trọng qua nhiều instances:

    • Load balancer giúp phân phối lưu lượng truy cập một cách cân bằng qua nhiều máy chủ hoặc instances trong hệ thống, từ đó giảm tải cho mỗi instance và cải thiện hiệu suất tổng thể của ứng dụng hoặc dịch vụ.
  2. Tiếp cận thông qua một điểm truy cập duy nhất (DNS):

    • Bằng cách sử dụng load balancer, bạn có thể tiếp cận ứng dụng hoặc dịch vụ của mình thông qua một điểm truy cập duy nhất (DNS), giúp dễ dàng quản lý và cấu hình hệ thống.
  3. Xử lý một cách mượt mà sự cố của downstream instances:

    • Load balancer có khả năng tự động xử lý sự cố của các máy chủ hoặc downstream instances bằng cách chuyển hướng lưu lượng truy cập đến các instances khác khi cần thiết, đảm bảo rằng dịch vụ vẫn hoạt động một cách liên tục.
  4. Check heath định kỳ cho các instances:

    • Load balancer thực hiện các check health định kỳ cho các instances để đảm bảo rằng chỉ những instances hoạt động và health tốt mới nhận được lưu lượng truy cập.
  5. Cung cấp SSL termination (HTTPS):

    • Load balancer có khả năng cung cấp SSL termination cho các trang web của bạn, cho phép mã hóa kết nối giữa client và load balancer, cũng như giữa load balancer và instances.
  6. Thực hiện stickiness với cookies:

    • Load balancer có khả năng thực hiện stickiness với cookies, giúp điều hướng các yêu cầu từ cùng một client đến cùng một instance, giữ cho trạng thái của phiên là nhất quán.
  7. Sẵn sàng cao qua các zone:

    • Load balancer có thể cung cấp sẵn sàng cao (high availability) qua nhiều Availability Zones, đảm bảo rằng dịch vụ của bạn vẫn hoạt động ngay cả khi có sự cố xảy ra tại một AZ.

Why use an Elastic Load Balancer?

  1. ELB là một load balancer được quản lý:

    • ELB là một dịch vụ do AWS quản lý, điều này có nghĩa là AWS đảm bảo rằng ELB sẽ hoạt động một cách đáng tin cậy và hiệu quả.
    • AWS cung cấp các cam kết về sự sẵn sàng (availability) và hiệu suất của ELB, giúp bạn tập trung vào việc phát triển ứng dụng của mình mà không cần lo lắng về quản lý cơ sở hạ tầng.
  2. AWS lo liệu về việc nâng cấp, bảo trì và sẵn sàng cao:

    • AWS đảm nhiệm việc nâng cấp, bảo trì và đảm bảo sẵn sàng cao cho ELB, giúp giảm bớt gánh nặng quản lý hạ tầng của bạn.
    • Bạn không cần lo lắng về việc cập nhật phần mềm hoặc thực hiện các công việc bảo trì cho ELB vì AWS sẽ tự động thực hiện.
  3. Cung cấp một số lượng ít các cấu hình chỉnh

    • Mặc dù ELB cung cấp một số cấu hình cơ bản, nhưng nó giới hạn số lượng các thiết lập bạn có thể thực hiện.
    • Điều này giúp giảm bớt sự phức tạp trong việc cấu hình và quản lý ELB, đặc biệt là đối với những người không có nhiều kinh nghiệm về việc quản lý hạ tầng.
  4. Tích hợp với nhiều dịch vụ khác của AWS:

    • ELB được tích hợp chặt chẽ với nhiều dịch vụ khác của AWS, bao gồm EC2, Auto Scaling Groups, Amazon ECS, AWS Certificate Manager (ACM), CloudWatch, Route53, AWS WAF và AWS Global Accelerator.
    • Điều này giúp tạo ra một hệ thống ứng dụng linh hoạt, mạnh mẽ và có sẵn sàng cao, với khả năng tích hợp và tương thích tốt với các dịch vụ khác trong hệ sinh thái của AWS.

What is diffirent Load balancer & Elastic Load Balancer

Load Balancer và Elastic Load Balancer (ELB) đều là các công cụ được sử dụng để phân phối lưu lượng truy cập đến các máy chủ hoặc instances trong hệ thống, nhưng có một số điểm khác nhau quan trọng:

  1. Quản lý và chủ quản:

    • Load Balancer: Load balancer có thể là một phần mềm hoặc phần cứng được triển khai và quản lý hoàn toàn bởi bạn hoặc tổ chức của bạn. Bạn cần tự cấu hình, quản lý và bảo trì load balancer của mình.
    • Elastic Load Balancer (ELB): ELB là một dịch vụ do AWS quản lý, nghĩa là AWS đảm bảo rằng ELB sẽ hoạt động một cách đáng tin cậy và hiệu quả. AWS cung cấp các cam kết về sự sẵn sàng và hiệu suất của ELB, giảm bớt gánh nặng quản lý hạ tầng cho bạn.
  2. Tính linh hoạt trong cấu hình:

    • Load Balancer: Bạn có tự do tùy chỉnh và cấu hình load balancer theo nhu cầu cụ thể của bạn, bao gồm việc lựa chọn phần cứng, phần mềm, và các cấu hình cụ thể khác.
    • ELB: ELB cung cấp một số lượng ít các cấu hình chỉnh, giới hạn số lượng các thiết lập bạn có thể thực hiện. Điều này giúp giảm bớt sự phức tạp trong việc cấu hình và quản lý ELB, đặc biệt là đối với những người không có nhiều kinh nghiệm về việc quản lý hạ tầng.
  3. Tích hợp với hệ sinh thái AWS:

    • Load Balancer: Load balancer có thể được tích hợp với các dịch vụ và sản phẩm khác nhau, nhưng việc tích hợp này thường đòi hỏi nhiều công việc tùy chỉnh và cấu hình.
    • ELB: ELB được tích hợp chặt chẽ với nhiều dịch vụ khác của AWS, giúp tạo ra một hệ thống ứng dụng linh hoạt, mạnh mẽ và có sẵn sàng cao, với khả năng tích hợp và tương thích tốt với các dịch vụ khác trong hệ sinh thái của AWS.

Health Checks

Trong bối cảnh của Elastic Load Balancer (ELB) trong Amazon Web Services (AWS), dứoi đây là tầm quan trọng của Health Checks và cách chúng hoạt động như sau:

  1. Health Checks là rất quan trọng đối với Load Balancers:

    • Health Checks là một phần quan trọng của hoạt động của Load Balancers, vì chúng cho phép load balancer biết được liệu các instances mà nó chuyển tiếp lưu lượng có sẵn để phản hồi các yêu cầu hay không.
  2. Check health được thực hiện qua một cổng và một đường dẫn (/health là thông thường):

    • Trong quá trình Health Check, load balancer gửi các yêu cầu đến các instances trên một cổng và một đường dẫn cụ thể (thông thường là /health).
    • Instances được mong đợi phản hồi với một mã trạng thái HTTP 200 (OK) để chỉ ra rằng chúng đang hoạt động chính xác.
  3. Nếu phản hồi không phải là 200 (OK), thì instance được coi là không lành mạnh:

    • Nếu instances không phản hồi với mã trạng thái 200 (OK), tức là chúng không khả dụng hoặc không thể xử lý yêu cầu hiện tại.
    • Trong trường hợp này, load balancer sẽ coi instances đó là không lành mạnh (unhealthy) và ngừng chuyển tiếp lưu lượng truy cập đến chúng, giúp ngăn chặn các yêu cầu gửi đến các instances không hoạt động hoặc không ổn định.

Types of load balancer on AWS

  1. Classic Load Balancer (CLB):

    • Classic Load Balancer là một phiên bản cũ hơn của load balancer, được ra mắt vào năm 2009.
    • Nó hỗ trợ các giao thức HTTP, HTTPS, TCP và SSL (Secure TCP).
    • Mặc dù vẫn còn được sử dụng, nhưng CLB thường không được khuyến nghị cho các ứng dụng mới do có các phiên bản mới hơn với nhiều tính năng hơn.
  2. Application Load Balancer (ALB):

    • Application Load Balancer là một phiên bản mới hơn được giới thiệu vào năm 2016.
    • Nó hỗ trợ các giao thức HTTP, HTTPS và cả WebSocket.
    • ALB cung cấp nhiều tính năng cao cấp hơn so với CLB, và thường được sử dụng cho các ứng dụng web hiện đại và các kiến trúc dựa trên microservices.
  3. Network Load Balancer (NLB):

    • Network Load Balancer cũng là một phiên bản mới hơn, ra mắt vào năm 2017.
    • Nó hỗ trợ các giao thức TCP, TLS (Secure TCP) và UDP.
    • NLB thường được sử dụng cho các ứng dụng đòi hỏi hiệu suất cao và latencies thấp, như các ứng dụng truyền dữ liệu lớn và ứng dụng real-time.
  4. Gateway Load Balancer (GWLB):

    • Gateway Load Balancer là một loại mới nhất, được giới thiệu vào năm 2020.
    • Nó hoạt động ở tầng 3 (Network layer) của mô hình OSI, hoạt động dựa trên giao thức IP.
    • GWLB thường được sử dụng cho các tải trọng mạng lớn và phức tạp, như IoT, các ứng dụng IoT, và các ứng dụng mạng lưới riêng ảo (VPC).
  5. Khuyến nghị sử dụng phiên bản mới hơn:

    • Tổng quát, được khuyến nghị sử dụng các phiên bản mới hơn của load balancer vì chúng cung cấp nhiều tính năng và hiệu suất cao hơn.
    • ALB và NLB thường là lựa chọn phổ biến hơn cho các ứng dụng và tải trọng hiện đại trên AWS.

Load Balancer Security Groups

  1. Load Balancer Security Group (Nhóm bảo mật của Load Balancer):

    • Nhóm bảo mật của Load Balancer là một tập hợp các quy tắc bảo mật được áp dụng trực tiếp cho load balancer.
    • Nhóm này điều chỉnh lưu lượng truy cập vào load balancer từ bên ngoài và xác định các nguồn và đích của các yêu cầu truy cập này.
    • Bằng cách cấu hình các quy tắc trong nhóm bảo mật này, bạn có thể kiểm soát đối tượng nào được phép truy cập load balancer và dịch vụ của bạn.
  2. Application Security Group (Nhóm bảo mật của ứng dụng):

    • Nhóm bảo mật của ứng dụng là một phần của Amazon VPC (Virtual Private Cloud) và được sử dụng để kiểm soát lưu lượng truy cập vào các instances của ứng dụng.
    • Trong ngữ cảnh của ELB, bạn có thể cấu hình Application Security Group để chỉ cho phép lưu lượng truy cập từ Load Balancer tới các instances của ứng dụng.
    • Điều này giúp tăng cường bảo mật bằng cách đảm bảo rằng chỉ có Load Balancer mới được phép truy cập trực tiếp vào các instances, giữ cho các instances không thể truy cập từ bên ngoài trực tiếp mà không thông qua load balancer.

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Learning English Everyday