3.1. Giới thiệu tính năng Network Load Balancing trên Windows Server 2003
Trong Windows Server 2003, NLB sử dụng được trên nhiều card mạng khác nhau nên có thể hiệu chỉnh được trên nhiều host. Phân tải được cho cả Firewall và Proxy Server sử dụng ISA (Microsoft Internet Security and Acceleration) và có thể tạo được kịch bản (script) cho phân tải mạng. Có thể dễ dàng quản lý và điều khiển từ xa hay cục bộ thông qua NLB Manager.
NLB là một thành phần được tích hợp sẵn trong windows server 2003, sử dụng NLB tức là phải chấp nhận dư thừa, sẽ có từ 2 đến nhiều máy cùng chức năng để cân bằng đường truyền, tránh hiện tượng quá tải. NLB cũng là một hình thức backup, vì nếu có một máy bị down thì sẽ có máy khác thay thế nhiệm vụ trong thời gian phục hồi. NLB đáp ứng nhu cầu về tính ổn định và tính sẵn sàng cao trong hệ thống.
Dịch vụ NLB cung cấp một phương tiện để cân bằng lưu lượng TCP/IP giữa nhiều máy chủ trong NLB cluster. Các máy chủ tham gia vào NLB cluster không chia sẻ lưu trữ hoặc nguồn lực khác chạy các ứng dụng riêng. NLB chỉ đơn giản là quản lý lưu lượng truy cập và cân bằng lưu lượng truy cập ra các máy chủ tham gia trong nhóm. NLB cung cấp khả năng chuyển đổi dự phòng, chia sẻ lưu trữ. Về cơ bản, NLB cho phép tất cả các node nằm trong cluster bằng một địa chỉ VIP duy nhất.
Các Network Load Balancing Mananager cho phép thực hiện các nhiệm vụ sau: - Tạo ra các cluster NLB khác nhau, thêm các host vào NLB cluster hiện có - NLB Manager cho phép kích hoạt từ xa trong khi thêm các host vào cluster.
- Loại bỏ các máy chủ từ một cluster hoặc có thể start, stop, pause và continue một server trong cluster.
- Có thể cấu hình các thuộc tính cho các host cá nhân như ID duy nhất máy chủ, địa chỉ IP. Ngoài ra cũng có thể thực hiện quản lý cluster như thêm địa chỉ IP và xác định các port rule.
- Thực hiện chuẩn đoán và xem thống kê cho cluster NLB - The Network Load Balancing quản lý hiển thị đăng nhập của mình dưới cùng cửa sổ và cũng có thể mở một hộp thoại với thông tin trạng thái cho mỗi máy chủ. [6]
3.2. Hoạt động của NLB trên Windows Server 2003
• Hoạt động:
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 nhận được số lượng các yêu cầu theo đúng phần tải đã định. Sự cân bằng tải này có thể điều chỉnh động khi các host tham gia hoặc rời khỏi nhóm. Đối với các ứng dụng như WebServer thì 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 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. Phần lớn các trường hợp là 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 chậm trễ một vài giây khi nhận được đáp ứng trả lời.
• Yêu cầu
Để thiết lập hai hay nhiều máy chủ tích hợp các chức năng NLB để cung cấp tính sẵn sàng cao và cân bằng tải cho dịch vụ Webserver thì yêu cầu là cần phải có ít nhất hai máy chủ giao tiếp với nhau hơn hai kết nối. Tất cả các máy chủ sẽ được sử dụng trong NLB cluster phải có một địa chỉ IP cố định.
Trên hệ điều hành này được khuyến khích để có nhiều card mạng trong máy chủ server, vì vậy có thể tách lưu lượng được gắn với mục tiêu các cụm và lưu lượng được hướng đến mục tiêu các máy chủ chính, tuy nhiên vẫn có thể cài đặt và sử dụng NLB trên máy chủ chỉ có 1 card mạng.
• Chuẩn bị
Ý tưởng về một cụm NLB là một thực tế rằng tất cả các nút trên cluster nhận biết được tình trạng của nhau và tất cả các nút cluster được cấu hình với một địa chỉ IP ảo, được khách hàng sử dụng để kết nối với các dịch vụ. Trước khi thiết lập NLB, cần phải cài đặt thêm dịch vụ DNS, tên miền trong DNS tương ứng với địa chỉ IP của máy. NLB nhận yêu cầu đến IP ảo và sẽ phân phối các yêu cầu trên các nút dựa trên thông số cấu hình.
• 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 cluster. Thuật toán này cho phép các host trong cụ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 tin đến. Nó được tối ưu hóa để 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 webserver.
NLB xử lý các yêu cầu của client theo 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 phân bố sẽ được tái cân bằng.
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 hóa việc cân bằng tải. Quá trình này không thay đổi trừ khi quan hệ giữa các host thay đổi để đảm bảo IP và cổng đến của các 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 hóa 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. Do đó, các host nên được bổ sung vào nhóm hiện tại những thời điểm tải tăng lên quá nhanh nhằm tối thiểu hóa 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” với nhau sẽ cho phép chúng 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 (như gặp phải sự cố hoặc khi rời khỏi, tham gia vào nhóm), NLB kích hoạt một chu trình hội tụ, trong đó các host trao đổi bản tin heartbeat để định ra một trạng thái mới. Khi tất 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 sẽ được lưu vào nhật ký sự kiện.
Trong quá trình này, các host tiếp tục xử lý lưu lượng mạng đến, 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 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 các host bị lỗi sẽ được tái phân phối cho các host còn lại. 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 client và 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.
• Thủ tục:
- Cụm thông số/cụm cấu hình IP:
+ Địa chỉ IP: địa chỉ IP ảo của cluster- là địa chỉ IP dành cho người dùng sử dụng kết nối với dịch vụ NLB
+ Tên domain: tên dành cho cluster - Cụm thông số/cụm chế độ hoạt động:
+ Tùy chọn cấu hình: Kích hoạt chế độ unicast hoặc multicast
Chế độ unicast
Với NLB cluster được cấu hình trong chế độ unicast, địa chỉ MAC của mỗi adapter mạng của máy chủ sẽ được thay đổi thành địa chỉ MAC của nhóm ảo, đây chính là địa chỉ MAC sẽ được sử dụng bởi tất cả các máy chủ trong NLB cluster. Khi chế độ unicast được kích hoạt, các máy khách chỉ có thể kết nối với các máy chủ bằng địa chỉ MAC của nhóm.
Chế độ multicast
Khi sử dụng chế độ multicast, NLB sẽ thêm một multicast truy cập MAC cho adapter cluster trên tất cả các server cluster. Đồng thời, các bộ điều hợp cụm giữ lại địa chỉ MAC ban đầu của họ. Bằng cách này, mỗi máy chủ có thể được giải quyết riêng lẻ vì mỗi máy chủ đều duy trì sẵn các địa chỉ MAC gốc của chúng.
Cũng có thể kích hoạt Internet Group Management Protocol (IGMP) hỗ trợ trên các server cluster để kiểm soát sự chuyển đổi. IGMP là một giao thức được sử dụng bởi giao thức Internet phiên bản 4 (IPv4) tổ chức báo cáo các thành viên nhóm multicast hiện tại của chúng với bất kỳ thiết bị định tuyến multicast lân cận.
Khi kích hoạt điều khiển từ xa, có thể quản lý tất cả các cấu hình NLB trên một server và phải cung cấp một mật khẩu giống hệt nhau trên các server.
+ Kích hoạt chế độ cho phép/không cho phép điều khiển từ xa - Host parameters:
+ Thiết lập chế độ ưu tiên (các giá trị phải là duy nhất cho máy chủ), đây là con số cho thấy các node của cluster và xác định thứ tự mà lưu lượng truy cập được gửi đến một máy chủ trong quá trình lựa chọn trong cluster. Giá trị càng thấp thì độ ưu tiên càng cao. Phạm vi ưu tiên của ID từ 1 đến 32
+ Cấu hình IP: gán địa chỉ IP cho máy chủ + Thiết lập Subnet Mask phù hợp
- Port Rules:
+ Chỉnh sửa thông tin của port hiện đang hoạt động: thay đổi cổng địa chỉ theo các giao thức. Thoát khỏi chế độ lọc cho nhiều máy chủ, nhiều nơi và cân bằng tải + Chế độ lọc: có thể lựa chọn 1 trong các chế độ: dành cho hệ thống đa host, đơn host và vô hiệu hóa chế độ. Trong đó chế độ đa host được sử dụng để thực hiện cân bằng tải, có thể thiết lập các thông số afinity và tải các thông số trọng lượng. Chế độ đơn host thì đường đi chỉ được xử lý bởi các nút trong cluster với các ID ưu tiên xử lý cao nhất. Còn chế độ vô hiệu hóa thì nhóm hoạt động như một tường lửa cơ bản, sẽ chặn các kết nối đến các cổng được xác định trong quy tắc.
- Afinity:
+ Thiết lập dựa trên khả năng cho một ứng dụng duy trì trạng thái trên máy chủ. Nếu ứng dụng không có khả năng duy trì trạng thái thì các khách hàng sẽ kết nối với cùng một máy chủ. Phải thiết lập các thông số với các giá trị tương ứng cho mỗi nút cluster.
+ None: chế độ cân bằng tải ngẫu nhiên, nếu ứng dụng không thể đối phó với thông tin trạng thái đó được truyền trên nhiều phiên và máy chủ thì điều này sẽ làm phá vỡ ứng dụng của máy chủ bởi toàn bộ thông tin liên lạc vào một phiên duy nhất không được lưu lại
+ Single: người dùng cùng sử dụng một máy chủ kết nối trước. Trong khi lưu lượng truy cập từ nhiều khách hàng sẽ được phân phối trên nhiều nút, tải trọng không thể lan truyền một cách hoàn hảo bởi một người dùng có thể tạo ra lưu lượng truy cập và các phiên nhiều, khác nhau. Tuy nhiên người dùng có thể kết nối lại với phiên ngắt kết nối của mình trên cùng một máy chủ.
+ Class C: hệ thống gán một nút cluster dựa trên toàn bộ lớp mạng, nếu một trong các địa chỉ IP trong cùng một lớp C đã kết nối, những người dùng khác sẽ kết nối với cụm cùng nút.
Sử dụng tham số này có thể xác định lượng tải chấp nhận trên các nút cluster. Nếu có nhiều máy chủ NLB, với khả năng xử lý nhiều người dùng truy cập khác nhau thì có thể thiết lập lượng tải cho các máy chủ (lưu lượng các giá trị không chỉ ra một tỷ lệ phần trăm mà đó là một khả năng xử lý tải trọng so sánh giữa các nút cá nhân). [6], [8]
3.3. Xây dựng mô hình hệ thống cân bằng tải WebServer
Có nhiều phương pháp cài đặt bộ cân bằng tải vào hệ thống website từ đơn giản đến phức tạp, ứng dụng trong nhiều trường hợp khác nhau. Với một số website nhỏ, chỉ có một vài server đặt trong cùng một mạng LAN có thể sử dụng phương pháp cài đặt đơn giản với một bộ cân bằng tải cài đặt trước các server, kết hợp với kỹ thuật session. Trong một hệ thống lớn hơn, để tránh quá tải cho bộ cân bằng tải có thể cài đặt hai bộ cân bằng tải hoạt động theo cơ chế active-backup nhằm đảm bảo nếu như có một trong hai bộ cân bằng tải bị hỏng hóc, sự cố xảy ra thì vẫn còn có một bộ để dự phòng và chắc chắn rằng hệ thống vấn luôn luôn hoạt động.
Để thực hiện việc cài đặt hệ thống NLB cho các máy chủ Web, giả lập một mô hình hệ thống gồm có 2 máy server làm WebServer cho hệ thống với hai Client bất kỳ thể hiện như một máy tính của người dùng truy cập vào web server. Như vậy, cần phải xây dựng hệ thống cluster giả lập bằng một địa chỉ IP ảo làm Network Load Balancing để cân bằng tải cho WebServer. Dưới đây là mô hình hệ thống webserver:
Hình 3.1: Mô hình hệ thống cân bằng tải WebServer
Mô tả hệ thống:
- Mô hình có server đóng vai trò là hai web server và là nơi lưu trữ database
- Trên hai web server đều sử dụng hệ điều hành Windows server 2003, bản Enterprise và sử dụng tên miền website là thanhhuyen.vn.
- Giữa 2 Webserver có một đường mạng nối 2 card mạng của chúng với nhau để lắng nghe trạng thái, kiểm tra tình trạng “health check” của nhau.
- Hai Web server nhất thiết phải có sự đồng bộ về database để đảm bảo tính nhất quán, cập nhật cơ sở dữ liệu chung và đúng với yêu cầu của cân bằng tải.
- Hai server này tham gia vào NLB cluster thực hiện cân bằng tải với nhau, hệ thống cluster sử dụng Virtual IP (VIP) là 192.168.1.100, đây là địa chỉ đại diện cho website của doanh nghiệp, khi client muốn vào website thì phải truy cập thông qua địa chỉ này.
3.4. Cài đặt WebServer
Để cài đặt dịch vụ web cho máy server1 ta đặt địa chỉ IP bằng cách click chuột phải vào My Network Places -> chọn Properties -> Nhấp chọn Local Area Connection Properties -> click phải chuột chọn Properties.
Hình 3.2: Hộp thoại Local Area Connection Properties trên Webserver1
Sau đó nhấp chuột để đánh dấu tích vào ô trống Internet Protocol (TCP/IP) và điền địa chỉ IP cho WebServer1 như sau:
Hình 3.3: Hộp thoại TCP/IP của Webserver1
Tương tự, trên Webserver2 đặt địa chỉ IP là 192.168.1.12, DNS trỏ về địa chỉ của cluster 192.168.1.100 và về địa chỉ 192.168.1.11 để thực hiện join domain trong phần cài đặt Additional Domain Controller trên Webserver2.