BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ĐỒ ÁN TỐT NGHIỆP
TÌM HIỂU VÀ TRIỂN KHAI GIẢI PHÁP CÂN BẰNG TẢI
CHO MÁY CHỦ WEB SỬ DỤNG OPNSENSE
Sinh viên thực hiện:
Huỳnh Văn Nam
Giáo viên hướng dẫn:
HÀ NỘI, 2022
MỤC LỤC
MỤC LỤC......................................................................ii
LỜI CẢM ƠN................................................................iv
LỜI CAM ĐOAN.............................................................v
DANH MỤC KÝ HIỆU VÀ VIẾT TẮT..................................vi
DANH MỤC HÌNH VẼ....................................................vii
LỜI NĨI ĐẦU.................................................................x
CHƯƠNG I: TỔNG QUAN VỀ CÂN BẰNG TẢI...................12
1.1 Giới thiệu về cân bằng tải...................................12
1.1.1 Vai trò của cân bằng tải..............................................14
1.1.2 Các loại cân bằng tải...................................................15
1.1.3 Cân bằng tải sử dụng phần cứng và cân bằng tải phần
mềm 16
1.1.4 Các tính năng của cân bằng tải..................................18
1.1.5 Các loại giao thức được xử lý trong cân bằng tải........19
1.1.6 Hoạt động của cân bằng tải........................................19
1.1.7 Một số cân bằng tải trong thực tế...............................21
1.1.8 Ưu điểm của cân bằng tải...........................................25
1.2 Các phương pháp sử dụng trong cân bằng tải......28
1.2.1 Luân chuyển vòng DNS...............................................28
1.2.2 Network Address Translation (NAT).............................29
1.3 Các thuật toán cân bằng tải................................30
1.3.1 Thuật toán ngẫu nhiên (random)................................31
1.3.2 Thuật toán Round Robin (RR)......................................31
1.3.3 Thuật toán Weighted Round Robin (Ratio)..................32
1.3.4 Thuật toán Dynamic Round Robin – DRR (Dynamic
Ratio) 33
1.3.5 Thuật toán Fastest......................................................33
1.3.6 Thuật toán Least Connections (LC).............................34
1.3.7 Thuật toán Predictive..................................................35
2
1.3.8 Thuật toán Weighted Least Connection......................35
1.4 Ứng dụng của cân bằng tải.................................35
1.5 Các sản phẩm của cân bằng tải...........................36
1.6 Kết luận chương.................................................38
CHƯƠNG II: TÌM HIỂU VỀ OPNSENSE VÀ GIẢI PHÁP CÂN
BẰNG TẢI CỦA OPNSENSE...........................................39
2.1 Tổng quan về OPNsense.....................................39
2.1.1 Giới thiệu OPNsense....................................................39
2.1.2 Lợi ích của OPNsense..................................................40
2.2 Các tính năng chính của OPNsense.....................41
2.2.1 Firewall........................................................................42
2.2.2 Multi WAN....................................................................45
2.2.3 Mạng riêng ảo.............................................................45
2.2.4 Virtual IPs....................................................................47
2.3 Giải pháp cân bằng tải của OPNSense trên web
server......................................................................48
Kết luận Chương 2....................................................52
CHƯƠNG III: TRIỂN KHAI THỬ NGHIỆM DỊCH VỤ CÂN
BẰNG TẢI CHO HỆ THỐNG MÁY CHỦ WEB SỬ DỤNG
OPNSENSE.................................................................53
3.1 Mơ hình thử nghiệm...........................................53
3.2 Cài đặt và thử nghiệm........................................54
3.2.1 Các bước chuẩn bị:......................................................54
3.2.2 Tiến hành cấu hình Load Balancing............................62
3.3 Triển khai thử nghiệm........................................69
3.4 Kết luận chương 3..............................................76
CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI. .77
4.1 Kết luận.............................................................77
4.2 Hướng phát triển của đề tài................................78
5. Tài liệu tham khảo..................................................79
3
DANH MỤC KÝ HIỆU VÀ VIẾT TẮT
FTP
File Transfer Protocol
DNS
Domain Name System
NFS
Network File System
MAC
Media Access Control
IP
Internet Protocol
OSI
Open Systems Interconnection Reference Model
HTTP
HyperText Transfer Protocol
SMTP
Simple Mail Transfer Protocol
UDP
User Datagram Protocel
URL
Uniform Resource Locator
NAT
Network Address Translation
PPTP
Point-to-Point Tunneling Protocol
GRE
Generic Routing Encapsulation
SIP
Session Initiation Protocol
CARP
Common Address Redundancy Protocol
WAN
Metropolitan Area Network
VPN
Virtual Private Network
HTTPS
Hypertext Transfer Protocol Secure
TCP
Transmisson Control Protocol
UDP
User Datagram Protocol
LAN
Local Area Network
DANH MỤC HÌNH V
4
Hình 1. 1 Hệ thống cân bằng tải...........................................................................13
Hình 1. 2 Mơ tải hoạt động của một website khơng có cân bằng tải...................14
Hình 1. 3: Mơ tả hoạt động của một website có cân bằng tải..............................14
Hình 1. 4: Cân bằng tải sử dụng phần cứng.........................................................17
Hình 1. 5: Tổng quan về kiến trúc của Nginx......................................................22
Hình 1. 6: Tổng quan về pfsense.............................................................23
Hình 1. 7: OPNsense phiên bản 19.7...................................................................24
Hình 1. 8: Khả năng mở rộng của một webserver...............................................26
Hình 1. 9: Tầm quan trọng của DNS trong thế giới mạng...................................28
Hình 1. 10: Kết nối mạng NAT giữa các máy chủ...............................................29
Hình 1. 11: Phần mềm cân bằng tải Radware......................................................37
Hình 1. 12: Thiết bị cân bằng tải Dray Tek V2960..............................................37
Y
Hình 2. 1: Giải pháp OPNsense...........................................................................39
Hình 2. 2: Chức năng kiểm tra sức khỏe hệ thống của OPNsense.......................40
Hình 2. 3: Chức năng Firewal: Aliases................................................................42
Hình 2. 4: Thiết lập Firewall Aliases...................................................................43
Hình 2. 5: Rule mặc định được cấu hình tại card WAN.......................................43
Hình 2. 6: Mơ hình mạng kết hợp OPNsense......................................................45
Hình 2. 7: Mơ hình mạng riêng ảo.......................................................................46
Hình 2. 8: Sơ đồ mạng có 2 kết nối WAN............................................................49
Hình 2. 9: Cấu hình Gateways Loadbalancer......................................................50
Hình 2. 10: Cấu hình Failover cho trường hợp 1.................................................50
Hình 2. 11: Cấu hình Failover cho trường hợp 2.................................................51
Hình 2. 12: Kết quả sau khi cấu hình Gateway....................................................51
Hình 2. 13: Kết quả cấu hình Firewall Rules.......................................................52
Hình 3. 1: Sơ đồ mơ hình thử nghiệm..................................................................53
Hình 3. 2: Màn hình sau khi cài đặt OPNense.....................................................55
Hình 3. 3: Sau khi đặt tên cho interface...............................................................55
Hình 3. 4: Cấu hình xong Network Interface.......................................................56
Hình 3. 5: Giao diện web của máy chủ OPNsense..............................................56
Hình 3. 6: Sau khi đăng nhập thành công OPNsense...........................................57
5
Hình 3. 7: Thơng tin hệ thống OPNsense............................................................57
Hình 3. 8: Máy chủ NTP OPNsense....................................................................58
Hình 3. 9: Cài đặt DHCP OPNsense....................................................................58
Hình 3. 10: OPNsense cấu hình giao diện LAN..................................................59
Hình 3. 11: Bảng điều khiển OPNsense...............................................................59
Hình 3. 12: Interfaces của các card mạng hiện có...............................................60
Hình 3. 13: Cấu hình Network Interfaces cho một card mạng............................61
Hình 3. 14: Thơng tin 3 card mạng sau khi cấu hình...........................................61
Hình 3. 15: Hiển thị 3 card mạng tại máy OPNsense..........................................62
Hình 3. 16: Gateways trước khi cấu hình Monitor IP..........................................62
Hình 3. 17: Add Monitor IP cho WAN1..............................................................63
Hình 3. 18: Gán Alert Interval cho WAN1...........................................................63
Hình 3. 19: Gateways sau khi đã cấu hình Monitor IP........................................64
Hình 3. 20: Tạo Gateways group Load balancer.................................................64
Hình 3. 21: Tạo Gateways group Failover...........................................................65
Hình 3. 22: Sau khi cấu hình Gateways...............................................................66
Hình 3. 23: Màn hình hiển thị Firewall Rules......................................................66
Hình 3. 24: Cấu hình Rules cho Gatway balancer...............................................67
Hình 3. 25: Cấu hình Rules cho Gatway LB21....................................................68
Hình 3. 26: Danh sách những rules vừa tạo.........................................................68
Hình 3. 27: Trạng thái Gateways khi đã cấu hình thành cơng.............................69
Hình 3. 28: Vmware setting của máy Client........................................................69
Hình 3. 29: Cấu hình địa chỉ IP cho máy Client..................................................70
Hình 3. 30: Reporting của OPNsense cho 2 card mạng WAN1 và WAN2..........70
Hình 3. 31: Tạo một thư mục web trong ổ c........................................................71
Hình 3. 32: Tạo nội dung cho trang web..............................................................71
Hình 3. 33: Tạo website.......................................................................................72
Hình 3. 34: Nội dung trang web vừa tạo..............................................................72
Hình 3. 35: Dịng lệnh của kali linux...................................................................73
Hình 3. 36: Thực hiện tấn công dos.....................................................................74
6
Hình 3. 37: CPU và trng web của server 2 khi bị tấn cơng..................................75
Hình 3. 38: CPU của server 2 khi đã cân bằng tải...............................................75
LỜI NÓI ĐẦU
Sự phát triển của ngành dịch vụ web khiến cho số lượng người truy cập vào
các website ngày càng tăng mạnh, đặc biệt là các mạng xã hội ảo hoặc website
chia sẻ video trực tuyến. Các website này không chỉ cho phép người dùng trao
đổi và chia sẻ thông tin, giao lưu và kết bạn mà còn cho phép người dùng lưu trữ
tài liệu, tìm kiếm bạn bè, người thân, hay thậm chí cả đối tác kinh doanh. Mặc
dù chỉ mới bắt đầu phát triển trong vòng 5 năm trở lại đây nhưng mạng xã hội và
các trang chia sẻ video trực tuyến đã có số lượng người dùng lên đến con số
7
hàng trăm triệu và vẫn đang tăng với tốc độ chóng mặt. Sự cạnh tranh giữa các
website mạng xã hội và các trang chia sẻ video trực tuyến là không thể tránh
khỏi, bất cứ một nhà quản trị nào cũng muốn tăng số lượng người dùng cũng
như muốn website của mình ngày càng nổi tiếng. Để làm được điều đó, ngoài
nội dung hấp dẫn và phong phú, website cần phải đáp ứng được nhu cầu của
người dùng một cách tốt nhất. Với 100 triệu video được xem mỗi ngày, tính
trung bình mỗi giây có gần 1200 video được xem trên Youtube, con số này địi
hỏi Youtube phải có một hệ thống server mạnh mẽ và linh hoạt. Một website với
số lượng truy cập ngày càng tăng sẽ khiến máy chủ của website đó khơng đáp
ứng được hết nhu cầu của người dùng và bị quá tải.
Để làm được điều này, các nhà quản trị hệ thống phải đảm bảo cho hệ
thống của mình hoạt động tốt nhất có thể, do đó nhu cầu cân bằng tải cho server
là vơ cùng cần thiết. Tuy nhiên việc lựa chọn hệ thống cân bằng tải là việc
khơng hề dễ dàng bởi vì chúng có sự cạnh tranh về chất lượng cũng như giá
thành. Và OPNSence được biết đến là một hệ thống cân bằng tải mạnh mẽ đáp
ứng được các nhu cầu khắt khe của các nhà quản trị hệ thống và quan trọng hơn
hết là nó hồn tồn miễn phí.
Xuất phát từ thực tế với các vấn đề rất đáng chú ý được nêu ở trên, em đã
chọn đề tài” Tìm hiểu và triển khai giải pháp cân bằng tải cho máy chủ web
sử dụng OPNsence” làm đồ án tốt nghiệp đại học của mình.
Đồ án gồm 3 chương cụ thể như sau:
Chương 1: Tổng quan về cân bằng tải
Chương này trình bày khái quát về cân bằng tải bao gồm các khái niệm,
thuật toán, ứng dụng hoạt động và các sản phẩm của cân bằng tải.
Chương 2: Tìm hiểu về OPNsense và các giải pháp cân bằng tải của
OPNsense
8
Chương này trình bày tổng quan về OPNsense bao gồm các khái niệm, các
thành phần chính của OPNsense và các giải pháp cân bằng tải của OPNsense.
Chương 3: Triển khai thử nghiệm dịch vụ cân bằng tải cho hệ thống
máy chủ web sử dụng OPNsense
Chương này sẽ triển khai thử nghiệm dịch vụ cân bằng tải cho hệ thống
máy chủ web sử dụng OPNsense.
Chương 4: Kết luận và hướng phát triển của đề tài
Chương này sẽ tổng hợp lại kết quả của 3 chương đã tìm hiểu được và đưa
ra phương hướng phát triển của đề tài.
CHƯƠNG I: TỔNG QUAN VỀ CÂN BẰNG TẢI
1.1
Giới thiệu về cân bằng tải
Một chương trình máy chủ được cài đặt trên một hệ thống
được nhắm mục tiêu có nguồn lực hạn chế. Những tài nguyên
này bao gồm hệ thống bộ nhớ, dung lượng ổ cứng và tốc độ xử
lý. Từ dung lượng máy chủ bị hạn chế, vì vậy nó chỉ có thể xử lý
số lượng khách hàng nhất định. Với số lượng khách hàng nhiều
hơn một máy chủ sẽ bị quá tải và điều đó có thể dẫn đến chậm
giảm hiệu suất, treo và sự cố. Do đó, nó là rất quan trọng để
cân bằng tải trên máy chủ và điều này có thể đạt được bằng
cách giữ các bản sao của máy chủ và phân phối tải trong số họ
hoặc một website với khả năng mở rộng nghĩa là, khi số lượng
người dùng tăng lên trong một khoảng nhất định, website vẫn
đáp ứng được nhu cầu, thêm nữa, website có khả năng dễ dàng
nâng cấp lên để dễ dàng phù hợp với tình hình mới. Tại thời
điểm ban đầu,các website với khả năng mở rộng lớn thường
được thiết kế để phục vụ hàng chục triệu yêu cầu mỗi ngày, sau
9
đó sẽ được nâng cấp để phục vụ thêm, nếu như có nhu cầu. Để
phục vụ hàng chục triệu lượt truy cập mỗi ngày, website cần
phải đáp ứng được yêu cầu về khả năng mở rộng (scalability),
về hiệu năng (Performance), tính đáp ứng (Responsiveness),
tính sẵn có cao ( Hightavailability), tránh được thời gian chết
của hệ thống (down time impact) khả năng bảo trì tốt và được
xây dựng với giá thành tốt nhất.
Cân bằng tải là quá trình làm cho một nhóm các máy chủ
tham gia vào cùng một dịch vụ và thực hiện cùng một cơng
việc. Mục đích chung của cân bằng tải là tăng tính khả dụng, cải
thiện thơng lượng, độ tin cậy, duy trì sự ổn định, tối ưu hóa việc
sử dụng tài nguyên và cung cấp khả năng chịu lỗi. Khi số lượng
máy chủ tăng lên, nguy cơ thất bại ở bất cứ đâu tăng lên và
những lỗi đó phải được xử lý cẩn thận. Khả năng duy trì dịch vụ
khơng bị ảnh hưởng trong bất kỳ số lần thất bại đồng thời được
gọi là tính sẵn sàng cao. Cân bằng tải trọng có nghĩa là phân
phối đồng đều tổng tải trong số tất cả các thực thể phục vụ.
Cân bằng tải là rất cần thiết trong các hệ thống máy tính phân
tán để cải thiện chất lượng dịch vụ bằng cách quản lý tải của
khách hàng đang thay đổi theo thời gian. Nhu cầu, yêu cầu của
các thực hiện đến được phân phối tối ưu giữa các tài nguyên hệ
thống có sẵn để tránh tắc nghẽn tài nguyên cũng như sử dụng
đầy đủ các tài nguyên có sẵn. Cân bằng tải cũng cung cấp tỷ lệ
ngang, ví dụ, thêm tài ngun tính tốn để giải quyết tải tăng.
Hoặc nếu một web server duy nhất này gặp vấn đề, người
dùng sẽ không thể truy cập vào website được nữa. Ngồi ra,
nếu có nhiều người dùng cố gắng truy cập vào server cùng một
lúc thì sẽ xảy ra quá tải, khiến thời gian tải website chậm đi
hoặc kết nối bị gián đoạn. Điều này có thể khắc phục bằng cách
10
thêm vào hệ thống cân bằng tải ít nhất một web server hỗ trợ
bổ sung trên backend. Thông thường, tất cả các nội dung mà
người dùng nhận được là như nhau bất kể họ đang kết nối với
server nào.
Cân bằng tải cũng được cung cấp bởi một số hệ điều hành.
Cân bằng tải mạng của Microsoft (NLB), một giải pháp dựa trên
phần mềm cho phép bạn dễ dàng phân cụm nhiều máy. Có
nhiều phần mềm cân bằng tải nguồn mở và phần mềm cân
bằng tải có sẵn cho Linux, chẳng hạn như Linux Virtual Server,
Ultra Monkey, Red Hat Cluster Suite, High Av Available Linux
(Linux HA); có thể được sử dụng hiệu quả với hầu hết các dịch
vụ mạng, bao gồm FTP, HTTP, DNS, SMTP, POP / IMAP, VoIP, v.v.
Hình 1. 1 Hệ thống cân bằng tải
1.1.1Vai trò của cân bằng tải
Một cơ sở hạ tầng website khơng có cân bằng tải thông
thường sẽ hoạt động như sau:
11
Hình 1. 2 Mơ tải hoạt động của một website khơng có cân bằng
tải
Trong ví dụ này, người dùng kết nối trực tiếp đến web server
(tại yourdomain.com). Nếu web server duy nhất này gặp vấn
đề, người dùng sẽ không thể truy cập vào website được nữa.
Ngồi ra, nếu có nhiều người dùng cố gắng truy cập vào server
cùng một lúc thì sẽ xảy ra quá tải, khiến thời gian tải website
chậm đi hoặc kết nối bị gián đoạn.
Điều này có thể khắc phục bằng cách thêm vào hệ thống
cân bằng tải và ít nhất một web server hỗ trợ bổ sung trên
backend. Thông thường, tất cả các nội dung mà người dùng
nhận được là như nhau bất kể họ đang kết nối với server nào.
Hình 1. 3: Mơ tả hoạt động của một website có cân bằng tải
12
Trong ví dụ ở trên, hệ thống cân bằng tải sẽ chuyển tiếp yêu
cầu của người dùng đến một server phụ trợ và đáp ứng trực tiếp
yêu cầu đó. Vị trí nếu trục trặc có thể gây ảnh hưởng cho cả hệ
thống bây giờ chính là vị trí cân bằng tải.
Tóm lại, một load balancer sẽ thực hiện các chức năng chính
sau đây:
Chặn lưu lượng mạng đến một trang web. Bản thân thiết bị
cân bằng tải có thể là một Proxy, một Firewall tầng ứng dụng,
nó sẽ là đối tượng đầu tiên nhận các yêu cầu trước khi chia tải,
do đó chức năng này được coi như một chức năng thiết yếu của
một cân bằng tải.
Tách lưu lượng thành các yêu cầu riêng biệt và quyết định
máy chủ nào nhận các yêu cầu đó. Đây là chức năng chủ chốt
của cân bằng tải. Tùy vào thuật toán áp dụng mà sẽ có từng
cách chia cụ thể cho mỗi máy.
Cung cấp khả năng nhận thức nội dung phân tán bằng cách
đọc URL, chặn cookies, và biên dịch. Đây được coi như là một
trong những tiêu chí chia tải của hệ thống.
1.1.2Các loại cân bằng tải
Cân bằng tải của các máy chủ có thể được thực hiện theo những cách khác
nhau. Các phương pháp cân bằng tải này có thể được thiết lập trong bộ cân bằng
tải dựa trên các loại cân bằng tải có sẵn. Có nhiều thuật tốn khác nhau được sử
dụng để phân phối tải giữa các máy chủ có sẵn.
Các kỹ thuật cân bằng tải thường được sử dụng để cân bằng khối lượng công
việc của các hệ thống phân tán. Các kỹ thuật cân bằng tải được phân loại thành
hai loại cụ thể là Cân bằng tải tĩnh và Cân bằng tải động. Mục đích chính của
các kỹ thuật cân bằng tải, dù là tĩnh hay động là để cải thiện hiệu suất bằng cách
13
phân phối lại khối lượng công việc giữa các nút máy chủ có sẵn. Kỹ thuật cân
bằng tải động phản ứng với trạng thái hệ thống hiện tại, trong khi kỹ thuật cân
bằng tải tĩnh chỉ phụ thuộc vào hành vi trung bình của hệ thống để cân bằng
khối lượng công việc của hệ thống. Điều này làm cho kỹ thuật động lực học
phức tạp hơn so với kỹ thuật tĩnh. Nhưng, các chính sách cân bằng tải động đã
được cho là có hiệu suất tốt hơn các chính sách tĩnh.
- Kỹ thuật cân bằng tải tĩnh
Trong kỹ thuật cân bằng tải tĩnh này, hiệu suất của các nút máy chủ được
xác định ở giai đoạn đầu của quy trình. Sau đó, dựa trên hiệu suất của chúng, tải
cơng việc được phân phối bởi nút chủ. Các nút tới đánh giá cơng việc được phân
bổ của chúng và sau đó gửi kết quả của chúng đến nút chính.
Một cơng việc ln được thực thi trên nút máy chủ mà nó được gán là các kỹ
thuật cân bằng tải tĩnh là khơng khinh thường. Mục đích chính của phương pháp
cân bằng tải tĩnh là giảm thời gian thực hiện chung của một chương trình đồng
thời giảm thiểu độ trễ truyền thơng. Một nhược điểm thông thường của tất cả
các phương thức tĩnh là lựa chọn cuối cùng của nút máy chủ để phân bổ quy
trình được thực hiện khi quy trình được tạo ban đầu và không thể thay đổi trong
quá trình thực hiện quy trình để thực hiện các biến thể trong tải hệ thống.
- Kỹ thuật cân bằng tải động
Các kỹ thuật cân bằng tải động phụ thuộc vào thông tin tải hệ thống gần
đây và xác định sự phân công công việc cho các nút máy chủ trong thời gian
chạy. Trong trường hợp tiếp cận động, các quyết định cân bằng tải dựa trên trạng
thái hiện tại của hệ thống và do đó tải cơng việc được phép chuyển động từ nút
quá tải sang nút dưới tải để nhận phản hồi nhanh hơn từ các nút máy chủ. Khả
năng đáp ứng các biến thể trong hệ thống là ưu điểm chính của cân bằng tải
động. Nhưng, vì bộ cân bằng tải phải liên tục theo dõi tải hệ thống hiện tại trên
tất cả các nút, nó trở thành một chi phí phụ vì việc giám sát tiêu tốn chu kỳ CPU.
Vì vậy, một quyết định đúng đắn phải được đưa ra khi gọi hoạt động giám sát
của bộ cân bằng tải
14
Trong phần dưới đây, nói về các chính sách khác nhau của cân bằng tải động và
nói về các loại khác nhau của các kỹ thuật cân bằng tải động hiện có cùng với
các ưu điểm và nhược điểm tương đối của chúng.
1.1.3 Cân bằng tải sử dụng phần cứng và cân bằng tải phần
mềm
- Cân bằng tải sử dụng phần cứng:
Bộ cân bằng tải bằng phần cứng sẽ thể hiện một địa chỉ IP ảo
đối với mạng bên ngoài, địa chỉ này mã hóa đến các địa chỉ của
mỗi máy trong một cluster. Chính vì vậy tồn bộ các máy tính
trong cluster sẽ chỉ được xem như là một máy duy nhất đối với
thế giới bên ngoài. Bộ cân bằng tải sử dụng phần cứng thường
hoạt động ở tầng mạng và hoạt động dựa trên sự định tuyến, sử
dụng một trong các phương pháp: Định tuyến trực tiếp (direct
routing), tunnelling, Network address translation (NAT).
Khi một request đến bộ cân bằng tải, nó sẽ ghi lại header của
request để trỏ đến các máy khác trong cluster. Nếu một máy
nào đó bị gỡ bỏ từ cluster thì request sẽ khơng chạy một cách
rủi ro việc “hit” vào máy server đã chết này, vì tất cả các máy
server khác trong cluster xuất hiện đều có cùng địa chỉ IP. Địa
chỉ này duy trì giống nhau thậm chí nếu một nút nào đó trong
cluster bị hỏng. Khi một đáp trả được trả về, client sẽ xen đáp
trả đang đến từ bộ cân bằng tải phần cứng. Hay nói theo cách
khác thì người dùng sẽ xử lý với một máy tính đó là bộ cân bằng
tải sử dụng phần cứng.
15
Hình 1. 4: Cân bằng tải sử dụng phần cứng
- Cân bằng tải sử dụng phần mềm:
Một bộ cân bằng tải phần cứng giải quyết được vấn đề lost
session, nhờ vào cơ chế chuyển đổi dự phịng của nó. Tuy nhiên,
cái giá phải trả cho sự lựa chọn này là quá đắt. Một thiết bị BigIP 6800 của F5 Networks có giá lên tới $49,995, hay thiết bị của
Citrix với giá $49,999,00. Điều này là không thể đối với các hệ
thống vừa và nhỏ, chính vì vậy mà sự lựa chọn tối ưu hơn ở đây
là sử dụng một phần mềm load balancing với giá vừa phải, hay
sử dụng các phần mềm load balancing mã nguồn mở.
Tuy nhiên, giá của các phần mềm được cung cấp bởi F5 hay
Citrix vẫn còn là thách thức lớn đối với các nhà phát triển web,
tất nhiên các phần mềm này hoạt động rất hiệu quả và tương
thích với nhiều mơi trường khác nhau. Với phần mềm do các
cơng ty hay các nhóm nhỏ hơn thì chất lượng sẽ kém đi, chính
16
vì vậy nếu khơng có $20 để sử dụng một giải pháp của F5 thì
người ta thường sẽ chọn các phần mềm mã nguồn mở, sau đó
tinh chỉnh cho phù hợp với hệ thống của mình. Có rất nhiều
phần mềm như vậy trên thị trường, chẳng hạn như HAPoxy,
Squid,...
1.1.4Các tính năng của cân bằng tải
Cân bằng tải phần cứng và phần mềm có rất nhiều tính năng
đặc biệt như:
- Asymmetric load (Khơng đối xứng tải): Tỷ lệ có thể được
phân công theo cách thủ công để gây ra một số máy chủ phụ
trợ để có được một phần lớn của khối lượng công việc hơn
những người khác.
- Priority activation (Ưu tiên kích hoạt): Khi số lượng các
máy chủ có sẵn giảm xuống dưới một số lượng nhât định, hoặc
quá tải, máy chủ dự phịng có thể được đưa vào sử dụng
(online).
- SSL offload và Acceleration: Ứng dụng SLL có thể là một
gánh nặng lớn về tài nguyên của một máy chủ web, đặc biệt là
vào CPU và người dùng cuối có thể thấy một phản ứng chậm.
- Distributed Denial of Service (DdoS): Bảo vệ khỏi các cuộc
tấn công, cân bằng tải có thể cung cấp các tính năng như SYN
cookie và trì hỗn binding.
1.1.5Các loại giao thức được xử lý trong cân bằng tải
Có 4 loại giao thức chính:
- HTTP: Chuẩn cân bằng HTTP trực tiếp yêu cầu dựa trên cơ chế HTTP
chuẩn. Bộ cân bằng tải đặt các tiêu đề X-Forwarded-For, X-Forwarded-Proto, và
X-Forwarded-Port để cung cấp các thông tin về các yêu cầu gốc tới hệ thống
backend.
17
- HTTPS: cân bằng HTTPS hoạt động tương tự như HTTP, với sự bổ sung
mã hóa. Mã hóa được xử lý theo một trong hai cách: một là duy trì mã hóa với
việc cho phép SSL đi từ đầu đến cuối hệ thống, hai là đặt bộ giải mã trên hệ
thống cân bằng tải và gửi dữ liệu không mã hóa đến cuối hệ thống.
- TCP: Đối với các ứng dụng không sử dụng HTTP hoặc HTTPS, lưu
lượng TCP cũng có thể được cân bằng. Chẳng hạn như lượng truy cập vào một
cụm cơ sở dữ liệu có thể được mở rộng trên tất cả các máy chủ.
- UDP: Gần đây, một số hệ thống đã hỗ trợ cân bằng tải cho giao thức
Internet cốt lõi như DNS và syslogd sử dụng UDP.
1.1.6Hoạt động của cân bằng tải
- Khả năng mở rộng: là khả năng của một ứng dụng có thể hỗ trợ được số
lượng ngày một tăng. Nếu nó cần 10ms để một ứng dụng có thể đáp trả cho một
yêu cầu thì khoảng thời gan sẽ là bao lâu để nó đáp trả đến 10.000 yêu cầu cùng
một lúc? Khả năng mở rộng vô hạn sẽ cho phép nó đáp trả các yêu cầu này chỉ
trong khoảng 10ms. Như vậy, khả năng mở rộng là đơn vị đo sự kết hợp của các
hệ số, đó là số lượng người dùng đồng thời một cụm server có thể hỗ trợ và thời
gian cụm server cần để sử lý một yêu cầu. Thiết kế website với khả năng mở
rộng cao là yêu cầu sống còn đối với hầu hết các công ty dịch vụ web hiện nay,
để tồn tại và phát triển, một website cần phải đáp ứng được yêu cầu của người
dùng trong thời gian mà họ mong muốn.
- Hiệu năng: là khả năng mà hệ thống sử dụng tài ngun của nó một cách
tốt nhất. Tính thực hiện được đo bằng lượng cơng việc có ích mà hệ thống thực
hiện được với một nguồn tài nguyên nhất định, chẳng hạn như nếu 2 server có
cấu hình giống nhau, server nào có thể phục vụ được nhiều người dùng hơn thì
máy đó có tính thực hiện cao hơn.
- Khả năng có sẵn: Cao có thể được hiểu là tình trạng dư thừa. Nếu một
máy chủ không thể quản lý một yêu cầu thì các máy chủ khác trong cluster đó
có quản lý được nó hay khơng? Trong một hệ thống có khả năng có sẵn cao, nếu
một web server bị lỗi thì một web server khác sẽ tiếp quản ngay để xử lý yêu
18
cầu. Nghĩa là nếu người dùng đang làm việc với một server mà server đó bị lỗi,
tồn bộ thơng tin trong phiên làm việc của người đó sẽ được chuyển qua cho
một server khác đảm nhiệm. Như vậy trong bất cứ trường hợp nào, người dùng
truy cập vào các dịch vụ của hệ thống đều được đáp ứng, chính vì vậy mà người
dùng luôn cảm thấy được phục vụ tốt nhất.
- Tính đáp ứng: ở đây có thể hiểu là khả năng phục vụ người dùng của hệ
thống, làm sao để hệ thống có thể phục vụ người dùng tại một thời điểm, và thời
gian cho đáp ứng đó là bao nhiêu. Hệ thống gửi response về càng nhanh thì tính
đáp ứng của nó càng cao, ngược lại, nếu thời gian trì hỗn càng lớn, sẽ khiến
người dùng thất vọng, và dẫn tới việc họ tin là trang web đang bị hỏng, điều này
rất có hại , vì nếu người dùng mất niềm tin, họ sẽ không quay trở lại trang web
đó nữa. Chẳng hạn như khi người dùng truy cập vào một trang web, nếu họ phải
chờ quá lâu, họ sẽ chuyển qua làm công việc khác, đôi khi họ quên mất mình
đang truy cập vào một dịch vụ web và đóng ln trình duyệt, hoặc họ quay trở
lại sau một thời gian khá lâu, điều này rất không tốt vì hệ thống mà họ truy cập
vẫn hoạt động và lưu giữ session mà không phục vụ cho ai cả, đó là một sự lãng
phí lớn. Ở đây cần phải hiểu rằng tính đáp ứng và tính thực hiện là độc lập với
nhau, một hệ thống có hiệu năng tốt vẫn có thể đáp ứng rất tệ.
- Downtime impact: là một vấn đề mà tất cả các hệ thống đều gặp phải, đó
là thời gian mà hệ thống bị “chết”, khi mà một số các chức năng chính bị down,
đây là vấn đề có tính tuần hồn đối với các nhà phát triển hệ thống. Một hệ
thống tốt sẽ giúp người dùng truy cập nhanh, làm họ cảm thấy hài lòng, dẫn đến
số lượng người dùng tăng lên, và khi số lượng người dùng tăng lên hệ thống sẽ
bị tắc nghẽn và nhà quản trị sẽ phải đối phó với vấn đề đó, giải quyết nó nhằm
tạo ra hệ thống hoạt động tốt hơn, cứ như vậy vòng quay lại tiếp tục. Điều quan
trọng là một hệ thống tốt cần phải kéo thời gian chu kỳ này lên, nghĩa là làm sao
cho hệ thống hoạt động được tốt nhất trong một thời gian đủ dài trước khi cần
phải nâng cấp, cũng như làm sao để xây dựng được một hệ thống có khả năng
mở rộng lớn.
19
Cùng với các đòi hỏi này, hệ thống cũng cần phải có thể dễ dàng bảo trì và
giá thành vừa phải.
1.1.7Một số cân bằng tải trong thực tế
- Nginx:
Nginx hay còn đọc là “engine-ex”, là một web server mã
nguồn mở, do ban đầu Nginx đã rất thành công với webserver,
nên bây giờ nó cũng được sử dụng như một reverse proxy, HTTP
cache và load balancing.
Một số các công ty lớn có tên tuổi sử dụng phần mềm nginx
như Autodesk, T-mobile, Gitlab, DuckDuckGo, Microsoft, Google,
…và rất nhiều công ty khác nữa.
Nginx ban đầu được tạo ra bởi Igor Sysoev, lần phát hành
đầu tiên vào tháng 10 năm 2004. Igor đã từng nghĩ rằng phần
mềm chính là câu trả lời cho bài toán C10K hay rõ hơn là bài
toán liên quan đến hiệu năng để xử lý 10,000 kết nối đồng thời.
Do điểm cốt lõi của NginX chính là tối ưu hóa hiệu suất theo
quy mô, nên NginX thường vượt trội hơn nhiều so với các đối
thủ web server phổ biến khác trong các bài kiểm tra
benchmark. Đặc biệt trong các tình huống với những nội dung
tĩnh hoặc các truy vấn đồng thời cao, đó chính là lý do rất nhiều
các nhà cung cấp hosting dùng NginX để làm máy chủ cung cấp
dịch vụ của họ.
NginX được xây dựng để giải bài toán sử dụng bộ nhớ thấp
và cho phép các kết nối đồng thời cao. Thay vì tạo ra các
process mới cho mỗi truy vấn web, NginX sử dụng cách tiếp cận
khác là bất đồng bộ và hướng sự kiện trong đó các truy vấn
được xử lý chỉ bởi một luồng (thread).
20
Hình 1. 5: Tổng quan về kiến trúc của Nginx
Các phương pháp cân bằng tải trong Nginx
+ Round-robin: các request tới máy chủ được phân tán
theo kiểu vòng tròn.
+ Least-connected: các yêu cầu tiếu theo được gán cho
máy chủ có số lượng kết nối hoạt động ít nhất.
+ Ip-hash: một hàm băm được xử dụng để xác định máy
chủ nào được chọn request tiếp theo (dựa trên địa chỉ IP của
máy khách).
- Pfsense:
PfSense là một ứng dụng có chức năng định tuyến, tường
lửa và miễn phí, ứng dụng này sẽ cho phép bạn mở rộng mạng
của mình mà khơng bị thỏa hiệp về sự bảo mật. Bắt đầu vào
năm 2004, khi monowall mới bắt đầu chập chững – đây là một
dự án bảo mật tập trung vào các hệ thống nhúng – pfsense đã
có hơn 1 triệu lượt download và được sử dụng để bảo vệ các
mạng có tất cả kích cỡ, từ mạng gia đình đến các mạng lớn của
các cơng ty/doanh nghiệp. Ứng dụng này có một cộng đồng
phát triển rất tích cực và nhiều tính năng đang được bổ sung
trong mỗi lần phát hành nhằm cải thiện hơn nữa tính bảo mật,
sự ổn định và khả năng linh hoạt của nó. Và là một trong số ít
những firewall có tính năng trạng thái, chỉ thường xuất hiện ở
21
những firewall thương mại lớn như Cisco ASA, Checkpoint,
Juniper …
Hình 1. 6: Tổng quan về pfsense
Hồn tồn miễn phí, giá cả là ưu thế vượt trội của tường lửa
pfSense. Tuy nhiên, rẻ khơng có nghĩa là kém chất lượng, tường
lửa pfSense hoạt động cực kỳ ổn định với hiệu năng cao, đã tối
ưu hóa mã nguồn và cả hệ điều hành. Cũng chính vì thế,
pfSense khơng cần nền tảng phần cứng mạnh.
Nếu doanh nghiệp khơng có đường truyền tốc độ cao, tường
lửa pfSense chỉ cần cài đặt lên một máy tính cá nhân là có thể
bắt đầu hoạt động. Điều đó càng góp phần làm giảm chi phí
triển khai, đồng thời tạo nên sự linh hoạt, tính mở rộng/sẵn sàng
chưa từng có, khi doanh nghiệp muốn có nhiều hơn một tường
lửa.
Không chỉ là một tường lửa, pfSense hoạt động như một
thiết bị mạng tổng hợp với đầy đủ mọi tính năng tồn diện sẵn
sàng bất cứ lúc nào. Khi có một vấn đề về hệ thống mạng phát
sinh, thay vì phải loay hoay tìm thiết bị và mất thời gian đặt
hàng, doanh nghiệp có thể kết hợp các tính năng đa dạng trên
22
pfSense để tạo thành giải pháp hợp lý, khắc phục sự cố ngay
lập tức.
Khơng kém phần quan trọng đó là khả năng quản lý. Tường
lửa pfSense được quản trị một cách dễ dàng, trong sáng qua
giao diện web.
Như vậy, tường lửa pfSense là sự kết hợp hoàn hảo và mạnh
mẽ, đem lại sự hợp lý cho các nhà tài chính, và sự tin tưởng cho
các nhà quản trị.
- OPNsense:
OPNsense là mã nguồn mở, phần mềm định tuyến và tường
lửa dựa trên FreeBSD được phát triển bởi Deciso, một công ty ở
Hà Lan chuyên sản xuất phần cứng và bán các gói hỗ trợ cho
OPNsense. Nó là một nhánh của pfSense, lần lượt được rẽ
nhánh từ monowall, được xây dựng trên FreeBSD. Nó được ra
mắt vào tháng 1 năm 2015. Khi monowall đóng cửa vào tháng 2
năm 2015, người tạo ra nó, Manuel Kasper đã giới thiệu cộng
đồng nhà phát triển của mình cho OPNsense. OPNsense có giao
diện dựa trên web và có thể được sử dụng trên nền tảng i386 và
x86-64. Cùng với hoạt động như một tường lửa, nó có khả năng
định hình lưu lượng, cân bằng tải và khả năng của mạng riêng
ảo và những thứ khác có thể được thêm vào thông qua các
plugin.
23
Hình 1. 7: OPNsense phiên bản 19.7
OPNsense là một nền tảng bảo mật đầy đủ tính năng bảo
mật mạng của bạn với các tính năng cao cấp như ngăn chặn
xâm nhập nội tuyến, mạng riêng ảo, xác thực hai yếu tố, cổng
thông tin bị giam giữ và lọc proxy web. Thiết lập tính sẵn sàng
cao tùy chọn đảm bảo hiệu suất mạng ổn định với chuyển đổi
dự phòng tự động và trạng thái đồng bộ hóa, giảm thiểu gián
đoạn. Giữ mạng của bạn an tồn và các gói tốt chạy.
1.1.8Ưu điểm của cân bằng tải
- Ưu điểm:
+ Tăng khả năng đáp ứng, tránh tình trạng quá tải trên
máy chủ, đảm bảo tính linh hoạt và mở rộng cho hệ thống.
+ Tăng độ tin cậy và khả năng dự phòng cho hệ thống.
+ Tăng tính bảo mật cho hệ thống: thơng thường khi người
dùng gửi yêu cầu dịch vụ đến hệ thống, yêu cầu đó sẽ được xử
lý trên bộ cân bằng tải.
+ Việc áp dụng hệ thống cân bằng tải giúp tối ưu lượng
băng thông của hệ thống, đảm bảo hệ thống được vận hành tốt
giảm thiểu các nguy cơ bị tấn công DDOS vào hệ thống.
24
+ Giúp việc tra cứu tìm những thơng tin cần thiết một cách
dễ dàng nhanh chóng và thuận tiện.
+ Tối đa hoá Uptime:
Cân Bằng Tải giúp dàn trải lưu lượng truy cập và truy xuất giữa
hai hoặc nhiều máy chủ. Trong trường hợp lỗi sự cố xảy ra tại
một điểm máy chủ, Cân Bằng Tải sẽ phát hiện vấn đề và di
chuyển lưu lượng truy cập đến các máy chủ online cịn lại, dịch
vụ cho người dùng sẽ khơng bị gián đoạn.
Cơ chế cân bằng tải của Datacenter rất linh động, được thiết kế
để tự động xử lý sự cố. Nếu cân bằng tải thất bại, hệ thống
quản lý dự phịng sẽ xử lý lỗi trong khi vẫn duy trì hoạt động
cùng IP ảo (VIP) để giảm thiểu gián đoạn hoạt động.
+ Giúp Datacenter linh hoạt trong mở rộng:
Khi khách hàng có nhu cầu mở rộng hệ thống Datacenter, Cân
Bằng Tải sẽ tự động điều phối giữa các máy chủ cũ và mới để
xử lý các yêu cầu dịch vụ mà khơng làm gián đoạn q trình
hoạt động, xử lý.
+ Tăng tính bảo mật cho Datacenter
Thơng thường khi người dùng gửi yêu cầu dịch vụ lên hệ thống
sẽ được cân bằng tải tiếp nhận rồi mới phân chia cho các máy
chủ bên trong xử lý. Quá trình phản hồi yêu cầu cũng thông qua
thành phần Cân Bằng Tải. Bằng cách đó có thể ngăn chặn người
dùng giao tiếp trực tiếp với các máy chủ, ẩn đi các thông tin và
cấu trúc mạng nội bộ, ngăn ngừa luôn các cuộc tấn công trên
mạng hoặc truy cập trái phép.
+ Tăng khả năng mở rộng
25