LOAD BALANCER là gì ?

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Chào các bạn, mình là Phương Nghi?

Chắc hẳn các bạn khi làm việc với các hệ thống mạng, đã từng nghe tới cụm từ  LOAD BALANCER( Cân bằng tải) rồi đúng không nhỉ ? Và để hiểu rõ hơn về chức năng cũng như cách thức hoạt động của LOAD BALANCER, hãy cùng Nghi điểm qua một số khái niệm tiêu biểu trước nhé!

Định nghĩa?

LOAD BALANCER là một thành phần quan trọng của cơ sở hạ tầng mạng, và Load balancer thường được sử dụng để cải thiện hiệu suất cũng như độ tin cậy của các trang web, các ứng dụng, cơ sở dữ liệu và các dịch vụ khác trong cơ sở hạ tầng mạng bằng cách phân phối khối lượng công việc trên nhiều máy chủ để giúp máy chủ ảo hoạt động đồng bộ và hiệu quả hơn thông qua việc phân phối đồng đều tài nguyên.

Cách thức hoạt động hiệu quả?

Dưới đây là một sơ đồ đơn giản cách thức tương tác giữa User và Database Server thông qua Internet khi không có Load Balancer:

Chúng ta có thể hình dung tình huống như sau: Bạn cần truy cập vào website yourdomain.com kết nối trực tiếp , nhưng trong quá tình kết nối và tương tác, rất có thể bạn sẽ gặp truòng hợp máy chủ không kịp xử lý request, hoặc lượng truy cập quá nhiều cùng lúc gây ra hiện tượng tải chậm, hoặc thậm chí không kết nối được khi máy chủ bị quá tải. Và đây chính là lúc mà Load Balancing thể hiện vai trò của mình để tránh những tình huống trên xảy ra

Khi máy chủ down hoặc không thể xử lý, một Load Balancer sẽ được bổ sung. Người dùng  khi truy cập vào Server trước hết cần "tương tác" với load LOAD BALANCER. Sau đó, LOAD BALANCER sẽ kiểm tra tình trạng kết nối và tiếp tục chuyển đến một máy chủ khác để thực hiện Request từ User. Dù máy chủ chính bị down hoặc nghẽn mạng tạm thời thì vẫn có thể yên tâm rằng tất cả các yêu cầu của người dùng đều được giải quyết kịp lúc và hiệu suất nhất! Trong ví dụ minh họa ở trên, người dùng truy cập vào LOAD BALANCER  và nó sẽ chuyển tiếp yêu cầu của người sử dụng đến một máy chủ phụ trợ, sau đó đáp ứng trực tiếp yêu cầu của người dùng.

Lợi ích?

Không áp dụng LOAD BALANCER, bạn sẽ rất dễ dàng gặp các vấn để về bảo mật dữ liệu!

Nhờ có Load Balancer, hệ thống của chúng ta có thể:

  • Uptime

Với Load Balancer, khi máy chủ gặp sự cố, lưu lượng truy cập sẽ được tự động chuyển đến máy chủ còn lại. Nhờ đó, trong hầu hết mọi trường hợp, bất kì một sự cố bất ngờ nào xảy ra cũng có thể được phát hiện và xử lý kịp thời, không làm gián đoạn các truy cập của người dùng, gây khó chịu trong quá trình tương tác với hệ thống

  • Datacenter linh hoạt

Khả năng linh hoạt trong việc điều phối giữa các máy chủ cũng là một ưu điểm khác của Load Balancer. Thật hiệu quả khi có sự chủ động điều phối giữa các máy chủ cũ và mới để xử lý các yêu cầu dịch vụ mà không làm gián đoạn các hoạt động chung của cả hệ thống lớn!

  • Yếu tổ bảo mật cho Datacenter

Bằng cách sử dụng Load Balancer, những yêu cầu từ người dùng sẽ được tiếp nhận và xử lý trước khi được phân chia đến các máy chủ. Đồng thời, trong quá trình phản hồi , những thông tin đó cũng được xét duyệt thông qua Load Balancer, giúp ngăn cản việc người dùng giao tiếp trực tiếp với máy chủ, ẩn đi thông tin và cấu trúc mạng nội bộ, từ đó chặn đứng những cuộc tấn công mạng hay truy cập trái phép, nâng cao hiệu quả bảo mật cho cơ sở dữ liệu!

Những loại giao thức mà Load Balancer có thể xử lí?

Quản trị LOAD BALANCER sẽ tạo ra quy định chuyển tiếp đối với bốn loại giao thức chính:

  • HTTP - Chuẩn HTTP balancing chỉ đạo yêu cầu dựa trên cơ chế HTTP chuẩn. Load Balancer đặt X-Forwarded-For, X-Forwarded-Proto, và tiêu đề X-Forwarded-Port để cung cấp cho các thông tin backends về các yêu cầu ban đầu.
  • HTTPS - HTTPS balancing với các chức năng tương tự như HTTP balancing đính kèm với sự bổ sung của mã hóa. Mã hóa được xử lý theo một trong hai cách: hoặc là với passthrough SSL duy trì mã hóa tất cả con đường đến backend hoặc chấm dứt SSL mà đặt gánh nặng giải mã vào Load Balancer nhưng gửi lưu lượng được mã hóa đến back end để ghi nhận thông tin và bảo mật.
  • TCP - Đối với các ứng dụng không sử dụng HTTP hoặc HTTPS, lưu lượng TCP cũng có thể được áp dụng để triển khai với LOAD BALANCER. Ví dụ, lượng truy cập vào một cụm cơ sở dữ liệu có thể được lan truyền và phân phối trên tất cả các máy chủ trong hệ thống
  • UDP - Gần đây, một số  LOAD BALANCER đã thêm hỗ trợ cho cân bằng tải giao thức Core Internet như DNS và syslogd sử dụng UDP.

