Kiến trúc hệ thống cân bằng tải Để tối đa hoá thông lượng và độ khả dụng, công nghệ cân bằng tải sử dụng kiến trúc phần mềm phân tán hoàn toàn, trình điều khiển cân bằng tải được cài đặ
Trang 1Kỹ 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ó
Trang 2Sự 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ê
sẽ giúp cân bằng một cách hiệu quả các tải và cung cấp khả năng đáp ứng nhanh khi nhóm server có thay đổi
Các server trong nhóm cân bằng tải phát đi một bản tin đặc biệt thông báo trạng thái hoạt động của nó (gọi là heartbeat message) tới các host khác trong nhóm đồng thời nghe bản tin này từ các khác host khác Nếu một
server trong nhóm gặp trục trặc, các host khác sẽ điều chỉnh và tái phân phối lại tải để duy trì liên tục các dịch vụ cho các client
Trong phần lớn các trường hợp, phần mềm client thường
tự động kết nối lại và người sử dụng chỉ cảm thấy trễ một vài giây khi nhận được đáp ứng trả lời
Kiến trúc hệ thống cân bằng tải
Để tối đa hoá thông lượng và độ khả dụng, công nghệ cân bằng tải sử dụng kiến trúc phần mềm phân tán hoàn toàn, trình điều khiển cân bằng tải được cài đặt và chạy song song trên tất cả các host trong nhóm Trình điều khiển này sắp xếp tất cả các host trong nhóm vào một mạng con để phát hiện đồng thời lưu lượng mạng đến địa chỉ IP chính của nhóm (và các địa chỉ bổ sung của các host ở nhiều vị trí khác nhau)
Trên mỗi host, trình điều khiển hoạt động như một bộ lọc giữa trình điều khiển card mạng và chồng giao thức
TCP/IP, cho phép một phần lưu lượng mạng đến được
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ệ
Trang 3thố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 bằng cách sử dụng một bộ điều phối dự phòng và do đó chỉ cung cấp một cách khắc phục lỗi duy nhất
Kiến trúc cân bằng tải cũng tận dụng được những ưu điểm
về kiến trúc các thiết bị chuyển mạch (switch) và/hoặc các
bộ tập trung (hub) của mạng con trong việc đồng thời phân phối lưu lượng mạng đến tất cả cac host trong
nhóm
Tuy nhiên, phương pháp này làm tăng "tải trọng" trên các chuyển mạch do chiếm thêm băng thông cổng Đây không phải là vấn đề trong phần lớn các ứng dụng như dịch vụ Web hay streaming media, do tỉ lệ lưu lượng đến chỉ
chiếm một phần rất nhỏ trong tổng lưu lượng mạng
Tuy nhiên, nếu các kết nối mạng phía client đến thiết bị chuyển mạch có tốc độ nhanh hơn nhiều các kết nối phía
Trang 4server, lưu lượng có thể chiếm một tỉ lệ lớn quá mức cho phép của băng thông cổng phía server Vấn đề tương tự
sẽ gia tăng nếu nhiều nhóm kết nối trên cùng một thiết bị chuyển mạch và các biện pháp thiết lập các mạng LAN ảo cho từng nhóm không được thực hiện
Trong quá trình nhận gói, việc triển khai của NLB là sự kết hợp giữa việc phân phối các gói tới tầng TCP/IP và nhận các gói khác qua trình điều khiển card mạng Việc này giúp tăng tốc độ xử lý chung và giảm trễ do TCP/IP có thể
xử lý gói trong khi trình điều khiển NDIS (Network Driver Interface Specification) nhận gói tiếp theo Trong quá trình gửi gói, NLB cũng tăng cường thông lượng, giảm độ 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
Trang 5khô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ứ
không phải một bộ tập trung (hub), việc sử dụng chung một địa chỉ MAC sẽ gây ra xung đột do các chuyển mạch lớp 2 chỉ có thể hoạt động khi các địa chỉ MAC nguồn trên tất cả các cổng của thiết bị chuyển mạch là duy nhất
Để tránh điều này, NLB sửa địa chỉ MAC nguồn cho các gói đầu ra là duy nhất, địa chỉ MAC của nhóm là
02-BF-1-2-3-4 được chuyển thành 02-h-1-2-3-02-BF-1-2-3-4, trong đó h là mức ưu tiên của host trong nhóm Kỹ thuật này ngăn không cho thiết bị chuyển mạch tìm ra địa chỉ MAC thực sự của nhóm
và kết quả là các gói đến nhóm được phân phối tới tất cả các cổng của thiết bị chuyển mạch
Nếu các host trong nhóm được kết nối trực tiếp vào một hub, mặt nạ địa chỉ MAC nguồn của NLB trong chế độ unicast có thể được vô hiệu hoá để tránh gây ra hiện
tượng tràn cho các thiết bị chuyển mạch ở đường lên
(upstream) Điều này có thể thực hiện bằng cách thiết lập tham số đăng ký NLB là MaskSourceMAC=0 Việc sử dụng
hệ thống chuyển mạch đường lên ba mức cũng có thể hạn chế tràn cho các thiết bị chuyển mạch
Trang 6Chế độ unicast của NLB có thể làm vô hiệu hoá quá trình trao đổi thông tin giữa các host trong nhóm có sử dụng card nhóm Khi các gói của một host được gửi đi với địa chỉ MAC đích giống địa chỉ MAC nguồn, các gói này sẽ bị quay vòng (loop-back) giữa các tầng giao thức mạng bên trong hệ thống phía gửi và không bao giờ ra đến đường 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
Trang 7chế độ 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 chỉ IP chính là 1.2.3.4 Do mỗi host trong nhóm có một địa chỉ trạm làm việc duy nhất, chế độ này không cần một
bộ card mạng thứ hai để trao đổi thông tin giữa các host trong nhóm và nó cũng không có bất cứ ảnh hưởng nào đến hiệu năng của toàn hệ thống do việc sử dụng các địa chỉ IP dành riêng
Chế độ unicast của NLB gây ra tràn trên switch do sự
phân phối đồng thời lưu lượng mạng trên tất cả các cổng Tuy nhiên, chế độ multicast của NLB đưa ra cơ hội hạn chế tràn switch để người quản trị hệ thống có thể cấu hình một mạng LAN ảo trên switch cho các cổng tương ứng với các host Có thể làm được điều này bằng cách lập trình cho switch hoặc sử dụng giao thức IGMP hoặc giao thức GARP, GMRP
NLB cần triển khai chức năng ARP để đảm bảo rằng địa chỉ
IP chính của nhóm và các địa chỉ IP ảo khác có thể phân giải sang địa chỉ MAC multicast của nhóm (Địa chỉ IP
dành riêng sẽ tiếp tục phân giải sang địa chỉ trạm làm việc của card nhóm)
Thuật toán cân bằng tải
Trang 8NLB sử dụng thuật toán lọc phân tán hoàn toàn để ánh xạ các client đến các host trong nhóm Thuật toán này cho phép các host trong nhóm đưa ra các quyết định cân bằng tải một cách độc lập và nhanh chóng cho từng gói đến Nó được tối ưu hoá để cung cấp khả năng cân bằng tải một cách thống kê đối với một số lượng lớn các yêu cầu nhỏ do
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
Trang 9Khi 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
Tuy nhiên, host cụ thể trong nhóm mà địa chỉ IP và cổng đến của client ánh xạ tới không thể được xác định trước
do hàm ngẫu nhiên có tính đến quan hệ thành viên trong nhóm hiện tại và quá khứ để tối thiểu hoá khả năng ánh
xạ lại
Nhìn chung, chất lượng cân bằng tải được xác định một cách thống kê bởi số lượng client tạo ra yêu cầu Như kết cấu tăng giảm về số lượng client theo thống kê, sự đều đặn về chất lượng của thuật toán cân bằng tải sẽ thay đổi nhẹ
Để hoạt động cân bằng tải có độ chính xác cao trên mỗi host trong nhóm, một phần tài nguyên hệ thống sẽ được
sử dụng để đo và phản ứng trước những thay đổi của tải
Sự trả giá về hiệu năng này phải được cân nhắc so với lợi ích của việc tối đa hoá khả năng sử dụng các tài nguyên trong nhóm (về cơ bản là CPU và bộ nhớ)
Trong bất cứ trường hợp nào, việc sử dụng hợp lý các nguồn tài nguyên server phải được duy trì để có thể phục
vụ cho các tải client khác trong trường hợp xảy ra lỗi
Khi một host mới tham gia vào nhóm, nó sẽ kích hoạt quá trình hội tụ và một quan hệ thành viên mới trong nhóm sẽ được tính toán Khi quá trình hội tụ hoàn thành, một phần tối thiểu client sẽ được ánh xạ tới host mới NLB dò các kết nối TCP trên mỗi host và sau khi kết nối TCP hiện tại của chúng hoàn thành, kết nối tiếp theo từ các client bị
Trang 10ả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
Khi hoàn thành quá trình hội tụ, lưu lượng đến host bị lỗi
sẽ được tái phân phối cho các host còn lại Nếu một host được thêm vào nhóm, quá trình hội tụ cho phép host này nhận được phần tải của nó trong lưu lượng đã được cân bằng
Việc mở rộng nhóm không ảnh hưởng đến các hoạt động của nhóm và theo một cách hoàn toàn trong suốt đối với tất cả các Internet client cũng như trước các chương trình phần mềm server Tuy nhiên, nó có thể ảnh hưởng đến các phiên client vì các client có thể phải tái ánh xạ tới các