Hiện nay, khi nhu cầu truy nhập mạng bùng nổ, các server cung cấp dịch vụ đang trở nên quá tải. Việc lựa chọn một server đơn lẻ có cấu hình cực mạnh để đáp ứng nhu cầu này sẽ kéo theo chi phí đầu tư rất lớn. Giải pháp hiệu quả được đưa ra là sử dụng một nhóm server cùng thực hiện một chức nǎng dưới sự điều khiển của một công cụ phân phối tải - Giải pháp cân bằng tải.
Có rất nhiều hãng đưa ra giải pháp cân bằng tải như Cisco, Coyote Point, Sun Microsystems... với rất nhiều tính nǎng phong phú. Tuy nhiên, về cơ bản, nguyên tắc cân bằng tải vẫn xuất phát từ những quan điểm kỹ thuật khá tương đồng. Một kỹ thuật cân bằng tải điển hình là RRDNS (Round Robin DNS). Với giải pháp này, nếu một server trong nhóm bị lỗi, RRDNS sẽ vẫn tiếp tục gửi tải cho server đó cho đến khi người quản trị mạng phát hiện ra lỗi và tách server này ra khỏi danh sách địa chỉ DNS. Điều này sẽ gây ra sự đứt quãng dịch vụ.
Sau những phát triển, từ các thuật toán cân bằng tải tĩnh như Round Robin, Weighted Round Robin đến các thuật toán cân bằng tải động như Least Connection, Weighted Least Connection, Optimized Weighted Round Robin và Optimized Weighted Least Connection, kỹ thuật cân bằng tải hiện nay nhờ sự kết hợp các thuật toán trên ngày càng trở nên hoàn thiện mặc dù nhược điểm vốn có như tạo điểm lỗi đơn và vấn đề nút cổ chai do sử dụng bộ điều phối tập trung (centralized dispatcher) vẫn còn.
Hoạt động của NLB
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ê 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.
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.
+ Unicast, NLB sẽ gán địa chỉ MAC giống nhau cho tất cả các host trong nhóm. Các gói đến NLB 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à 10.200.200.10, địa chỉ MAC unicast được đặt là 02-BF-0A-C8-C8-0A. 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ứ 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-0A-C8-C8-0A được chuyển thành 02-h-0A-C8-C8-0A, 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.
+ Multicast: 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-0A-C8-C8-0A tương ứng với địa chỉ IP chính là 10.200.200.10. 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.
Thuật toán cân bằng tải
NLB 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.
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. 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.
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ị ả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 host khác trong nhóm.
Trong chế độ unicast, mỗi host sẽ phát quảng bá (broadcast) bản tin "heartbeat" theo chu kỳ. Còn trong chế độ multicast, nó sẽ phát các bản tin này ở chế độ multicast. Mỗi bản tin "heartbeat" chiếm một khung Ethernet và được gắn thêm địa chỉ IP chính của nhóm nhằm cho phép nhiều nhóm có thể cùng tồn tại trên cùng một mạng con. Bản tin "heartbeat" của NLB của Microsoft được gán một giá trị 0x886F. Chu kỳ gửi các bản tin này mặc định là 01 giây. Giá trị này có thể thay đổi. Trong quá trình hội tụ, chu kỳ này được giảm xuống chỉ còn một nửa để đẩy nhanh việc hoàn tất quá trình này. Thậm chí, đối với các cluster lớn, bǎng thông cần thiết để truyền các bản tin "heartbeat" rất thấp (24kBytes/s cho một cluster 16 đường). Để có thể khởi tạo quá trình hội 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 đến hiệu nǎng của mạng. Giải pháp cân bằng tải dựa trên bộ điều phối cần kiểm tra, hiệu chỉnh và truyền lại gói tới các host trong nhóm (thường phải sửa đổi lại địa chỉ IP để tái định tuyến gói từ địa chỉ IP ảo tới địa chỉ IP của từng host cụ thể). Đối với NLB, nó phân phối đồng thời các gói đến tới tất cả các host trong nhóm và áp dụng một thuật toán lọc để loại bỏ các gói không mong muốn... Quá trình lọc gây ảnh hưởng ít hơn so với quá trình tái định tuyến và kết quả là thời gian đáp ứng nhanh hơn với thông lượng toàn hệ thống cao hơn.
Ứng dụng
NLB thường được ứng dụng vào các mục đích sau:
. Các ứng dụng ít có sự thay đổi
. Web server
. FTP server
. VPN server
http://vsic.com/forum/showthread.php?t=1287
Các giải pháp Load Balancing
Có 3 giải pháp thường dùng cho Load Balancing là:
1. Round Robin DNS
Một kỹ thuật cân bằng tải điển hình là RRDNS (Round Robin DNS). Với giải pháp này, nếu một server trong nhóm bị lỗi, RRDNS sẽ vẫn tiếp tục gửi tải cho server đó cho đến khi người quản trị mạng phát hiện ra lỗi và tách server này ra khỏi danh sách địa chỉ DNS. Điều này sẽ gây ra sự đứt quãng dịch vụ.
Ví dụ:
Trong DNS sẽ chứa 4 record của 4 web server:
websrv1 IN A 192.168.1.10
websrv2 IN A 192.168.1.10
websrv3 IN A 192.168.1.10
websrv4 IN A 192.168.1.10
Tạo record loại CNAME có tên www chỉ đến 4server trên
www IN CNAME websrv1.vsic.com.
IN CNAME websrv2.vsic.com.
IN CNAME websrv3.vsic.com.
IN CNAME websrv4.vsic.com.
2. Sử dụng phần mềm
Cơ chế Load Balancing thường được xây dựng sẵn bên trong hệ điều hành ví dụ Windows server 2000, 2003, Novell netware, Sun Solaris, Linux ..
Trong bài sau tôi sẽ trình bày các bước xây dựng hệ thống Load Balancing trong môi trường mạng Windows sever 2003
3. Sử dụng thiết bị phần cứng
Có rất nhiều hãng đưa ra giải pháp cân bằng tải như Cisco, Coyote Point, Sun Microsystems... với rất nhiều tính nǎng phong phú.
Giải pháp dùng thiết bị được xem là tối ưu nhất tuy nhiên chi phí cũng cao hơn
Mô hình sau sử dụng thiết bị localdirector của hãng Cisco để cân bằng tải
Khi lựa chọn thiết bị phần cứng làm Load Balancing, bạn cần qua tậm đến các thông số sau:
• Cân bằng tải cho hầu hết các ứng dụng trên nền mạng IP: cho phép cân bằng tải cho hầu hết các ứng dụng trên nền mạng IP như Web, FTP, E-mail hay video theo yêu cầu.
• Cân bằng tải theo nhiều phương pháp : sử dụng cả hai mô hình hoạt động tĩnh và động cho việc cân bằng tải các máy chủ. Mô hình tĩnh dựa trên việc quay vòng cung cấp dịch vụ lần lượt cho từng máy chủ và theo công suất của máy chủ. Khả năng thiết lập cấu hình cực kỳ mềm dẻo. hỗ trợ các cấu hình hoạt động đa dạng bao gồm: chuyển dịch địa chỉ mạng/NAT, định tuyến trực tiếp, đường hầm IP.
• Kiểm tra trạng thái của máy chủ: thường xuyên kiểm tra trạng thái của từng máy chủ để đảm bảo rằng không một yêu cầu cung cấp dịch vụ nào được gửi đến một máy chủ đang gặp sự cố.
• Tắt dịch vụ an toàn: Tính năng này cho phép các dịch vụ trên máy chủ chỉ được đóng khi tất cả các yêu cầu đã được xử lý xong. Khi có yêu cầu tắt máy để bảo dưỡng hay nâng cấp một máy chủ nào đó, sẽ không gửi các yêu cầu cung cấp dịch vụ tới máy chủ đó nữa và người quản trị mạng sẽ được thông báo khi tất cả các yêu cầu cung cấp dịch vụ trên máy đó đã được xử lý.
• Dự phòng nóng: Hai thiết bị có thể được kết nối song song với nhau, một ở chế độ hoạt động chính, một ở chế độ dự phòng. Nếu thiết bị chính gặp sự cố thì thiết bị ở chế độ dự phòng sẽ ngay lập tức đảm nhận vai trò quản lý toàn bộ các giao dịch.
• Kiêm tra và đồng bộ trạng thái hai chiều: Hai thiết bị sẽ luôn đồng bộ trạng thái của nhau theo thời gian thực đảm bảo rằng các thông tin yêu cầu cung cấp dịch vụ và trạng thái xử lý toàn bộ dịch vụ từ các máy chủ luôn được cập nhật trên cả hai thiết bị.
• Dự phòng thông minh: Với tính năng dự phòng thông minh, thiết bị dự phòng sẽ ngay lập tức quản lý toàn bộ các yêu cầu giao dịch khi thiết bị chính gặp sự cố.
• Đồng bộ theo hai đường: Tín hiệu đồng bộ nhịp (heartbeat) của hai thiết bị ở mô hình hoạt động song song được gửi sang nhau thông thông qua cả kết nối mạng LAN và kết nối serial trực tiếp.
• Đồng bộ cấu hình và nhật ký: Khả năng này cho phép cấu hình hệ thống và nhật ký làm việc của cả hai thiết bị ở chế độ làm việc song song là như nhau tại mọi thời điểm.
• Độ tin cậy và khả năng ổn định cao: Điều khiển thiết bị là hệ điều hành nhúng vì vậy độ tin cậy và khả năng ổn định được đảm bảo ở mức cao nhất.
• Nhật ký chi tiết: có khả năng ghi nhật ký chi tiết về hệ thống, quản trị, tính sẵn sàng cao và các cảnh báo.
• Cảnh báo qua E-mail: Khi một thiết bị hoặc bất kỳ máy chủ nào trong hệ thống gặp sự cố thì một thông báo sẽ được gửi đến người quản trị mạng qua E-mail.
• Hỗ trợ SNMP: cung cấp các MIB và sẽ gửi các bẫy lỗi (Trap) đến bộ quản lý SNMP khi cần thiết.
• Hỗ trợ UPS: có khả năng giao tiếp với hệ thống lưu điện của APC để thực hiện các thao tác đóng phiên giao dịch cần thiết khi có sự cố về nguồn trong hệ thống.
• Bảo mật cao: Các mặt nạ IP cho phép các máy chủ thực tế không xuất hiện trực tiếp trên mạng Internet. Việc hỗ trợ SSH/Base64 cho phép người quản trị quản lý các ở mức an toàn cao nhất. Giao diện quản trị đồ hoạ qua WEB và dòng lệnh: Người quản trị có thể quản lý thông qua giao diện đồ hoạ qua WEB hoặc bằng dòng lệnh.
http://vsic.com/forum/showthread.php?t=1287
Windows sever 2003 Load Balabcing
Các bước sau đây trình bày quá trình xây dựng Network Load Balancing gồm 2 node dựa trên tính năng Load Balabcing có sẵn trong windows sever 2003
Bài này các bạn có thể thực hiện thông qua 2 máy ảo Windows 2003 chạy trên nền VMWare
Bước1: Chuẩn bị
- Đặt tên cho 2 máy là: Node1 và Node2
- Đặt IP cho mỗi máy lần lượt là 10.1.1.1 và 10.1.1.2
- Địa chỉ IP chung cho nhóm server sẽ là 10.1.1.10
Bước 2: Triển khai NBL
Tại máy 1:
- Chạy Network Load Balancing Manager
Hình 1
- Chọn New Cluster
Hình 2
- Nhập địa chỉ IP cho nhóm sever là 10.1.1.10, tên domain, chọn chế độ Multicast (do mỗi máy sử dụng 1 LAN card)
Hình 3
- Gán thêm địa chỉ IP cho nhóm server nếu cần thiết
Hình 4
-Khai báo các dịch vụ nào sẽ được phép khai thác NBL, thông qua việc mở port, chọn Edit
Hình 5
-Nhập phạm vi port sẽ mở, ví dụ ta chỉ triển khai dịch vụ Web trên NLB thì ta chỉ cần mở port 80
Hình 6
- Nhấn Next qua bước tiếp theo
Hình 7
- Nhập tên của máy đầu tiên: node1, chọn connect, chọn kết nối mạng tham gia NLB, nhấn Next.
Hình 8
- Priority: khai báo độ ưu tiên cho Node này là 1, các node tiếp theo sẽ là 2,3..32.
Hình 9
Chọn Finish
Ảnh này đã được chỉnh nhỏ lại. Bạn vui lòng nhấn vào dòng này để hiện kích thước gốc. Kích thước gốc của ảnh là 650x418.
Tại máy 2:
Các bước được thự hiện giống như trên máy 1, nhưng tên máy thêm vào NLB là node2 và độ ưu tiên là 2
Bước 3:
- Quan sát thông tin trang thái NBL giữa các node
Ảnh này đã được chỉnh nhỏ lại. Bạn vui lòng nhấn vào dòng này để hiện kích thước gốc. Kích thước gốc của ảnh là 650x418.
Hình 10
- Quá trình Update giữa các node 1,2 đã thành công
Hình 11
- Kiểm tra địa chỉ của NBL đã có thể truy cập
Ảnh này đã được chỉnh nhỏ lại. Bạn vui lòng nhấn vào dòng này để hiện kích thước gốc. Kích thước gốc của ảnh là 668x512.
Hình 12
http://vsic.com/forum/showthread.php?t=1287
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét