1. Mục đích của bài viết
- Bài viết phân tích cách hoạt động của HAProxy.
- Giúp người đọc hiểu rõ hơn về mô hình
- Phân tích luồng hoạt động của các gói tin
2. Giới thiệu giải pháp
2.1 Mô tả giải pháp cân bằng tải sử dụng HAProxy
Cân bằng tải là một phương pháp phân phối khối lượng truy cập trên nhiều máy chủ nhằm tối ưu hóa tài nguyên hiện có đồng thời tối đa hóa thông lượng, giảm thời gian đáp ứng và tránh tình trạng quá tải cho một máy chủ.
HAProxy (High Availability Proxy) là một giải pháp mã nguồn mở về cân bằng tải có thể dùng cho nhiều dịch vụ chạy trên nền TCP (Layer 4), phù hợp với việc cân bằng tải với giao thức HTTP giúp ổn định phiên kết nối và các tiến trình Layer 7.
- Cân bằng tải ở Layer 4 chỉ thích hợp cho việc bạn có các webserver có cùng một ứng dụng.
- Cân bằng tải ở Layer 7 có thể phân tải cho các ứng dụng trên một webserver có nhiều ứng dụng cùng domain.
2.2 Một số lợi ích khi sử dụng phương pháp cân bằng tải:
- Tăng khả năng đáp ứng, tránh tình trạng quá tải
- Tăng độ tin cậy và tính dự phòng cao
- Tăng tính bảo mật cho hệ thống
2.3 Mô tả hoạt động
- Bước 1: Request từ phía USER đến VIP của HAProxy
- Bước 2: Request từ phía USER được HAProxy tiếp nhận và chuyển tới các Webserver
- Bước 3: Các Webserver xử lý và response lại HAProxy
- Bước 4: HAProxy tiếp nhận các response và gửi lại cho USER bằng VIP
3. Các thành phần cần thiết
3.1 Mô hình
Bài viết hướng dẫn cài đặt vui lòng tham khảo tại đây.
| HAProxy 1 | HAProxy 2 | Web1 | Web2 | USER | --- | --- | --- | ---| --- | --- | OS | CentOS 6 | CentOS 6 | CentOS 6 | CentOS 6 | Windows 7 | NIC | eth1 | eth0 | eth0 | eth0 | Local Area Connection | IP | 192.168.100.191 | 192.168.100.199 | 192.168.100.196 | 192.168.100.198 | 192.168.100.22 | Virtual IP | 192.168.100.123 | 192.168.100.123 | Không | Không | Không | Package| HAProxy + keepalived |HAProxy + keepalived | APACHE | APACHE | Firefox, WireShark |
3.2 Yêu cầu:
4. Phân tích hoạt động
4.1 Chuẩn bị
Bước 1: Thực hiện quá trình bắt gói tin trên node
HAProxy
, Web1
, Web2
bằng tcpdump
- Bắt gói trên HAProxy
tcpdump -i eth1 -p tcp -w /opt/haproxy.pcap
- Bắt gói trên Web1
tcpdump -i eth0 -p tcp -w /opt/web1.pcap
- Bắt gói trên Web2
tcpdump -i eth0 -p tcp -w /opt/web2.pcap
Bước 2: Chúng ta dùng USER (Windows 7) để tạo request đến HAProxy.
Sau khi Trình duyệt tải xong trang, bấm Ctrl + F5 để tải lại trang một lần nữa.
Bước 3: Chúng ta quay lại cửa sổ
tcpdump
bấm tổ hợp Ctrl
+ C
để dừng quá trình bắt gói tin.
Copy file
haproxy.pcap
vừa capture từ tcpdump
về máy Windows 7 bằng WinSCP.
Bước 4: Mở file bằng WireShark và lọc các gói tin
http
bằng cách gõ http
vào ô Filter
của WireShark và bấm Apply
.
Chú thích
- No.: Số thứ tự của bản tin đã capture được
- Time: Thời gian (giây) kể từ khi capture (Chi tiết)
- Source: Địa chỉ nguồn gửi bản tin
- Destination: Địa chỉ đích nhận bản tin
- Protocol: Giao thức sử dụng gửi, nhận bản tin
- Length: Kích thước của bản tin
- Info: Thông tin/Nội dung của bản tin
4.2 Phân tích
Bước 1:
No.35
, Người dùng có IP: 192.168.100.22 truy cập HTTP đếnHAProxy
thông qua IP VIP là 192.168.100.123 (1)No.37
,HAProxy
có địa chỉ 192.168.100.191 sẽ gửi bản tin truy cập HTTP của Người dùng đếnWebserver 1
có IP là 192.168.100.196 (2)No.39
,Webserver 1
(192.168.100.196) xử lý request rồi gửi lại response choHAProxy
có địa chỉ là 192.168.100.191 (3)No. 41
,HAProxy
gửi trả response từ VIP là 192.168.100.123 đến người dùng có địa chỉ là 192.168.100.22 (4)
Bước 2:
No.55
, một request từ người dùng có địa chỉ 192.168.100.22 cũng đến VIP có địa chỉ là 192.168.100.123 củaHAProxy
(1)No.57
,HAProxy
có địa chỉ 192.168.100.191 chuyển request choWebserver 2
có IP là 192.168.100.198 (2)No.59
, sau khi đượcWebserver 2
- 192.168.100.198 xử lý xong, response được gửi lạiHAProxy
có địa chỉ là 192.168.100.191 (3)No.61
,HAProxy
có VIP là 192.168.100.123 trả lại response cho người dùng có địa chỉ là 192.168.100.22 (4)
=> Đây là kiểu RoundRobin.
Phân tích file đã bắt được trên Web1
và Web2
:
Web1
và Web2
:- Các gói tin trên
Web 1
:
- Các gói tin trên
Web 2
:
Nhìn vào hình ảnh, chúng ta chỉ thấy luồng hoạt động giữa
HAProxy
(192.168.100.191) với các Webserver
(192.168.100.196, 192.168.100.198) không nhìn thấy bất kỳ hoạt động nào của USER
(192.168.100.22). Điều này cho thấy USER
chỉ làm việc với HAProxy
và tính an toàn được phát huy.
5. Kết luận
Trên đây là những phân tích giúp các bạn có thể hiểu rõ hơn về cơ chế hoạt động của HAProxy. Hy vọng giúp thêm các bạn mới nghiên cứu về giải pháp cân bằng tải, làm hệ thống của các bạn tăng hiệu năng và tính sẵn sàng đáp ứng được nhu cầu sử dụng của người dùng.
Source : https://github.com/hoangdh/ghichep-HA/blob/master/HAProxy/1.Phan-tich-hoat-dong-cua-HAProxy.md
Blogger Comment
Facebook Comment