Load balacing với ARR trong IIS 7

Xây dựng các hệ thống mang tính sẵng sàng cao luôn là mong muốn của các nhà quản lý CNTT để đáp ứng yêu cầu kinh doanh liên tục cho doanh nghiệp.
IIS 7 mang đến cho người dùng một cách thức triển khai hệ thống chia tải (load balancing) thú vị, đáng để tham khảo và ứng dụng vào thực tế. IIS 7 có nhiều tính năng mới so với IIS 6. Bài viết này giới thiệu cách triển khai chia tải cho ứng dụng dịch vụ web (web service) trên IIS 7 cùng với module Application Request Routing (ARR). Dịch vụ web được xây dựng trên nền tảng WCF. Về cơ bản, IIS 7 cho phép triển khai chia tải cho bất kỳ web site nào chạy được trên nền IIS 7: có thể là một website tĩnh, một ứng dụng ASP.Net, một dịch vụ web (web service) hoặc một web site bán hàng trực tuyến.

1. Mô hình:

IIS 7 dựa trên ra khái niệm proxy để điều hướng các yêu cầu dịch vụ (request) đến các máy chủ khác nhau trong cùng một web farm. Mỗi server farm là một đơn vị logic chứa một hoặc nhiều máy chủ dịch vụ. Các yêu cầu dịch vụ sau khi được điều hướng từ máy chủ proxy sẽ được xử lý bởi các máy chủ dịch vụ trong các server farm.


Chia tải với một máy chủ proxy

2. Chi tiết triển khai:

Để thực hiện việc mô phỏng, tác giả chuẩn bị môi trường như sau:

chạy máy ảo VMWare Workstation 9.
Một web service xây dựng trên nền WCF.
Hai máy ảo Windows Server 2008 R2 hoạt động như proxy server gồm các phần mềm sau:
IIS 7 và Module ARR 2.5 (Application Request Routing).
Network Load Balacing Tools.
Cấu hình hai máy như sau:

Tên máy Địa chỉ IP
PROXY01-Windows Server 2008 R2 192.168.1.51
PROXY02-Windows Server 2008 R2 192.168.1.54

Hai máy ảo Windows Server 2008 gồm các phần mềm sau:
IIS 7.
.NET Framework 3.5.1.
WCF Activation.
Windows Process ActivationService.
WCF Web service.
File test.html (nội dung file khác nhau để thuận tiện cho việc kiểm tra).
Cấu hình hai máy như sau:

Tên máy Địa chỉ IP Nội dung file test.html
SVR02-Windows Server 2008 R2 192.168.1.52 Test load balancing
SVR03-Windows Server 2008 R2 192.168.1.53 Test load balancing 1

Bước 1: Cài đặt và cấu hình web service trên hai máy SVR02 và SVR03. Sau khi cấu hình ta có ứng dụng dịch vụ sẵn sàng trên hai máy.


Ứng dụng web service trên máy ảo.

Bước 2: Cấu hình ARR.

Đăng nhập PROXY01, vào IIS, chọn Server Farms, nhấp chuột phải chọn “Create Server Farm”. Tạo server farm gồm có hai server SVR02 và SVR03.

Nhấp chuột vào IIS và chọn URL Rewrite.Xóa tất cả các rules mặc định đã tạo sẵn nếu có. Chọn Add Rule(s). Chọn blank rule, nhập tên rule. Nhập các thông tin sau cho rule như sau:

Requested URL: matches pattern

Using: Wildcards

Pattern: *

Trong mục condition chọn Add và nhập “{HTTP_HOST}” vào mục “Condition input”. Chọn “matches the Pattern” cho mục “check if input string”. Nhập vào domain của bạn, ở đây tác giả đặt tên domain là www.tuan.com.

Trong mục Action: chọn “Route to Server Farm” cho mục “Action type”. Các thông tin “Action Properties” sẽ mặc nhiên route về FARM1 đã tạo trước đó.

Nhấp đôi vào FARM1 đã tạo trước đó. Chọn mục “Load Balance”, chọn “Weighted round robin” cho mục “Load balance algorithm” và “Even distribution” cho mục “Load distribution”.

Sau đó vào mục Caching của FARM1 đặt lại giá trị cach bằng 0 để dễ dàng kiểm tra việc chia tải.

Sau đó vào mục Server Affinity kiểm tra và chắc chắn là thuộc tính Client Affinity và Host Name Server Affinity đều không được chọn.

