---
# System prepended metadata

title: "Load Balancing\U0001F3E2\U0001F3E2\U0001F3E2"

---

# 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)
