Tìm hiểu Classic ELB và ALB
Nếu bạn đang dùng AWS thì bạn sẽ thấy khi tạo một Load balancer chúng ta sẽ có 3 lựa chọn: Application Load Balancer (ALB), Network Load Balancer và Classic Load Balancer. Trong khi đó thì Network Load Balancer và Classic Load Balancer được gọi chung là Elastic Load Balancer (ELB). Chúng ta luôn có những tranh luận về việc sử dụng lọai nào tốt hơn. Dưới đây chúng ta sẽ cùng tìm hiểu để xem loại nào tốt hơn, loại nào phù hợp và cần thiết đối vs ứng dụng của chúng ta.
ELB và ALB là gì?
Trước tiên chúng ta sẽ cùng tìm hiểu thế nào là ELB và ALB. ELB: Elastic Load Balancer được AWS phát hành vào năm 2009, là bộ cân bằng tải được set up trước khi gọi đến mạng lưới các AWS Elastic Compute (EC2). Nó đóng vai trò là một điểm vào duy nhất của người dùng và phân phối lượng truy cập vào những máy chủ có sẵn để tiếp nhận request. Ngoài ra nó cũng thực hiện một việc quan trọng trong việc cải thiện khả năng chịu lỗi của các dịch vụ mà nó đứng trước. ELB thường xuyên kiểm tra sức khỏe cho tất cả các instance đăng kí trong mạng lưới ELB và chỉ phân phối định tuyết request đến những máy có sức khoẻ tốt (pass health check). Đến năm 2016 thì AWS phát hành Application Load Balancer (ALB) được thiết kế để cải thiện tính linh hoạt, và performance của các ứng dụng thời gian thực, microservices, và các ứng dụng streaming. ALB cũng hỗ trợ các giao thức WebSocket protocol và HTTP/2, hoạt động ở tầng application và hỗ trợ định tuyết dựa trên nội dung (content-based). Classic ELB và ALB chia sẻ những điểm tương đồng về chức năng, tuy nhiên ALB đã được chuyên môn hoá cao hơn để phục vụ tốt hơn cho người dùng. Để hiểu sâu hơn về các Layers mà ELB và ALB cung cấp chúng ta sẽ tìm hiểu so qua về OSI model (Open Systems Interconnection Reference Model,).
OSI model
Về cơ bản để hiểu rõ sự khác biệt giữa classic ELB và ALB là xác định sự khác nhau trong cách họ xử lý và định tuyết các request. Để rõ hơn về sự khác biệt này thì chúng ta cần biết cơ bản về mô hình OSI. Mô hình OSI là một thiết kế dựa vào nguyên lý tầng cấp, lý giải một cách trừu tượng kỹ thuật kết nối truyền thông giữa các máy vi tính và thiết kế giao thức mạng giữa chúng. Nó còn được gọi là Mô hình bảy tầng của OSI. Các lớp riêng lẻ trong mô hình được hỗ trợ bởi các lớp ở bên dưới nó.
Trong đó tầng 1 là tầng vật lý (Physical Layer) và đại diện cho các phương tiện vật lý mà qua đó yêu cầu được gửi đi, ví dụ các phương tiện này có thể là cáp quang, CAT-5 cable hoặc bất kì công nghệ vận chuyển khác. Tiếp đó là tầng 2, tầng liên kết dữ liệu (Data-Link Layer), tầng 3 là tầng mạng (Netwỏk Layer), tầng 4 là tầng giao vận (Transport layer), tầng 5 là tầng phiên (Session layer), tầng 6 là tầng trình diễn (Presentation Layer) và cuối cùng là tầng 7, tầng ứng dụng (Application Layer) tầng này là tầng gần với người dùng nhất, cung cấp cho người dùng truy cập các thông tin dữ liệu thông qua chương trình ứng dụng.
Classic ELB hoạt động ở tầng thứ 4 (Network Layer). Tầng 4 đại diện cho lớp vận chuyển, nó được điều khiển bởi các giao thức (protocol) và được sử dụng để truyền yêu cầu. Đối với các ứng dụng web thì nó thường là các giao thức TCP/IP. Ví dụ một thiết bị mạng, như ELB đọc phương thức và port của request đến sau đó sẽ định tuyến đến các máy chủ.
Trong đó ALB hoạt động ở tầng 7 (Application Layer) tầng cao nhất. Tầng 7 đại diện cho lớp ứng dụng và cho phép chuyển hướng lưu lượng dựa trên nội dung của request. ALB sẽ nhận biết từng URL dựa trên các patterns được thiết lập khi config load balancer và có thể định tuyến nó đến các cụm máy chủ khác nhau dựa theo nhu cầu của ứng dụng.
Classic ELB: Bản gốc của AWS
Classic ELB là một bộ load balancer đơn giản, dễ cấu hình và được tạo ra từ lâu nên hầu hết các kĩ sư AWS đều quen thuộc và dùng nó trong quá khứ. Nếu như môi trường của bạn bao gồm các dịch vụ được xác định rõ ràng, và được mapping tới một địa chỉ cụ thể thì ELB là một lựa chọn hợp lý. Một số tính năng ELB và ALB hỗ trợ
ALB - một lựa chọn hoàn hảo cho việc định tuyến dựa trên nội dung
Khi các tổ chức bắt đầu chuyển sang kiến trúc microservice hay áp dụng cơ sở hạ tầng dựa theo container-based infrastructure thì khả năng chỉ ánh xạ đến 1 service trở nên phức tạp và khó bảo trì hơn. Như image trên thì ngoài những tính năng chung vs classic ELB thì chúng ta có thể thấy được ALB còn có thể quản lý định tuyến dựa trên các quy tắc do người dùng xác định. Request đến URL đến ALB có thể được định tuyến truy cập đến các máy chủ hoặc nội dung của URL đó. Ví dụ ta có 1 ALB
click vào ta sẽ thấy dược detail và có thể config thêm cho nó. Cũng như classic ELB thì khi click vào tab Listeners bạn có thể add thêm những target khác nhau. Trong khi đó ALB có điểm khác biệt ở đây là link dẫn đến View/edit rules. Khi click vào View/edit rules link nó sẽ cho phép bạn thêm, xoá, sửa những rule cho định tuyến này. Các rule có thể dựa theo đường dẫn hoặc header... và mỗi rule có thể định hướng đến những target group khác nhau. Luôn luôn có rule mặc định mà không được phép xoá ở đây.
Chúng ta cũng có thể add nhiều rules khác nhau
Nó sẽ duyệt theo thứ tự từ trên xuống dưới.
Cuối cùng, dựa theo yêu cầu hiện tại của bạn mà bạn có thể quyết định dùng ELB hay ALB, nếu kiến trúc không phức tạp, có ánh xạ trực tiếp giữa url và dịch vụ thì classic ELB là một lựa chọn tốt, Nhưng nếu yêu cầu xây dựng ánh URL khác nhau cho ra những target khác nhau hoặc sử dụng microservices hay container-based infrastructure thì nên sử dụng ALB.
All rights reserved