Kỹ thuật cân bằng tải mạng (NLB - Network Load Balancing)
NLB mở rộng hiệu năng của các server ứng dụng, chẳng
hạn như Web server, nhờ phân phối các yêu cầu của client
cho các server trong nhóm (cluster). Các server (hay còn
gọi là host) đều nhận gói IP đến, nhưng gói chỉ được xử lý
bởi một server nhất định.
Các host trong nhóm sẽ đồng thời đáp ứng các yêu cầu
khác nhau của các client, cho dù một client có thể đưa ra
nhiều yêu cầu. Ví dụ, một trình duyệt Web cần rất nhiều
hình ảnh trên một trang Web được lưu trữ tại nhiều host
khác nhau trong một nhóm server. Với kỹ thuật cân bằng
tải, quá trình xử lý và thời gian đáp ứng client sẽ nhanh
hơn nhiều.
Mỗi host trong nhóm có thể định ra mức tải mà nó sẽ xử
lý hoặc tải có thể phân phối một cách đồng đều giữa các
host. Nhờ sử dụng việc phân phối tải này, mỗi server sẽ
lựa chọn và xử lý một phần tải của host. Tải do các client
gửi đến được phân phối sao cho mỗi server nhận được số
lượng các yêu cầu theo đúng phần tải đã định của nó.
Sự cân bằng tải này có thể điều chỉnh động khi các host
tham gia vào hoặc rời khỏi nhóm. Đối với các ứng dụng
như Web server, có rất nhiều client và thời gian mà các
yêu cầu của client tồn tại tương đối ngắn, khả năng của kỹ
thuật này nhằm phân phối tải thông qua ánh xạ thống kê
nhận bởi host đó. Nhờ đó, các yêu cầu của client sẽ được
phân vùng và cân bằng tải giữa các host trong nhóm.
Hệ thống cân bằng tải chạy như một trình điều khiển
mạng (về mặt logic) nằm dưới các giao thức lớp ứng dụng
như HTTP hay FTP. Hình sau cho thấy việc triển khai hệ
thống cân bằng tải như một trình điều khiển trung gian
trong chồng giao thức mạng của Windows2000 tại mỗi
host trong nhóm.
Kiến trúc này tối đa hoá dung lượng nhờ việc sử dụng
mạng quảng bá để phân phối lưu lượng mạng đến tất cả
các host trong nhóm và loại bỏ sự cần thiết phải định
tuyến các gói đến từng host riêng lẻ.
Do thời gian lọc các gói không mong muốn diễn ra nhanh
hơn thời gian định tuyến các gói (định tuyến bao gồm các
quá trình nhận gói, kiểm tra, đóng gói lại và gửi đi), kiến
trúc này cung cấp thông lượng cao hơn các giải pháp dựa
trên bộ điều phối. Khi tốc độ của mạng và server tăng lên,
thông lượng cũng tăng theo tỉ lệ thuận, do đó loại bỏ được
bất cứ sự lệ thuộc nào vào việc định tuyến dựa trên các
phần cứng đặc biệt.
Trên thực tế, bộ cân bằng tải có thể đạt thông lượng
250Mbit/s trong các mạng Gigabit. Một ưu điểm cơ bản
khác của kiến trúc phân tán hoàn toàn là độ khả dụng
được tăng cường với (N-1) cách khắc phục lỗi trong một
nhóm có N host. Các giải pháp dựa trên bộ điều phối tạo
ra một điểm lỗi kế thừa mà chỉ có thể được khắc phục
trễ và phụ phí (overhead) nhờ tăng số lượng gói mà
TCP/IP có thể gửi trong một kết nối.
Để có được những cải thiện về hiệu năng này, NLB thiết
lập và quản lý một tập hợp các bộ đệm gói và các ký hiệu
(descriptor) được sử dụng để phối hợp các hoạt động của
TCP/IP và trình điều khiển NDIS.
Phân phối lưu lượng trong nhóm
NLB sử dụng hai lớp broadcast hoặc multicast để phân
phối đồng thời lưu lượng mạng đến tất cả các host trong
nhóm. Trong chế độ hoạt động mặc định là unicast, NLB
sẽ gán địa chỉ trạm làm việc (địa chỉ MAC) cho card mạng
để card mạng có thể hoạt động (card này gọi là card
nhóm ? cluster adapter), và tất cả các host trong nhóm
được gán cùng một địa chỉ MAC.
Các gói đến do đó được nhận bởi tất cả các host trong
nhóm và chuyển gói tới trình điều khiển cân bằng tải để
lọc. Để đảm bảo tính duy nhất, địa chỉ MAC được dẫn xuất
từ địa chỉ IP chính của nhóm. Ví dụ, với địa chỉ IP chính
của nhóm là 1.2.3.4, địa chỉ MAC unicast được đặt là 02-
BF-1-2-3-4.
Trình điều khiển cân bằng tải sẽ tự động sửa địa chỉ MAC
của card nhóm bằng cách thiết lập một thực thể đăng ký
và tái nạp trình điều khiển card nhóm. Hệ điều hành
không cần phải khởi động lại. Nếu các host trong cluster
được gắn vào một thiết bị chuyển mạch (swicth) chứ
truyền. Hạn chế này có thể tránh được bằng cách thêm
một card mạng thứ hai cho mỗi host. Trong cấu hình này,
NLB sử dụng một card mạng trên mạng con nhận các yêu
cầu của client và một card mạng khác thường được đặt
tách biệt trên mạng con cục bộ để trao đổi thông tin giữa
các host trong nhóm và với các server cơ sở dữ liệu cũng
như các file server gốc. NLB chỉ sử dụng card nhóm để
truyền các bản tin "heartbeat" và lưu lượng điều khiển từ
xa.
Chú ý rằng, trao đổi thông tin giữa các host trong nhóm
và các host ngoài nhóm không bao giờ bị ảnh hưởng bởi
chế độ unicast của NLB. Lưu lượng mạng đến một địa chỉ
IP dành riêng cho host (trong card nhóm) được nhận bởi
tất cả các host trong nhóm do chúng sử dụng chung một
địa chỉ MAC. Do NLB không bao giờ cân bằng tải lưu lượng
đối với các địa chỉ IP dành riêng, NLB sẽ lập tức phân phối
lưu lượng này đến TCP/IP trên host đã định. Các host khác
trong nhóm coi lưu lượng này là lưu lượng đã được cân
bằng tải và sẽ loại bỏ lưu lượng này. Chú ý, nếu lưu lượng
mạng đến quá lớn đối với các địa chỉ IP dành riêng có thể
ảnh hưởng đến hiệu năng khi hệ thống NLB hoạt động
trong chế độ unicast (tuỳ theo sự cần thiết đối với TCP/IP
trong việc loại bỏ các gói không mong muốn).
NLB cung cấp chế độ thứ hai để phân phối lưu lượng mạng
đến các host trong nhóm, chế độ multicast. Chế độ này
gán địa chỉ multicast 2 lớp cho card nhóm thay vì thay đổi
địa chỉ trạm làm việc của card. Ví dụ, địa chỉ MAC
multicast sẽ được gán là 03-BF-1-2-3-4 tương ứng với địa
vô số client tạo ra, điển hình là đối với các Web server.
Nếu số client và/hoặc các kết nối client tạo ra các tải quá
chênh lệch nhau trên server, thuật toán cân bàng tải sẽ ít
hiệu quả. Tuy nhiên, tính đơn giản và tốc độ của thuật
toán cho phép cung cấp hiệu nǎng rất cao bao gồm cả
thông lượng cao và thời gian đáp ứng ngắn trong một dải
rộng các ứng dụng client/server thông dụng.
NLB xử lý các yêu cầu của client bằng cách dẫn đường cho
một tỉ lệ phần trăm đã chọn những yêu cầu mới cho từng
host trong nhóm. Thuật toán không đáp ứng những thay
đổi về tải trên mỗi host (chẳng hạn như tải CPU hay vấn
đề sử dụng bộ nhớ). Tuy nhiên, quá trình ánh xạ sẽ được
thay đổi khi quan hệ thành viên trong nhóm thay đổi và tỉ
lệ phần trăm tải phân bố sẽ được tái cân bằng.
Khi xem xét một gói đến, tất cả các host thực hiện đồng
thời việc ánh xạ thống kê để xác định nhanh chóng host
nào sẽ xử lý gói đó. Quá trình ánh xạ sử dụng một hàm
ngẫu nhiên để tính mức ưu tiên của host dựa trên địa chỉ
IP và cổng đến của client cùng các thông tin trạng thái
khác để tối ưu hoá việc cân bằng tải. Host tương ứng sẽ
chuyển gói đó từ các tầng dưới lên tầng TCP/IP còn các
host khác sẽ loại bỏ gói này. Quá trình ánh xạ không thay
đổi trừ phi quan hệ giữa các host trong nhóm thay đổi, để
đảm bảo rằng địa chỉ IP và cổng đến của client cho trước
sẽ luôn được ánh xạ đến cùng một host trong nhóm.
ảnh hưởng sẽ được xử lý bởi host mới.
Do đó, các host nên được bổ sung vào nhóm tại những
thời điểm tải tăng quá mạnh nhằm tối thiểu hoá hiện
tượng ngắt quãng các phiên. Để tránh vấn đề này, trạng
thái phiên phải được quản lý bởi ứng dụng server sao cho
nó có thể được tái cấu trúc hay được trả lại từ bất kỳ một
host nào trong nhóm. Ví dụ, trạng thái phiên có thể được
đẩy đến server cơ sở dữ liệu và lưu trong các cookies của
client.
Quá trình hội tụ
Các host trong nhóm trao đổi định kỳ các bản tin
"heartbeat" multicast hoặc broadcast với nhau. Điều này
cho phép các host có thể giám sát trạng thái của nhóm.
Khi trạng thái của nhóm thay đổi (chẳng hạn như khi có
host gặp trục trặc, rời khỏi hoặc tham gia vào nhóm), NLB
kích hoạt một chu trình gọi là hội tụ trong đó các host trao
đổi bản tin "heartbeat" để định ra một trạng thái mới, bền
vững cho nhóm. Khi tất cả các đạt được sự "nhất trí" trạng
thái mới của chúng sẽ được thiết lập và những thay đổi
này sẽ được lưu vào nhật ký sự kiện.
Trong quá trình hội tụ, các host tiếp tục xử lý lưu lượng
mạng đến như mọi khi ngoại trừ lưu lượng đến host bị lỗi
không nhận được dịch vụ. Quá trình hội tụ kết thúc khi tất
cả các host trong nhóm có được một quan hệ thành viên
ổn định trong vòng một vài chu kỳ heartbeat.
tụ, theo mặc định cần 05 bản tin heartbeat không được
nhận. Giá trị này có thể thay đổi.
Điều khiển từ xa
Cơ chế điều khiển từ xa của NLB sử dụng giao thức UDP
và được gán cổng dịch vụ #2504. Các gói dữ liệu điều
khiển từ xa được gửi tới địa chỉ IP chính của nhóm. Do
trình điều khiển trên mỗi host trong nhóm xử lý các gói
này, chúng cần được định tuyến tới mạng con của nhóm
(thay vì tới một mạng con gốc mà nhóm đó gắn vào). Khi
các lệnh điều khiển từ xa được đưa ra trong nhóm, chúng
sẽ được phát quảng bá trên mạng con cục bộ.
Điều này đảm bảo tất cả các host trong nhóm đều có thể
nhận được chúng ngay cả khi nhóm chạy trong chế độ
unicast.
Hiệu năng cân bằng tải
Vai trò của NLB tác động đến hiệu năng của hệ thống có
thể được đánh giá dựa trên bốn tiêu chí chính sau:
- CPU overhead trên các host của nhóm - Phần trăm CPU
cần thiết để phân tích và lọc các gói của mạng (càng thấp
càng tốt).
Tất cả các giải pháp cân bằng tải đều cần sử dụng một
phần tài nguyên của hệ thống để xem xét gói đến và đưa
ra quyết định cân bằng tải và do đó ít nhiều ảnh hưởng
Trên thực tế, phương pháp này được sử dụng cho Web site
của Microsoft www.microsoft.com, hiện thường xuyên có 5
nhóm NLB, mỗi nhóm có 6 host và các host chạy ở mức
60% năng lực tối đa.
- Băng thông sử dụng của Switch (Switch occupancy): Tỉ
lệ băng thông của switch được sử dụng bởi quá trình làm
tràn các yêu cầu của client.
Kiến trúc lọc gói của NLB dựa trên mạng con broadcast để
phân phối các yêu cầu của client tới tất cả các host cùng
lúc. Trong các nhóm nhỏ, có thể sử dụng hub để kết nối
các host. Với các nhóm lớn hơn, switch sẽ là sự lựa chọn.
Và như mặc định, NLB sẽ tạo ra hiện tượng "tràn" switch
để có thể phân phối các yêu cầu của client tới tất cả các
host cùng lúc.
Cần chắc chắn rằng hiện tượng "tràn" switch không được
vượt quá năng lực của switch, đặc biệt khi switch được
chia sẻ giữa nhóm và các máy tính ngoài nhóm. Bình
thường, băng thông sử dụng cho lưu lượng yêu cầu của
client chỉ chiếm một tỉ lệ nhỏ trong tổng lượng băng thông
cần thiết cho quá trình truyền thông giữa server và client.
Tuy nhiên quá trình "tràn" switch sẽ trở thành vấn đề
trong những ứng dụng có tỉ lệ phần trăm đáng kể lưu
lượng mạng được dẫn tới nhóm (chẳng hạn như quá trình
upload file trong các ứng dụng FTP) hay khi nhiều nhóm