Những quy tắc chuyển tiếp sẽ xác định các giao thức và cổng vào load balancer và bản đồ chúng đến các giao thức và cổng  LOAD BALANCER sẽ sử dụng để định tuyến lưu lượng trên backend.

Làm thế nào để LOAD BALANCER chọn máy chủ Backend?

Load balancers chọn máy chủ để chuyển tiếp yêu cầu dựa trên sự kết hợp của hai yếu tố:

Yếu tố đầu tiên: đảm bảo rằng bất kỳ máy chủ được lựa chọn có thể thực sự đáp ứng yêu cầu

Yếu tố thứ hai: sử dụng một quy tắc được cấu hình sẵn để lựa chọn trong số đó.

Health check?

Load balancer chỉ chuyển tiếp lưu lượng đến "Healthy" backend server. Để theo dõi sức khỏe của một backend server, kiểm tra sức khỏe thường xuyên bằng cách cố gắng kết nối với backend server sử dụng giao thức và cổng được định nghĩa bởi các quy tắc chuyển tiếp để đảm bảo rằng các máy chủ đang lắng nghe.

Có thể hiểu một cách đơn giản, Health Checks là việc kiểm tra tình trạng của một Backend Server. Bằng cách kết nối đến Backend Server dùng giao thức và cổng được định nghĩa bởi các quy tắc chuyển tiếp, nó đảm bảo rằng các máy chủ vẫn đang hoạt động ổn định.

Trong trường hợp máy chủ không hoạt động, Health Checks sẽ loại chúng ra khỏi vùng chứa. Điều này đồng nghĩa với việc các request sẽ không được chuyển tiếp đến máy chủ này nữa cho đến khi chúng vượt qua “bài kiểm tra” Health Checks sau.

Qua quá trình này, Load Balancing có thể chuyển tiếp trực tiếp lưu lượng đến các Backend Server đang thật sự hoạt động nhằm giải quyết mọi tác vụ của người dùng.

Khi máy chủ Backend gặp vấn đề unhealthy, cần kiểm tra lại Security Group của Load Balancer và health check's path trong cài đặt của Load Balancer.

Các loại LOAD BALANCER:

Elastic Load Balancing của AWS hỗ trợ ba loại Load balancer:

  • Application Load Balancers
  • Network Load Balancers
  • Classic Load Balancers

Load balancer (cân bằng tải) thường được nhóm thành 2 loại: Layer 4 và Layer 7.

  • Cân bằng tải Layer 4 có cách thức hoạt động dựa trên dữ liệu được tìm thấy trong các giao thức mạng và giao vận layer (IP, TCP, FTP, UDP).

  • Các bộ cân bằng tải Layer 7 phân phối các yêu cầu từ user dựa trên dữ liệu được tìm thấy trong các giao thức layer ứng dụng như HTTP.

  • Bộ cân bằng tải Layer 7 (Load balancer Layer 7) có thể phân phối thêm các requests dựa trên dữ liệu cụ thể của ứng dụng như HTTP header, cookies hoặc dữ liệu trong chính thông báo ứng dụng, chẳng hạn như giá trị của một thông số cụ thể.

 

Cách thiết lập Load Balancer?

ĐIỀU KIỆN THIẾT LẬP:

-ĐÃ TẠO SERVER BACKEND

-ĐÃ CÓ CHỨNG CHỈ TỪ AWS https://us-east-2.console.aws.amazon.com/acm/home

Bước 1: Truy cập vaò Management Console: https://aws.amazon.com/console/

Bước 2: Chọn EC2:

Bước 3: Tìm đến Tab Load Balancing, chọn Load Balancer:

Bước 4: Chọn Create Load Balancer:

Bước 5: Chọn type cho Load Balancer tuỳ theo mục đích sử dụng, các bạn có thể click vào "Learn more" để tìm hiểu thêm về trường hợp sử dụng và thiết lập, cách thiết lập tương đối giống nhau.

Trong trường hợp này, mình sẽ chọn Application Load Balancer để làm việc với hai giao thức HTTP và HTTPS:

ở bước 1 : bạn cần đặt tên cho Load Balancer của mình, thêm giao thức cho Listeners và chọn Abailability Zones với một Pc và ít nhất 2 public subnet

Ở bước 2, chọn chứng chỉ đã được cấp sau khi được Issued

 

Tạo Securirty Group cho riêng Load Balancer sử dụng:

Đặt tên cho Target Groups và đường dẫn để Load Balancer có thể sử dụng để thực hiện health check với máy chủ Backend, với giao thức, bạn chỉ cần chọn HTTP là đủ, vì Load Balancer tương tác với máy chủ Backend thông qua HTTP là đủ.

Chọn máy chủ Backend

Các điểm cần lưu ý, đảm bảo máy chủ Backend ở tình trạng healthy sau khi tạo Load Balancer, nếu máy chủ Backend hiển thị "unhealthy" , hãy kiểm tra lại Security Group của các máy chủ Backend cũng như Security group của Load Balancer và đảm bảo rằng các Security Group này có liên kết với nhau bằng các giao thức HTTP hay HTTPS

Tài liệu tham khảo:

https://aws.amazon.com/vi/elasticloadbalancing/faqs/

Mong rằng với bài viết này , mọi người đã có cái nhìn tổng quan chi tiết về lợi ích to lớn mà Load Balancer mang lại cho một hệ thống mạng trong quá trình phân phối tài nguyên cũng như cách thức sử dụng Load Balancer. Nghi sẽ viết thêm nhiều đề tài chi tiết sử dụng Load Balancer ở những blog sau! Mọi người nhớ theo dõi nhé!

Cảm ơn các bạn đã đọc, chào tạm biệt!?