# Giới thiệu Bài Lab Load Balancing > ### 🚀 Giới thiệu Lab: Load Balancing cho Web Server > > Hãy tưởng tượng website công ty bạn bỗng dưng nổi tiếng, lượng truy cập tăng vọt như sóng thần, và **server duy nhất đang “khóc thét” vì quá tải** 😱. > > Lab này sẽ giúp bạn **trở thành cứu tinh của server**, học cách **Load Balancing** – phân phối lưu lượng đều giữa nhiều máy chủ, đảm bảo hệ thống luôn **mượt mà, ổn định** và không bị sập trong giờ cao điểm. > > ### Trong Lab, bạn sẽ thực hành: > - **Cài đặt và cấu hình Load Balancer** cho các Web Server. > - Áp dụng các chiến lược phân phối tải như **Round Robin** và **Least Connections**. > - Kiểm tra hệ thống khi một server “nổi hứng nghỉ phép” 😎. > - **Giám sát và tối ưu hiệu năng**, tránh tình trạng server bị quá tải. Mô hình bài lab: ![Untitled Diagram4.drawio](https://hackmd.io/_uploads/H1qHmiTilx.png) # Bài tập: NAT Port & Load Balancing cho Web Cty.net Trong bài tập này, tập trung vào cơ chế là **NAT Port trên Router** để người dùng truy cập website của **Cty.net**. --- ## I. Yêu cầu bài toán - Trong mạng nội bộ có **2 máy chủ Web Server**, cùng chạy một website giống nhau. - Cần cấu hình sao cho khi client bên ngoài truy cập vào **IP WAN của Router port 80**, hoặc 1 tên miền đã được phần giải về **IP WAN của Router** cả **2 Web Server** đều có thể nhận yêu cầu. - Máy chủ nào **tải thấp hơn** sẽ đảm nhiệm xử lý và phản hồi yêu cầu từ người dùng. ### Hạn chế khi NAT thông thường - Khi NAT qua IP WAN của Router, **1 port chỉ ánh xạ được vào 1 server duy nhất**. - Gây **bất tiện**: - `http://192.168.1.5:800` → Server2 (**gây bất tiện cho người dùng khi truy cập web**) - `http://192.168.1.5` → Server1 (**hợp lý**) **Mục tiêu:** - Người dùng chỉ cần truy cập: `http://192.168.1.5` - Có thể được điều hướng và truy cập vào **Server1** hoặc **Server2**. --- ## II. Các kịch bản triển khai ### 1. Test cơ chế *Round Robin* trên DNS nội bộ - Khi client truy cập thông qua **DNS nội bộ**, DNS sẽ thực hiện cơ chế **xoay vòng (Round Robin)**. - Các Web Server sẽ **luân phiên phản hồi truy vấn** từ client. - Trỏ bản ghi phân giải web về **IP của 2 web server** ![Screenshot 2025-09-22 013132](https://hackmd.io/_uploads/HyBjK8J2xe.png) - Kết quả client trong nội bộ truy cập web bình thường ![Screenshot 2025-09-22 013524](https://hackmd.io/_uploads/r1BP9Uknel.png) --- ### 2. NAT Port trên Router Cấu hình ánh xạ port (Port Forwarding) như sau: | IP WAN (Router) | Port | IP LAN (Server) | Port | |--------------------|------|------------------|------| | `192.168.1.5` | 80 | `192.168.9.11` | 80 | | `192.168.1.5` | 800 | `192.168.9.12` | 800 | ![Screenshot 2025-09-22 013233](https://hackmd.io/_uploads/ByNlqLJneg.png) ![Screenshot 2025-09-22 013255](https://hackmd.io/_uploads/SkGM9U1hxe.png) ![Screenshot 2025-09-22 013631](https://hackmd.io/_uploads/B1Qh9LJnll.png) ### 3. Network Load Balancing (NLB) - Cài đặt **Network Load Balancing** trên các server để tham gia vào **1 cụm cluster**. ![Screenshot 2025-09-22 013105](https://hackmd.io/_uploads/HJrzYIyhxl.png) ![Screenshot 2025-09-22 013325](https://hackmd.io/_uploads/rJS7qIk3ge.png) ![Screenshot 2025-09-22 013031](https://hackmd.io/_uploads/HkmZK8J2xe.png) - Một "node" sẽ đứng ra **kéo các node khác vào cluster**. #### Lưu ý về quyền | Môi trường | Quyền cần thiết | |-----------------|--------------------------------------| | **Domain** | Sử dụng **useradmin domain** có đủ quyền. | | **Workgroup** | Cần khai báo**admin local** trên từng node. | Đứng từ server1 kéo các node-server2 vào cluster, thiết lập các thông số Các thông số này đã được giải thích ở phần sau. ![Screenshot 2025-09-22 014343](https://hackmd.io/_uploads/SJGGjL12gg.png) ![Screenshot 2025-09-22 014434](https://hackmd.io/_uploads/rJkPsLk3lg.png) ![Screenshot 2025-09-22 014527](https://hackmd.io/_uploads/Sk1ujLkheg.png) ![Screenshot 2025-09-22 014644](https://hackmd.io/_uploads/ByTui8y3xl.png) ![Screenshot 2025-09-22 014711](https://hackmd.io/_uploads/Hk8KjIk3xg.png) Kiểm tra kết quả: node-server được thêm vào cluster thành công Đưa node-server 1 vào cluster ![Screenshot 2025-09-22 014815](https://hackmd.io/_uploads/HJo0jLynex.png) ![Screenshot 2025-09-22 014841](https://hackmd.io/_uploads/rJNJnLynll.png) Tiếp tục Next để hoàn thành cấu hình ### Priority & IP-Cluster - Có thể thiết lập **priority** cho từng server để quyết định thứ tự xử lý. - **IP-Cluster:** địa chỉ IP chung được dùng cho tất cả các node trong cluster. - Khi tạo **IP-Cluster**, một **MAC ảo** sẽ được sinh ra và gán cho tất cả các node, đảm bảo traffic được định tuyến đúng. ## III. Các chế độ cấu hình NLB ### 1. Unicast Mode > - 1 **MAC ảo duy nhất** được cấp cho card mạng vật lý của tất cả node. > - **Không sử dụng MAC gốc** của node. > - Mọi gói dữ liệu đến đều được **nhận bởi tất cả node**, nhưng chỉ **1 node xử lý và trả lời**. > - Các node **không thể giao tiếp với nhau**. --- ### 2. Multicast Mode > - 1 **MAC ảo** được cấp cho card mạng của tất cả node. > - Địa chỉ **MAC gốc vẫn được sử dụng**. > - Chỉ **1 node xử lý gói tin đến**. --- ## IV. Trạng thái hội tụ (Converge) ### 1. Kiểm tra hội tụ Khi các node cùng đạt trạng thái **Converged**, tức là chúng đã **hội tụ và đồng bộ** trong cluster. ![Screenshot 2025-09-22 014935](https://hackmd.io/_uploads/HkqlnL1hll.png) ### 2. Chỉnh cấu hình NAT port Tiến hành chỉnh lại cấu hình phần NAT port, lúc này chỉ NAT port 80 trên IP Wan và ánh xạ về IP cluster ![Screenshot 2025-09-22 015120](https://hackmd.io/_uploads/HygH2Uk3xx.png) ### 3. Test lại kết quả truy cập web Kết quả truy vấn web từ bên ngoài thành công, lúc sẽ vào web trên server1, lúc sẽ vào web trên server2 ![Screenshot 2025-09-22 015403](https://hackmd.io/_uploads/H1trhL13xx.png)