Do domain đặt là www.tuan.com nên ta cần thêm một ánh xạ domain này trong file host của window và trỏ về máy proxy01.

Lúc này ta đã có một proxy server đều hướng các request về FARM1 có chứa hai server là SVR02 và SVR03.


Cấu hình ARR.

Khi truy cập vào trang test.html ta thấy kết quả trên trình duyệt ứng với nội dung tương ứng của file test.html trên từng máy.


Kết quả kiểm tra chia tải.

Chọn FARM1, nhấp chuột vào “Monitoring and management” ta sẽ thấy lịch sử request và response trên các máy chủ của FARM1.


Theo dõi quản lý các truy cập vào server farm.

Bước 3: Cấu hình Load balancing với Shared Hosting Deployment

Lúc này chúng ta đã có được một máy chủ proxy cùng với hai máy chủ chia tải cho ứng dụng web. Tuy nhiên, một máy chủ proxy vẫn chưa đủ, vì nếu máy chủ này gặp sự cố thì hệ thống cũng không truy cập được. Ta nâng cấp hệ thống bằng cách thêm một máy chủ proxy: máy proxy này có cấu hình như máy chủ proxy2 như trên.

Vào IIS của proxy01, chọn mục “Shared Configuration”. Sau đó chọn “Export Configuration”. Sau khi export cấu hình IIS vào thư mục chia sẻ. Chọn “Enable shared configuration”. Điền các thông tin để kích hoạt cấu hình IIS ở chế độ chia sẻ. Việc sử dụng cấu hình chia sẻ trên IIS nhằm mục đích tránh trường hợp máy chủ gặp sự cố, các thông tin cấu hình vẫn có thể truy cập trên thư mục chia sẻ. Vào IIS của máy proxy2 và cấu hình “shared configuration” cho IIS để đảm bảo hai máy chủ proxy có cùng cấu hình.

Vào mục Network Load Balancing Manager của máy proxy1. Chọn mục cluster trên thanh công cụ, sau đó chọ “New cluster”. Nhập vào địa chỉ IP của một máy trong nhóm cluster: 192.168.1.51. Chọn “Next” hai lần, sau đó nhập IP ảo cho network load balancing: 192.168.1.60. Chọn “next” và nhập “demo” cho mục “Full internet name”. Nhấn “Next” và “Finish” để kết thúc việc thêm một server vào nhóm cluster. Tương tự như vậy, thêm máy chủ proxy02 vào nhóm cluster. Sau khi hoàn tất cấu hình ta có kết quả như hình vẽ.


Cấu hình Network load balancing.

Ánh xạ domain www.tuan.com trong file host của window trỏ về IP ảo của cluster: 192.168.1.60. Lúc này chúng ta đã có được hai máy chủ proxy cùng với hai máy chủ chia tải cho ứng dụng web.


Chia tải với hai máy chủ proxy.

Khi thực hiện lời gọi dịch vụ web vài lần, ta có kết quả như hình vẽ:


Kết quả gọi dịch vụ web chia tải.

Lưu ý quan trọng:

Đối với các ứng dụng web, các dịch vụ web (web service) có sử dụng session. Các thông tin session không được lưu trong bộ đệm của máy chủ dịch vụ. Vì các xử lý được điều hướng trên các máy chủ khác nhau, nếu lưu thông tin session trên máy chủ, thông tin này chỉ có trên bộ đệm của một trong các máy chủ, dẫn đến tình trạng thông tin session không thể chỉ truy cập cùng lúc trên nhiều máy chủ dịch vụ. Ngoài ra, khi máy chủ gặp sự cố các thông tin session sẽ mất đi và không còn để truy cập. Thay vào đó, chúng ta cấu hình lưu thông tin session theo chế độ “out of proccess” và lưu vào trong cơ sở dữ liệu MS SQL Server.

Lời kết:

Moulde ARR trên IIS7 thực hiện chia tải dựa trên các thông tin phần header trong giao thức http và việc điều hướng thực hiện ở tầng thứ 7 (tầng ứng dụng) trong mô hình OSI, trong khi các thiết bị chia tải thường thực hiện trên tầng thứ 4 (transport layer). Một diểm khác biệt ở đây là chúng ta hoàn toàn có thể triển khai chia tải dựa trên phần mềm thay vì phải mua các thiết bị chia tải chuyên dụng. Với IIS7 và module ARR, giờ đây các nhà phát triển, triển khai hệ thống có thêm sự lựa chọn mới.

Nguồn: echip

Bài viết liên quan