Cân bằng tải web (NLB)
Cân bằng tải web là công nghệ cho phép phân phối lưu lượng truy cập đến các web server (được gọi là server pool hoặc server farm). Bằng cách này, dịch vụ web của chúng ta sẽ tránh được việc quá tải, dẫn đến ngưng hoạt động. Trước khi giải thích cách hoạt động của NLB, hãy cùng xem lại cách 1 HTTP Request hoạt động
Với các website bình thường, đa số chỉ có 1 server backend. Client – trình duyệt gửi request đến Web Server -> trên Server sẽ chạy code backend, xử lý thông tin trong request, truy vấn các dữ liệu cần thiết -> gửi respond lại cho Client. Chính vì thế khi có 1 số lượng lớn request gửi tới Server trong 1 khoảng thời gian ngắn, trong đó còn có nhiều request yêu cầu Server phải xử lý nhiều thì việc phản hồi chậm, thậm chí quá tải, ngưng dịch vụ có khả năng xảy ra.
Khi sử dụng NLB thì chúng ta cần có nhiều Web Server chứa chung source code, chung tài nguyên. Các Server này sẽ tham gia chung một nhóm gọi là Cluster. Cluster này sẽ được đại diện bằng 1 IP ảo để giao tiếp với bên ngoài.
Mỗi khi có request thì NLB sẽ điều hướng request này về cho 1 server nào đó trong Cluster xử lý. Nhờ thế, khi một server chẳng may bị ngưng hoạt động thì request tiếp theo sẽ được đẩy ngay đến server khác, đảm bảo dịch vụ tiếp tục hoạt động.
NLB cũng được cài đặt nhiều thuật toán khác nhau giúp Network Load Balancer quyết định được nên chuyển tiếp request sang server nào. Sau đây là một số thuật toán phổ biến.
Một số thuật toán cân bằng tải
Round Robin
Round Robin là thuật toán NLB cơ bản nhất, chỉ chuyển tiếp dựa trên thứ tự ưu tiên của các server. Khi thêm một Server vào Cluster (mình sẽ gọi là 1 node), chúng ta sẽ phải chỉ ra thứ tự ưu tiên của server đó.
Khi có một request được gửi đến, NLB sẽ kiểm tra theo thứ tự ưu tiên từ trên xuống, server nào đang có ít kết nối hơn thì sẽ đẩy request sang server đó. Nếu tất cả các node đều có cùng số lượng kết nối thì NLB sẽ chuyển request cho node có độ ưu tiên cao nhất.
VD: hiện tại các request đang được chuyển tiếp như sau:
- Request từ Client 1 – 3 được chuyển sang Server 1 – 3 xử lý.
- Do các Node đang có cùng số lượng kết nối, request từ Client 4 được chuyển sang Server 1 xử lý.
Lúc này, request từ Client 5 sẽ được đẩy tiếp cho Server 2 xử lý.
Nhược điểm: do chỉ phân phối theo thứ tự ưu tiên, nên có khả năng 1 server có thứ tự cao được đẩy nhiều request quá => server đó ngưng hoạt động.
Weighted Round Robin
Weighted Round Robin khắc phục vấn đề của thuật toán Round Robin bằng cách đánh thứ tự ưu tiên dựa trên khả năng chịu tải của server. Khả năng chịu tải này sẽ được đánh dựa trên các thông số CPU, RAM,… của server. VD chúng ta có 3 server:
- S1: 10.10.0.11 khả năng chịu tải là 1
- S2: 10.10.0.12 khả năng chịu tải là 3
- S3: 10.10.0.13 khả năng chịu tải là 2
Khi đó thứ tự ưu tiên được xếp như sau: S2-S2-S2-S3-S3-S1. Có thứ tự ưu tiên rồi thì sẽ thực hiện như Round Robin bình thường.
Least Connection
Least Connection hoạt động dựa trên việc tính toán số lượng kết nối đang hoạt động tại mỗi node mạng, và chọn ra node mạng đang có ít kết nối hoạt động nhất. Trong trường hợp số lượng kết nối của các node mạng bằng nhau thì Cluster sẽ thực hiện thuật toán Round Robin.
Thuật toán hoạt động như sau, giả sử ta có mô hình cân bằng tải với 3 node mạng:
Lúc này, khi có lượt truy cập mới, Network Load Balancing Cluster sẽ kiểm tra thấy Node 2 đang có ít kết nối hoạt động nhất. Vì thế kết nối sẽ được đẩy sang cho Node 2
Giờ thì số lượng kết nối hoạt động tại Node 2 tăng lên thành 6, ngang với Node 1. Nếu tại thời điểm này tiếp tục có kết nối thì Network Load Balancing Cluster sẽ thực hiện thuật toán Round Robin. Theo đó kết nối sẽ được đẩy sang Node 1
Nhược điểm: do chỉ xét đến số lượng kết nối trong khi dung lượng kết nối của các node có thể khác nhau, nên vẫn có thể xảy ra trường hợp phân phối không đồng đều, 1 số Server bị quá tải.
Weighted Least Connection
Weighted Least Connection khắc phục nhược điểm của Least Connection. Bản chất thuật toán vẫn là lựa chọn node mạng có lượng kết nối hoạt động ít nhất, nhưng thay vì dựa trên số lượng thì Weighted Least Connection sẽ lựa chọn dựa trên tỉ lệ phần trăm:
Khi có kết nối, do Node 3 mới chỉ có 5% số lượng kết nối hoạt động, nên kết nối sẽ được đẩy sang Node 3
Resource Based
Các thuật toán như Round Robin, Least Connection chỉ khác ở cách điều hướng, còn thực tế mỗi request sẽ cần server phải xử lý và trả về thông tin khác nhau. Ví dụ: máy A request 1 lượng thông tin cực lớn (VD toàn bộ thông tin sản phẩm) trong khi máy B chỉ request thông tin về 1 sản phẩm. Cả 2 đều là 1 request, nhưng cần server tốn thời gian và tài nguyên để xử lý chênh nhau rất nhiều, như vậy thì việc chia ra các server dựa trên số lượng kết nối cũng không hoàn toàn ổn.
Resource Base sẽ giải quyết vấn đề này. Resource Based điều hướng request từ Client dựa trên tình trạng hiện tại của Server. Network Load Balancer thu thập thông tin về CPU, RAM, số lượng session đang hoạt động tại mỗi node mạng để quyết định chuyển hướng request cho Server nào xử lý. Tuy hoạt động tốt hơn, nhưng chi phí cài đặt và vận hành hệ thống Network Load Balancing cũng tốn kém hơn.
Các bước triển khai
- Cài đặt Web Server
- Cài đặt Network Load Balancing
- Cấu hình Network Load Balancing Cluster
- Kiểm tra
Mô hình bài Lab:
- Host1DellRS45 (IP: 172.16.1.10/16): Domain Controller – Windows Server 2022 DataCenter (Domain: mcsa2022.vn)
- Host1-DellPowerEdgeT350 (IP: 172.16.1.20/16): Domain Member – Windows Server 2022 DataCenter
- Host2-DellPowerEdgeT350 (IP: 172.16.1.30/16): Domain Member – Windows Server 2022 DataCenter
- B560M-IntelGen11: Client – Windows 10 Professional
Cài đặt Web Server
Trên Host1-DellPowerEdgeT350:
B1 – Trên Host1-DellPowerEdgeT350, mở Server Manager, chọn Add roles and features
B2 – Cửa sổ Before you begin, chọn Next 3 lần
B3 – Cửa sổ Select server roles, đánh dấu chọn Web Server (IIS), chọn Add Features, và chọn Next 3 lần
B4 – Cửa sổ Confirm installation selections, chọn Install
B5 – Sau khi cài đặt thành công, chọn Close
Thực hiện cài đặt tương tự trên: Host2-DellPowerEdgeT350:
Cài đặt Network Load Balancing
Cài đặt Network Load Balancing cho Host1-DellPowerEdgeT350:
B1 – Trên máy Host1-DellPowerEdgeT350, trong Server Manager, chọn Add roles and features
B2 – Cửa sổ Before you begin, chọn Next 4 lần
B3 – Cửa sổ Select features, đánh dấu chọn Network Load Balancing, chọn Add Features, và chọn Next
B4 – Cửa sổ Confirm installation selections, chọn Install.
B5 – Sau khi cài đặt thành công, chọn Close
Thực hiện cài đặt tương tự trên Host2-DellPowerEdgeT350:
Kiểm tra truy cập Website của Host1-DellPowerEdgeT350:
B1 – Mở Microsoft Edge hoặc Internet Explorer, truy cập http://172.16.1.20
B2 – Kiểm tra truy cập Website của Host1-DellPowerEdgeT350 thành công
Kiểm tra truy cập Website của Host2-DellPowerEdgeT350:
B1 – Mở Microsoft Edge hoặc Internet Explorer, truy cập http://172.16.1.30
B2 – Kiểm tra truy cập Website của Host2-DellPowerEdgeT350 thành công
Cấu hình Network Load Balancing Cluster
B1 – Trên máy Host1-DellPowerEdgeT350, trong Server Manager, bung Tools, mở Network Load Balancing Manager.
B2 – Trong cửa sổ Network Load Balancing Manager, chuột phải Network Load Balancing Clusters, chọn New Cluster
B3 – Cửa sổ New Cluster: Connect, nhập 172.16.1.20 vào ô Host, chọn Connect, và chọn Next.
B4 – Cửa sổ New Cluster: Host Parameters, chọn Next.
B5 – Cửa sổ New Cluster: Cluster IP Address, chọn Add.
B6 – Cửa sổ Add IP Address, nhập thông tin như hình bên dưới, và chọn OK.
B7 – Cửa sổ New Cluster: Cluster IP Address, chọn Next.
B8 – Cửa sổ New Cluster: Cluster Parameters, nhập www.mcsa2022.vn, chọn Multicast, và chọn Next
B9 – Cửa sổ New Cluster: Port Rules, chọn Edit.
B10 – Cửa sổ Add/Edit Port Rule, nhập 80 vào 2 ô From và To, chọn OK
B11 – Cửa sổ New Cluster: Port Rules, chọn Finish.
B12 – Kiểm tra, tạo Cluster và đưa Host1-DellPowerEdgeT350 vào Cluster thành công.
B13 – Cửa sổ Network Load Balancing Manager, chuột phải www.mcsa2022.vn, chọn Add Host To Cluster.
B14 – Cửa sổ Connect, nhập 172.16.1.30 vào ô Host, chọn Connect, và chọn Next.
B15 – Cửa sổ Add Host To Cluster: Host Parameters, chọn Next.
B16 – Cửa sổ Add Host To Cluster: Port Rules, chọn Finish.
B17 – Kiểm tra, đưa Host2-DellPowerEdgeT350 vào Cluster thành công.
B18 – Trên máy Host1-DellPowerEdgeT350, mở Command Prompt, gõ lệnh ipconfig, kiểm tra máy Host1-DellPowerEdgeT350 có thêm địa chỉ IP 172.16.1.100
B19 – Trên máy Host2-DellPowerEdgeT350, mở Command Prompt, gõ lệnh ipconfig, kiểm tra máy Host2-DellPowerEdgeT350 có thêm địa chỉ IP 172.16.1.100
Phân giải tên miền cho IP 172.16.1.100
B1 – Trên máy Host1DellRS45, mở Server Manager, vào menu Tools, chọn DNS.
B2 – Bung mục Forward Lookup Zones, chuột phải vào mcsa2022.vn, chọn New Host (A or AAAA)
B3 – Ở mục Name, khai báo www ; mục IP Address, nhập vào IP: 192.168.1.100, đánh dấu check ô Create associated pointed (PTR) record, chọn Add Host, sau đó chọn OK.
B4 – Chuột phải Host1DellRS45, chọn All Task, chọn Restart.
B5 – Mở Command Prompt, gõ lệnh nslookup www.mcsa2022.vn . Phân giải địa chỉ www.mcsa2022.vn có IP 172.16.1.100 thành công.
Kiểm tra
- Trên máy B560M-Intel11th, kiểm tra cân bằng tải:
B1 – Mở Microsoft Edge hoặc Internet Explorer:
Truy cập http://172.16.1.20 (Kết quả thành công)
Truy cập http://172.16.1.30 (Kết quả thành công)
B2 – Kiểm tra cân bằng tải:
Truy cập http://172.16.1.100 (Kết quả thành công)
Truy cập http://www.mcsa2022.vn (Kết quả thành công)
Kiểm tra khả năng chịu lỗi:
Để dễ dàng nhận thấy khả năng chịu lỗi của hệ thống, thay đổi nội dung hiển thị trên website. Host1-DellPowerEdgeT350 (Web Server 1) và Host2-DellPowerEdgeT350 (Web Server 2).
B1 – Trên máy B560M-Intel11th, mở Microsoft Edge hoặc Internet Explorer:
Truy cập địa chỉ http://www.mcsa2022.vn , truy cập thành công đến Web Server 2.
B2 – Trên máy Host2-DellPowerEdgeT350 (Web Server 2), trong Server Manager, bung Tools, mở Internet Information Services (IIS) Manager.
B3 – Trong Internet Information Services (IIS) Manager, chuột phải Host2-DellPowerEdgeT350, chọn Stop (Giả lập Web Server trên Host2-DellPowerEdgeT350 gặp sự cố).
B4 – Trên máy B560M-Intel11th, mở Microsoft Edge hoặc Internet Explorer, truy cập http://www.mcsa2022.vn, kiểm tra truy cập thành công vào Web Server 1
Microsoft Trainer: Trần Trung Hiếu
System Engineer: Võ Đình Đạt