Công nghệ cân bằng tải server

MỞ ĐẦU Công nghệ mạng và các hệ thống máy chủ ngày nay đã có những bước phát triển vượt bậc. Nhờ đó đáp ứng được các ứng dụng thương mại rộng lớn như các giao dịch tài chính, hệ thống cơ sở dữ liệu, hệ thống web server, các ứng dụng truyền media . Các ứng dụng này có tần suất sử dụng cao, yêu cầu hoạt động liên tục. Do vậy, hệ thống mạng phải có khả năng mở rộng tối ưu để đáp ứng được một lượng lớn các yêu cầu ngày càng tăng của người dùng mà không gây ra bất kỳ một độ trễ không mong muốn nào. Một trong những xu hướng lựa chọn hệ thống mạng ngày nay là phân tán sự tính toán giữa các hệ thống vật lý khác nhau. Các hệ thống vật lý này có thể khác nhau về quy mô và chức năng. Chúng thường bao gồm các các máy trạm, các máy tính mini và các hệ thống máy tính đa năng lớn. Các hệ thống này thường được gọi là các nút. Sự nghiên cứu về hệ thống mạng phân tán bao gồm nhiều lĩnh vực như: Mạng truyền thông, hệ điều hành phân tán, cơ sở dữ liệu phân tán, lý thuyết về các hệ thống song song và phân tán, cấu trúc nối mạng, độ tin cậy và khả năng chịu lỗi, hệ thống phân tán trong thời gian thực, khả năng gỡ lỗi phân tán và các ứng dụng phân tán. Như vậy hệ thống mạng phân tán bao gồm mạng vật lý, các nút và các phần mềm điều khiển. Có 5 lý do để xây dựng một hệ thống mạng phân tán, đó là: chia sẻ tài nguyên, cải tiến sự tối ưu, độ tin cậy, khả năng truyền thông và độ khả mở. Một trong những vấn đề thú vị nhất của hệ thống mạng phân tán là cải tiến sự tối ưu của hệ thống thông qua sự cân bằng tải giữa các nút hay các máy chủ. Với lý do trên, em đã lựa chọn đề tài luận văn tốt nghiệp là “Công nghệ cân bằng tải server”. Đây là một vấn đề khá quan trọng trong việc thiết kế các hệ thống mạng, các trung tâm tính toán hiệu năng cao và các trung tâm dữ liệu phục vụ cho các ứng dụng lớn. Nội dung nghiên cứu của luận văn này được xây dựng trên cơ sở những kiến thức đã được tiếp thu trong quá trình học tập, nghiên cứu tại trường đại học Công Nghệ, Đại Học Quốc Gia Hà Nội cũng như thời gian làm việc tại phòng phát triển hệ thống công ty máy tính Anh Đức. Với thời gian nghiên cứu hạn hẹp, luận văn không tránh khỏi những sai sót, em xin được sự góp ý chỉ bảo của các quý thầy cô và các bạn. LỜI CẢM ƠN 3 DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT 4 DANH MỤC CÁC HÌNH VẼ 5 MỞ ĐẦU 6 CHƯƠNG 1: CẤU TRÚC MẠNG 7 1.1. Định nghĩa mạng máy tính 7 1.2. Kiến trúc mạng máy tính 8 1.2.1. Topo mạng 8 1.2.2. Giao thức mạng 9 1.3. Phân loại mạng máy tính 10 1.3.1 Mạng cục bộ (Local Area Networks - LAN) 10 1.3.2. Mạng diện rộng (Wide Area Networks - WAN) 11 1.3.3. Mạng đô thị (MAN) 12 1.3.4. Mạng lưu trữ (SAN) 13 1.3.5 Mạng riêng ảo (VPN) 13 1.4. Mô hình OSI 14 1.5. Mô hình OSI với hệ thống cân bằng tải 15 CHƯƠNG 2: 17 TỔNG QUAN VỀ HỆ THỐNG CÂN BẰNG TẢI SERVER 17 2.1 Tại sao phải xây dựng hệ thống cân bằng tải? 17 2.1.1.So sánh hệ thống cân bằng tải và hệ thống thông thường 18 2.2.Các giải pháp chia tải trên thế giới 19 2.2.2. Chia tải nhờ proxy 20 2.2.3. Chia tải nhờ thiết bị chia kết nối 20 2.3. Các thành phần của SLB 21 2.3.1. Chức năng của các thành phần trong SLB 21 2.3.3. Hoạt động của hệ thống cân bằng tải server 30 2.3.4. Kiến trúc hệ thống cân bằng tải 31 2.3.5 Phân phối lưu lượng trong SLB 33 2.3.6. Thuật toán cân bằng tải 38 2.3.7. Quá trình hội tụ của SLB 39 2.3.7. Hiệu suất của SLB 40 CHƯƠNG 3: 42 TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG 42 SERVER LOAD BALANCING 42 3.1. Giải pháp SLB dựa trên luân chuyển vòng DNS 42 3.2. Đánh giá SLB dựa trên luân chuyển vòng DNS 44 3.2.1. Ưu điểm của phương pháp luân chuyển vòng DNS 44 3.2.2. Nhược điểm của phương pháp này 44 3.3. Demo giải pháp SLB dựa trên DNS round robin 46 Cân bằng tải máy chủ web 46 KẾT LUẬN 49 Tài liệu tham khảo 51

doc50 trang | Chia sẻ: banmai | Lượt xem: 2330 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Công nghệ cân bằng tải server, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ường thường thì sẽ có vài máy chủ và VIP sẽ dàn đều luồng dữ liệu đến cho các máy chủ bằng cách sử dụng các metric hoặc các phương thức được mô tả trong phần “Active - Active Scenario” sau đây. Các máy chủ (Servers): Máy chủ chạy một dịch vụ được chia sẻ tải giữa các dịch vụ khác. Máy chủ thường được ám chỉ tới các máy chủ HTTP, mặc dù các máy chủ khác hoặc ngay cả những dịch vụ khác có liên quan. Một máy chủ thường có một địa chỉ IP và một cổng TCP/UDP gắn liền với nó và không có địa chỉ IP công khai (điều này còn phụ thuộc vào topo của mạng). Nhóm (Groups): Dùng để chỉ một nhóm các máy chủ được cân bằng tải. Các thuật ngữ như “farm” hoặc “server farm” có cùng một ý nghĩa với thuật ngữ này. Cấp độ người dùng truy nhập (User - Access Levels): Là một nhóm các quyền được gán cho một người dùng nào đó khi đăng nhập vào một thiết bị cân bằng tải. Không chỉ những nhà cung cấp thiết bị khác nhau cung cấp những cấp độ truy nhập khác nhau, mà hầu hết các dịch vụ cũng sẽ có những cách thức truy nhập rất khác nhau. Cách triển khai phổ biến nhất là của Cisco, cung cấp truy nhập dựa trên tài khoản người dùng (cho phép cả tài khoản superuser). Một phương thức phổ biến khác là cách thức truy cập cấp độ người dùng được dùng trong các hệ thống Unix. Read-only: Cấp độ truy cập chỉ đọc (Read-only) không cho phép bất kỳ một thay đổi nào được thực hiện. Một người dùng có quyền chỉ đọc chỉ có thể xem các thiết đặt, các cấu hình, và nhiều thứ khác nữa nhưng không thể thực hiện được bất kỳ một thay đổi nào cả. Một tài khoản như thế được sử dụng để xem các thống kê hiệu suất hoạt động của thiết bị.Truy nhập chỉ đọc thường là cấp độ truy cập đầu tiên của một người dùng khi đăng nhập vào hệ thống trước khi thay đổi sang các chế độ với quyền truy cập cao hơn. Superuser: Superuser là cấp độ truy cập cho phép người dùng có đầy đủ quyền điều khiển hệ thống. Superuser có thể thêm các tài khoản khác, xóa file, cấu hình lại hệ thống với bất kỳ tham số nào. Các cấp độ khác: Rất nhiều sản phẩm cung cấp thêm một vài cấp độ người dùng trung gian ở giữa hai cấp độ trên, có những quyền giới hạn trên hệ thống. Giải pháp dự phòng (Redundancy) Giải pháp dự phòng rất đơn giản: nếu một thiết bị gặp trục trặc, thiết bị đó sẽ được thay thế bởi một thiết bị khác mà không hoặc gây ít ảnh hưởng nhất đến hoạt động của toàn bộ hệ thống. Thiết bị được thay thế sẽ thực hiện những chức năng giống như thiết bị bị thay thế. Hầu hết các thiết bị trên thị trường đều có khả năng này. Có một vài cách để thực hiện khả năng này. Cách thông thường nhất là sử dụng hai thiết bị. Một giao thức sẽ được sử dụng bởi một trong hai thiết bị để kiểm tra tình trạng hoạt động của thiết bị còn lại. Trong một vài tình huống, cả hai thiết bị đều hoạt động, đáp ứng các luồng dữ liệu đến. Trong một vài tình huống khác, sẽ chỉ có một thiết bị hoạt động chính, thiết bị còn lại sẽ được sử dụng trong tình huống hỏng hóc hoặc trục trặc. Vai trò của việc dự phòng Trong giải pháp dự phòng, tồn tại một quan hệ là active - standby. Một thiết bị, hay còn gọi là thiết bị đang hoạt động thực hiện một vài hoặc đầy đủ các chức năng chính, trong khi đó thiết bị dự phòng sẽ đợi để thực hiện những chức năng này. Mối quan hệ này cũng có thể được gọi là mối quan hệ master/slave. Trong những tình huống nhất định, cả hai thiết bị sẽ là chủ (master) trong một vài chức năng và làm phục vụ (slave) trong một vài chức năng khác nhằm phân tán tải. Cũng trong một vài tình huống khác, cả hai thiết bị đều là chủ (master) của tất cả các chức năng được chia sẻ giữa hai thiết bị. Quan hệ này còn được gọi là quan hệ active - active. Kịch bản Active - Standby (hoạt động - chờ) Kịch bản dự phòng hoạt động - chờ là cách dễ nhất để thực hiện. Một thiết bị sẽ nhận toàn bộ luồng dữ liệu đến, trong khi đó thiết bị còn lại sẽ chờ trong các tình huống trục trặc. Hình 2.1: Kịch bản Active – Standby Nếu thiết bị đang hoạt động gặp trục trặc, một thiết bị kia sẽ xác định trục trặc và nhận xử lý toàn bộ luồng dữ liệu đến. Hình 2.2: Hoạt động của kịch bản Active - Standby Kịch bản Active - Active Có một vài biến thể của kịch bản này. Trong tất cả các trường hợp, cả hai thiết bị đều chấp nhận xử lý luồng dữ liệu đến. Trong tình huống một trong hai thiết bị gặp trục trặc thì thiết bị còn lại sẽ nhận thực thi luôn cả những chức năng của thiết bị gặp trục trặc. Trong một biến thể khác, VIPs được phân phối giữa hai thiết bị cân bằng tải (Load Balancer - LB) để chia sẻ luồng dữ liệu đến. VIP 1 đến LB A, VIP 2 đến LB B. Xem hình 2 - 3. Hình 2.3: Kịch bản Active-Active Trong một biến thể khác, cả hai VIPs sẽ đều trả lời trên cả hai LB với một giao thức phá vỡ sự hạn chế rằng cả hai LB sẽ không có cùng một địa chỉ IP. Hình 2.4: Hoạt động của kịch bản Active-Active Trong tất cả các kịch bản active - active, nếu một LB gặp trục trặc, các VIP còn lại sẽ tiếp tục trả lời trên LB còn lại. Những thiết bị còn lại sẽ thực thi hết tất cả các chức năng. Hình 2-5. VRRP Giao thức dự phòng phổ biến nhất là giao thức VRRP (Virtual Router Redundancy Protocol). Đây là một chuẩn mở và các thiết bị được cho là hỗ trợ VRRP sẽ đều phù hợp đối với các đặc điểm được mô tả trong RFC 2338. Hình 2.5: Hoạt động của VRRP Mỗi một thiết bị trong một cặp gửi đi các packet và nhận phản hồi từ các thiết bị còn lại. Nếu không nhận được phản hồi từ các thiết bị khác thì thiết bị này sẽ đánh giá là thiết bị kia bị vô hiệu hóa và bắt đầu thực hiện tiếp quản tất cả các chức năng. Chúng ta không cần nắm rõ tất cả các chi tiết bên trong của giao thức VRRP, tuy nhiên một vài đặc điểm của giao thức này cũng cần được nắm rõ. VRRP sử dụng cổng UDP 1985 để gửi đi các packet tới địa chỉ multicast là 225.0.0.2. Những chi tiết này sẽ rất hữu ích trong khi làm việc với các bộ lọc IP hoặc các thiết bị có chức năng tường lửa. VRRP đòi hỏi cả hai thiết bị đều có thể giao tiếp được với nhau. Nếu như cô lập một trong hai thiết bị đó với thiết bị còn lại thì mỗi thiết bị đó sẽ xác định thiết bị đã chết và tiếp quản trạng thái master. Trường hợp này có gây ra những lỗi nghiêm trọng trong mạng bởi vì xung đột địa chỉ IP hoặc các vấn đề khác sẽ xảy ra khi cả hai thiết bị đều nghĩ rằng chúng đang là thiết bị đang hoạt động trong kịch bản active - standby. xxRP Có một vài phiên bản thương mại của giao thức VRRP và tên của chúng đều kết thúc bằng “RP” như ESRP của Extreme Network (Extreme Standby Router Protocol) hay HSRP (Hot Standby Routing Protocol) của Cisco. Mặc dù các giao thức này có một vài điểm khác biệt so với chuẩn tuy nhiên tất cả chúng đều thực thi những chức năng cơ bản nhất. Cáp Fail-Over Một phương pháp khác để xác định thiết bị gặp trục trặc giữa một cặp thiết bị là cáp fail-over. Cách này sử dụng một giao thức kiểm tra trên một đường serial nối giữa một cặp LB. Nếu cáp fail-over bị ngắt, nó sẽ gây ra tình huống là cả hai thiết bị đều nghĩ rằng mình đang hoạt động và đều đặt trạng thái master. Cũng giống như đối với VRRP, điều này cũng sẽ gây ra các vấn đề nghiêm trọng đối với mạng. STP (Spanning-Tree Protocol) là một giao thức dự phòng cho lớp 2 nhằm phòng ngừa việc lặp kết nối. STP xác định độ ưu tiên cho những cổng được cho trước, và khi tồn tại nhiều đường đi cho luồng dữ liệu đến, chỉ có cổng với độ ưu tiên cao nhất mới được hoạt động, tất cả các cổng còn lại sẽ bị tắt. Stateful Fail-Over (Fail-Over có trạng thái) Một vấn đề xuất hiện trong tình huống Fail-Over là nếu như một thiết bị gặp trục trặc thì tất cả các kết nối TCP đang hoạt động đều bị reset và như thế thông tin về sequence number bị mất. Kết quả là thông báo mạng bị lỗi sẽ được hiển thị trên trình duyệt của bạn. Và dĩ nhiên, nếu như bạn đang triển khai một vài dạng kết nối liên tục thì thông tin cũng sẽ bị reset (một kịch bản tồi cho các ứng dụng dạng web-store). Một vài nhà cung cấp đưa ra một tính năng đó là stateful fail-over (fail-over có trạng thái). Tính năng này sẽ lưu giữ thông tin về các session cũng như các thông tin liên tục trên cả thiết bị đang hoạt động và thiết bị dự phòng. Nếu thiết bị chính đang hoạt động gặp trục trặc thì thiết bị dự phòng sẽ có tất cả các thông tin cần thiết và như thế dịch vụ sẽ không bị đứt đoạn giữa chừng. Và như vậy người dùng sẽ không nhận biết được điều gì đang xảy ra. Tính liên tục (Persistence) Sự liên tục là hành động giữ cho luồng dữ liệu đến cuả một người dùng xác định sẽ chỉ đến một máy chủ duy nhất. Trong khi thiết bị SLB có thể có một vài máy để lựa chọn thì nó sẽ luôn giữ luồng dữ liệu đến của một người dùng đến một máy chủ duy nhất. Điều này đặc biệt quan trọng đối với các ứng dụng kiểu web-store - cho phép người dùng điền các thông tin mua bán và những thông tin này chỉ được lưu lại trên một máy tính duy nhất. Có một số cách để thực hiện kết nối liên tục tuy nhiên mỗi cách đều có những ưu và nhược điểm nhất định. Kiểm tra dịch vụ (Service Checking) Một nhiệm vụ của thiết bị SLB là nhận biết khi nào server hoặc dịch vụ bị treo và loại bỏ server đó ra khỏi danh sách quay vòng. Tính năng này còn được gọi là kiểm tra tình trạng (Health Checking). Có một số cách để thực hiện việc kiểm tra này từ cách đơn giản nhất như ping kiểm tra, kiểm tra cổng (kiểm tra xem cổng 80 có trả lời hay không) hoặc kiểm tra nội dung trong trường hợp web server được truy vấn cho các phản hồi đặc biệt nào đó. Một thiết bị SLB sẽ chạy kiểm tra các dịch vụ một cách liên tiếp, quan những khoảng thời gian được người dùng định nghĩa sẵn. Thuật toán cân bằng tải (Load Balancing Algorithm) Tùy theo những yêu cầu nhất định của người dùng mà có một số cách thức phân tán tải giữa các nhóm server sử dụng một metric cho sẵn. Các cách thức đó dựa trên các thuật toán được lập trình sẵn trong thiết bị. Các cách thức này chạy ở lớp trên cùng và kết hợp được với bất kỳ một cách thức duy trì tính liên tục nào. Chúng được gán cho những VIP riêng lẻ. Cơ sở hạ tầng cung cấp Hạ tầng cơ sở mạng là sự kết hợp của các mạng thành phần cung cấp kết nối tới Internet, Extranet hoặc Intranet cho máy chủ web. Nó kết nối giữa các máy chủ web và người sử dụng dịch vụ. Có hai cách để thực hiện điều này: tại một địa điểm được kiểm soát bởi một site hoặc một địa điểm được duy trì bởi một colocation / nhà cung cấp dịch vụ hosting cho các công ty. Trung tâm dữ liệu: Các site của chúng ta dù chạy ở các mạng cục bộ hay chạy trên máy chủ của các nhà cung cấp hosting thì chúng đều được đặt tại các data center. Data Center là một khái niệm dùng để chỉ một khu vực có độ an toàn cao, môi trường được điều tiết (thường sử dụng điều hòa không khí), các thiết bị phòng cháy chữa cháy không sử dụng nước (như Halon hoặc FM200) và hệ thống các UPS lưu trữ điện năng. Số tiền được đầu tư vào đây có thể là một khía cạnh để xác định chất lượng của một data center. Leased Line: Một site có thể chạy với một hoặc nhiều các kết nối leased line của một hay nhiều nhà cung cấp dịch vụ. Leased line đơn giản có thể là các đường DSL cũng có thể rất phức tạp như sử dụng nhiều đường OC3s chạy trên các phiên BGP đầy đủ tới nhiều nhà sử dụng. Lợi ích mà Leased line đem lại là người chủ có toàn quyền điều khiển và truy cập vào các thiết bị của mình. Hình 2 - 6 là một ví dụ một cách sử dụng leased line phổ biến: một điểm kết nối ra Internet thông qua 2 đường DS-3 (45Mbps) của hai nhà cung cấp dịch vụ khác nhau. Site này có thể chạy BGP trên cả hai đường kết nối này để dự phòng trong trường hợp một trong hai đường gặp trục trặc. Colocation Hình 2.6 Mô tả Colocation Colocation là một dịch vụ cho phép bạn lắp đặt và sắp xếp các máy chủ của mình tại địa điểm của nhà cung cấp dịch vụ. Thông thường là các rack hoặc các lồng an ninh. Nhà cung cấp sẽ đảm bảo an toàn, cung cấp điện năng, điều hòa không khí cũng như băng thông cho các thiết bị của bạn. Những nhà cung cấp dịch vụ này sẽ cho phép các thiết bị của bạn kết nối tới các đường kết nối backbone của họ thông qua “network drop” thường là sử dụng kết nối Ethernet. Điểm lợi của cách này là băng thông của nhà cung cấp dịch vụ thường có khả năng mở rộng hơn là những gì bạn có với các thiết bị của mình. Nếu bạn muốn mở rộng băng thông từ nhà cung cấp dịch vụ, bạn chỉ cần yêu cầu nhà cung cấp hoặc nâng cấp các kết nối Ethernet cùa mình. Điều này sẽ không tốn quá nhi Còn nếu khi bạn sử dụng Leased line thì bạn phải mất từ 30 ngày đến 6 tháng để yêu cầu công ty viễn thông tăng thêm băng thông cho đường kết nối của mình như đường T-1 (1,5 Mbps) hoặc DS-3 (45 Mbps). Với các đường kết nối có băng thông lớn hơn thì sẽ cần thời gian lâu hơn. Colocation là một dịch vụ được ưa chuộng hiện nay bởi các yếu tố giá cả và khả năng mở rộng mà nó đem lại. Dịch vụ này sẽ tốn ít chi phí và dễ dàng triển khai hơn đối với các công ty vì các công ty sẽ không cần phải quan tâm đến data center cũng như là các đường kết nối. Các đường kết nối mạng thường thường rất phức tạp, có liên quan đến các điểm ngang hàng, các leased line tới các nhà cung cấp, và có thể là chính đường backbone của bạn. Thông thường, tất cả các site chỉ cần quan tâm đến network drop từ nhà cung cấp dịch vụ. 2.3.3. Hoạt động của hệ thống cân bằng tải server Ở phần trên đã tìm hiểu về các khái niệm và các thành phần cơ bản của hệ thống cân bằng tải server. Phần tiếp theo này sẽ trình bày SLB hoạt động như thế nào nhìn trên khía cạnh mạng. Mô hình SLB đơn giản được mô tả như ở hình dưới đây. Hình 2.7: Hệ thống SLB đơn giản SLB 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ê 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. 2.3.4. 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. 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) 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ả các 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 server, 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 SLB 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, SLB 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, SLB 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. 2.3.5 Phân phối lưu lượng trong SLB Như ta có thể thấy, luồng dữ liệu từ người dùng cuối tới thiết bị cân bằng tải, tới máy chủ thực sự phía sau và sau đó quay ngược trở lại người dùng cuối. Phần này sẽ phân chia quá trình đi của gói tin trên từng đoạn mạng để giúp cho việc hiểu rõ SLB hoạt động như thế nào. SLB hoạt động bởi việc điều khiển gói tin trước và sau khi nó tới server thực sự phía sau. Việc này thực hiện một cách đơn giản bởi việc sử dụng địa chỉ IP đích và nguồn tại lớp 3 trong hoạt động sử lý được biết đến như là NAT (Network Address Translation). Hình 2.8: Hành trình của một gói dữ liệu Trong Hình 2.3, ta có thể thấy một gói dữ liệu có địa chỉ nguồn là 208.185.43.202 địa chỉ đích là 192.168.0.200. Bộ định tuyến sử dụng các thông tin này để chuyển tiếp dữ liệu trên mạng qua các trạm trung gian tới đích. Một vấn đề có tính chất quan trọng sống còn với SLB nói riêng và mạng TCP/IP nói chung là, khi gửi một gói dữ liệu tới một địa chỉ đích, gói dữ liệu đó cần phải có báo nhận lại với cùng địa chỉ nguồn và đích hay nói một cách khác, khi gửi một gói tin tới một máy đích, máy đích phải gửi ngược trở lại máy gửi với địa chỉ đích là máy gửi và địa chỉ nguồn là địa chỉ của chính máy nhận, nếu từ một địa chỉ khác gói dữ liệu sẽ bị loại bỏ. Nguyên tắc này không có ý nghĩa quan trọng với gói tin UDP do UDP sử dụng giao thức không hướng nối (Connectionless). Mặc dù vậy, phổ biến các SLB dựa trên giao thức hướng nối TCP. Để sáng tỏ SLB hoạt động cụ thể như thế nào cùng xét một ví dụ cụ thể về cách thức một người dùng cuối truy cập tới máy chủ web đặt trong hệ thống SLB. Như ta có thể thấy ở hình 2.3. một máy khách có địa chỉ 208.185.43.202, một VIP có địa chỉ 192.168.0.200 và máy chủ web thực sự có địa chỉ 192.168.0.100. Để duyệt web, người dùng cuối sử dụng một URL xác định vị trí của website cái mà ánh xạ tới địa chỉ của VIP là 192.168.0.200. Gói dữ liệu với địa chỉ nguồn 208.185.43.202 và địa chỉ đích là 192.168.0.200. Thiết bị cân bằng tải thay vì trả lời yêu cầu từ máy khách, nó lưu lại gói dữ liệu và viết lại thông tin điều khiển trong gói dữ liệu bằng việc thay đổi địa chỉ đích trong gói dữ liệu thành 192.168.0.100 sao cho chuyển tiếp được gói dữ liệu tới máy chủ web thật có địa chỉ 192.168.0.100. Như vậy trong giai đoạn 2 này địa nguồn là 208.185.43.202 và đích là 192.168.0.100. Máy chủ thực khi nhận được yêu cầu sẽ gửi thông tin phản hồi tới người dùng cuối. Trong giai đoạn 3 này địa chỉ nguồn trở thành 192.168.0.100 và đích trở thành 208.185.43.202, như vậy nảy sinh một vấn đề. Người dùng sẽ bỏ qua gói tin đáp lại từ địa chỉ 192.168.0.100 bởi kết nối không được gửi đến máy có địa chỉ đó mà đến địa chỉ 192.168.0.200. SLB giải quyết vấn đề này bằng cách thay đổi đường đi mặc định của máy chủ thực và thay đổi địa chỉ nguồn của gói tín thành địa chỉ của VIP 192.168.0.200 trước khi gửi trở lại máy khách. Trong giai đoạn 4 này địa chỉ nguồn là 192.168.0.200 và đích là 208.185.43.202. Với lần thay đổi thông tin cuối này, gói dữ liệu đã hoàn thành chuyến đi và khởi tạo thành công một kết nối. Nhìn từ phía máy khách, nó dường như chỉ là một kết nối thông thường tới đúng một máy chủ, mà không hề biết trong thực tế có thể có một vài đến hàng trăm máy chủ thực sự phía sau trả lời yêu cầu của nó. Có thể hình dung các bước theo mô tả ở bảng dưới đây. Direct Server Return DSR là một trong các phương pháp phân phối lưu lượng của các thiết bị cân bằng tải từ các kết nối bên ngoài. Phương pháp phân phối này làm tăng sự thực thi của thiết bị cân bằng tải bởi việc giảm một cách đáng kể lưu lượng đi qua thiết bị và quá trình xử lý viết lại thông tin điều khiển trong gói dữ liệu như các bước ở phần trên. DSR làm điều đó bởi việc bỏ qua giai đoạn 3 trong bảng xử lý ở trên. Bởi việc lợi dụng một máy chủ thực phía trong gửi ra ngoài một gói dữ liệu với địa chỉ nguồn đã được viết lại là địa chỉ nguồn của VIP (trong trường hợp của này là 192.168.0.200). DSR thực hiện điều đó bằng cách điều khiển khung dữ liệu tại lớp 2 để thực hiện SLB. Xử lý đó được biết đến như là MAT (MAC Address Translation). Để hiểu xử lý đó và cách DSR làm việc như thế nào trước hết cần xem xét một số đặc tính của packets tại lớp 2 và mối liên quan của nó tới SLB. Địa chỉ vật lý của Card mạng (Network Interface Card – NIC): Đó là một số 48 bit, thường được biểu diễn bằng 12 số hexa (cơ số 16), trong đó 24 bit đầu là mã số của công ty sản xuất Card mạng, còn 24 bit sau là số seri của từng Card mạng đối với một hãng sản xuất. Như vậy người ta bảo đảm không có hai Card mạng nào trùng nhau về địa chỉ vật lý, nói chính xác hơn là số “Identification” của từng Card mạng. Các số Identification này được lưu trong một chip ROM gắn trên mỗi Card mạng ngay từ khi sản xuất, nên còn gọi là “Burnt-in Address”, do đó người dùng không thể thay đổi được. Trên một mạng Ethernet, địa chỉ MAC giúp cho gói tin IP tìm đúng thiết bị vật lý cần nhận gói tin. DSR sử dụng sự kết hợp của MAT và một máy chủ được cấu hình đặc biệt để thực thi SLB mà không đi ra qua thiết bị cân bằng tải. Một máy chủ thực sự đã được cấu hình với một địa chỉ như cách làm việc thông thường, nhưng nó cũng được cấu hình với địa chỉ IP của VIP. Theo nguyên tắc hoạt động của mạng thì không thể tồn tại hai máy có cùng một địa chỉ IP bởi vì hai địa chỉ MAC không thể kết hợp tới cùng một địa chỉ IP. Để giải quyết vấn đề này, thay vì việc cấu hình địa chỉ IP của VIP tới giao diện mạng của máy chủ thực thì ta kết hợp nó với giao diên loopback. Giao diện loopback là một giao diện ảo sử dụng cho việc truyền thông bên trong của máy chủ và thông thường không có tác động tới cấu hình hay hoạt động của máy chủ. Địa chỉ IP của giao diện loopback thường là 127.0.0.1, mặc dù vậy có thể cấu hình nhiều địa chỉ IP trên cùng một giao diện (thường được biết đến như địa chỉ IP bí danh) và giao diện loopback cũng không nằm ngoài khả năng đó. Như vậy địa chỉ của VIP có thể được cấu hình trên giao diện loopback mà không ảnh hưởng tới hoạt động của mạng, không gây ra sự xung đột với máy chủ khác trong mạng. Trong trường hợp SLB, máy chủ web hay các dịch vụ khác được cấu hình kết hợp với địa chỉ của VIP trên giao diện loopback chứ không phải địa chỉ trên giao diện vật lý của máy chủ. Bước tiếp theo thực tế yêu cầu có được lưu lượng tới giao diện loopback của máy chủ thực. Để giải quyết vấn đề này SLB sử dụng một kĩ thuật gọi là MAT (MAC address Translation). Như đã trình bày ở trên mọi máy trong mạng Ethernet đều có một địa chỉ MAC để xác định vị trí của nó trong mạng. Thiết bị cân bằng tải xử lý lưu lượng trên VIP và thay vì việc thay đổi địa chỉ IP đích như phương pháp trên. DSR sử dụng MAT để biến đổi địa chỉ MAC đích. Máy chủ thông thường sẽ loại bỏ lưu lượng khi nó không có địa chỉ IP của VIP, nhưng trong giải pháp của SLB thì do địa chỉ của của VIP đã được cấu hình trên giao diện loopback của của máy chủ thực nên đã “lừa” được máy chủ chấp nhận lưu lượng gửi tới nó. Quá trình sử lý này giúp cho máy chủ khi gửi báo nhận lại cho máy khách vẫn đảm bảo có địa chỉ IP nguồn là địa chỉ của VIP do đó đã bỏ qua được giai đoạn 3 trong quá trình gửi dữ liệu trong phương pháp ở trên. Ta có thể hình dung toàn bộ quá trình trên qua bảng tóm tắt dưới đây. 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ứ 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-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. Chế độ 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 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). Network Load Balancing (NLB) 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). 2.3.6. 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. 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. 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ị ả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. 2.3.7. Quá trình hội tụ của SLB 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), SLB 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. 2.3.7. Hiệu suất của SLB 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 các 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. Thông lượng và thời gian đáp ứng yêu cầu: NLB nâng cao hiệu năng hệ thống bằng cách tăng thông lượng và tối thiểu hoá thời gian đáp ứng tới các yêu cầu của client. Khi năng lực của các host trong nhóm được khai thác tối đa, nó sẽ không thể cung cấp thêm thông lượng và thời gian đáp ứng tăng đột biến tuỳ theo độ trễ hàng đợi các yêu cầu của client. Bổ sung thêm host sẽ cho phép tăng thông lượng và giảm thời gian đáp ứng. Nếu nhu cầu của khách hàng tiếp tục tăng, các host sẽ được thêm vào cho đến khi mạng con bão hoà. Và nếu tải tiếp tục tăng, cần sử dụng nhiều nhóm NLB và việc phân phối lưu lượng giữa các host được thực hiện bằng kỹ thuật Round Robin DNS. 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 sử dụng chung một switch. Trong những trường hợp này, chạy NLB trong chế độ multicast và thiết lập mạng LAN ảo để hạn chế tràn switch là biện pháp khắc phục rất hiệu quả khiếm khuyết này. Ngoài ra, tính khả mở của NLB quyết định khả năng cải thiện hiệu năng của hệ thống khi các host được thêm vào nhóm. CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG SERVER LOAD BALANCING Phần trên đã trình bày những vấn đề về kĩ thuật cơ bản của SLB: Các mô hình triển khai SLB, các kĩ thuật phân phối lưu lượng, xử lý gói dữ liệu. Các vấn đề về kĩ thuật trên đã được nhiều hãng trên thế giới giải quyết trong các sản phẩn của họ. Do chưa có một chuẩn thống nhất trên thế giới cho các thiết bị cân bằng tải nên vấn đề cần đặt ra là tính tương thích giữa các sản phẩn của các hãng khác nhau. Như vậy, các nguyên tắc và các mô hình thực hiện SLB ở đây là các nguyên tắc và mô hình nói chung, còn cụ thể đối với mỗi sản phẩn của các hãng khác nhau lại có các giải pháp chi tiết hơn cho sản phẩn của họ. Việc lựa chọn một giải pháp SLB phụ thuộc vào mục đích và quy mô của ứng dụng mà các tổ chức định triển khai. Trong phần này sẽ tiến hành thiết kế xây dựng một hệ thống cân bằng tải máy chủ thử nghiệm, qua đó sẽ hiểu sâu sắc hơn hệ thống SLB, cũng như có những bổ sung cho lý thuyết. Để dễ dàng cho việc thử nghiệm ở đây em xin trình bày một hệ thống cân bằng tải đơn giản trong các ứng dụng web sử dụng phương pháp luân chuyển vòng DNS. 3.1. Giải pháp SLB dựa trên luân chuyển vòng DNS DNS là viết tắt của Domain Name System. DNS Server là máy chủ phân giải tên miền. Mỗi máy tính, thiết bị mạng tham gia vào mạng Internet đều "nói chuyện" với nhau bằng địa chỉ IP (Internet Protocol) . Để thuận tiện cho việc sử dụng và dễ nhớ ta dùng tên (domain name) để xác định thiết bị đó. Hệ thống tên miền DNS (Domain Name System) được sử dụng để ánh xạ tên miền thành địa chỉ IP. Vì vậy, khi muốn liên hệ tới các máy, chúng chỉ cần sử dụng chuỗi ký tự dễ nhớ (domain name) như: www.coltech.vnu.edu.vn, www.vnu.edu.vn, thay vì sử dụng địa chỉ IP là một dãy số dài khó nhớ. Hình bên dưới mô tả quá trình truy cập vào website của trường Đại học Công Nghệ có địa chỉ là www.coltech.vnu.edu.vn Khi nhập một URL vào trong trình duyệt (ví dụ như www.coltech.vnu.edu.vn) thì trình duyệt sẽ gửi một yêu cầu đến DNS yêu cầu nó trả về địa chỉ IP của site. Đây được gọi là việc tra cứu DNS. Sau khi trình duyệt Web có được địa chỉ IP cho site thì nó sẽ liên hệ với site bằng địa chỉ IP, và hiển thị trang vừa yêu cầu. Máy chủ DNS thường có một địa chỉ IP được bản đồ hóa với một tên site nào đó. Trong ví dụ này giả sử thì site là www.coltech.vnu.edu.vn bản đồ hóa thành địa chỉ IP là 203.113.130.201 Để cân bằng tải bằng DNS, máy chủ DNS phải duy trình một số địa chỉ IP khác nhau cho cùng một tên site. Nhiều địa chỉ IP thể hiện nhiều máy trong một cluster, tất cả trong số chúng đều bản đồ hóa đến một tên site logic. Trong ví dụ này, www.coltech.vnu.edu.vn có thể được cấu hình trên ba máy chủ trong một cluster với các địa chỉ IP dưới đây: 203.113.130.201 203.113.130.202 203.113.130.203 Trong trường hợp này, máy chủ DNS được bản đồ hóa như sau: www.coltech.vnu.edu.vn 203.113.130.201 www.coltech.vnu.edu.vn 203.113.130.202 www.coltech.vnu.edu.vn 203.113.130.203 Khi yêu cầu đầu tiên đến được máy chủ DNS, nó sẽ trả về địa chỉ IP 203.113.130.201, máy đầu tiên. Khi có yêu cầu thứ hai, nó sẽ trả về địa chỉ IP thứ hai: 203.113.130.202. Tiếp tục như vậy, với yêu cầu thứ tư, địa chỉ IP đầu tiên lại được lặp lại. Bằng cách sử dụng luân chuyển vòng DNS như ở trên, tất cả các yêu cầu đối với một site nào đó đều được phân phối đều đến tất cả các máy trong cluster. Chính vì vậy, với phương pháp cân bằng tải này, tất cả các nút trong cluster đều được sử dụng. 3.2. Đánh giá SLB dựa trên luân chuyển vòng DNS 3.2.1. Ưu điểm của phương pháp luân chuyển vòng DNS Không đắt và dễ dàng thiết lập: Các quản trị viên hệ thống chỉ cần tạo một số thay đổi trong máy chủ DNS để hỗ trợ được việc luân chuyển vòng, và nhiều máy chủ DNS đã có sự hỗ trợ này. Nó không yêu cầu đến sự thay đổi mã của ứng dụng Web; trong thực tế, các ứng dụng Web không hề biết về cơ chế cân bằng tải mà nó bị thực hiện. Đơn giản: Phương pháp này không yêu cầu đến các chuyên gia về mạng trong việc thiết lập hoặc giỡ rối hệ thống trong trường hợp có vấn đề nào đó xay ra. 3.2.2. Nhược điểm của phương pháp này Có hai nhược điểm chính của phương pháp dựa trên phần mềm này là nó không cung cấp sự hỗ trợ mối quan hệ thời gian thực giữa các máy chủ với nhau và không hỗ trợ khả năng có sẵn cao. Không hỗ trợ mối quan hệ thời gian thực giữa các máy chủ. Mối quan hệ thời gian thực giữa các máy chủ là khả năng của hệ thống trong việc quản lý các yêu cầu của người dùng, máy chủ này hoặc bất kỳ máy chủ nào, phụ thuộc vào thông tin session được duy trì trên máy chủ hoặc tại mức cơ sở bản, mức cơ sở dữ liệu. Không có được khả năng hỗ trợ mối quan hệ giữa các máy chủ, phương pháp luân chuyển vòng DNS dựa vào một trong ba phương pháp đã được đưa ra để duy trì sự kiểm soát session hoặc sự nhận dạng người dùng đối với các yêu cầu đang đến trên HTTP. Các cookie Các trường ẩn Viết lại URL Khi một người dùng thực hiện một yêu cầu đầu tiên, máy chủ Web sẽ trả một thẻ bằng văn bản duy nhất để phân biệt người dùng đó. Các yêu cầu tiếp theo có thẻ này để sử dụng cookie, viết lại URL hoặc các trường ẩn, cho phép máy chủ xuất hiện để duy trì một session giữa máy khách và máy chủ. Khi người dùng thiết lập một session với một máy chủ, thì tất cả các yêu cầu đến sau thường đều đi đến cùng một máy chủ. Vấn đề ở đây là trình duyệt lưu địa chỉ IP của máy chủ đó. Khi Cache hết hạn, trình duyệt sẽ thực hiện một yêu cầu khác đối với máy chủ DNS để có được địa chỉ IP có liên kết với tên miền. Nếu máy chủ DNS trả về một địa chỉ IP khác, một máy chủ khác trong cluster, thì các thông tin về session sẽ bị mất. Không hỗ trợ cho khả năng có sẵn cao. Xem xét một cluster có n nút. Nếu một nút nào đó gặp vấn đề thì cứ yêu cầu thứ n đến máy chủ DNS đều hướng bạn đến một nút hỏng này. Một router thông minh có thể giải quyết được vấn đề này bằng cách kiểm tra các nút ở các khoảng thời gian nào đó, phát hiện ra các nút bị hỏng và gỡ bỏ chúng ra khỏi danh sách, chính vì vậy sẽ không có yêu cầu nào được gửi đến chúng nữa. Tuy vậy, vấn đề ở đây vẫn tồn tại nếu nút vẫn có nhưng ứng dụng Web đang chạy trên nút đã bị hỏng. Thay đổi cluster sẽ mất nhiều thời gian để truyền bá đến toàn bộ phần còn lại của Internet. Một lý do ở đây là trong nhiều tổ chức lớn – các ISP, các công ty, hay đại lý – lưu các yêu cầu DNS của họ để giảm lưu lượng mạng và thời gian request. Khi người dùng bên trong các tổ chức như vậy thực hiện một request thì hệ thống sẽ được kiểm tra danh sách các tên DNS của Cache đã được bản đồ hóa địa chỉ IP. Nếu hệ thống phát hiện thấy một entry nào thì nó sẽ trả địa chỉ IP về cho người dùng. Nếu nó không phát hiện thấy entry nào trong Cache nội bộ thì ISP sẽ gửi request DNS này đến máy chủ DNS và lưu sự đáp trả. Khi một entry đã được lưu hết hạn, ISP sẽ nâng cấp cơ sở dữ liệu nội bộ của nó bằng cách liên hệ với các máy chủ DNS khác. Khi danh sách các máy chủ của bạn thay đổi, nó có thể cần đến một khoảng thời gian ngắn cho các entry đã được lưu trên mạng của các tổ chức khác hết hạn và tìm kiếm danh sách các máy chủ đã được cập nhật. Trong suốt chu trình này, máy khách vẫn có thể thực hiện hành động “hit” nút máy chủ bị hỏng, nếu ISP của máy khách đó vẫn có một entry trỏ đến nó. Trong trường hợp như vậy, một số người dùng của ISP đó không thể truy cập vào site của bạn từ những lần truy cập ban đầu, thậm trí nếu cluster của bạn có các máy chủ dư thừa vẫn đang hoạt động. Một vấn đề còn lớn hơn xuất hiên khi gỡ bỏ (removing) một nút so với việc bổ sung. Khi bạn bớt đi một nút, người dùng có thể đang thực hiện “hit” một máy chủ không tồn tại. Còn khi bạn thêm một nút thì máy chủ đó vẫn chưa được sử dụng cho tới khi địa chỉ IP của nó đến được tất cả các máy chủ DNS. Mặc dù phương pháp này có thể cân bằng được một số lượng người dùng trên mỗi máy chủ, nhưng nó không hoàn toàn cân bằng tải máy chủ. Một số người dùng có thể yêu cầu mức tải cao hơn trong suốt một session của họ so với những người dùng khác ở trên máy chủ khác, và phương pháp này không thể bảo đảm chống lại được sự bất công bằng đó. 3.3. Demo giải pháp SLB dựa trên DNS round robin Cân bằng tải máy chủ web Sử dụng một bản ghi A có thể thực hiện cân bằng tải web Server theo hai cách. Định nghĩa nhiều bản ghi A với cùng một tên và các điạ chỉ IP khác nhau như ví dụ dưới đây. ; BIND data file for LAN interface ; $TTL 604800 @ IN SOA dns.coltech.vnu.edu.vn. thangdn@.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS coltech.vnu.edu.vn. IN NS 203.113.130.200 www IN A 203.113.130.201 IN A 203.113.130.202 IN A 203.113.130.203 2. Định nghĩa các bản ghi A tương ứng tên của từng máy chủ web với địa chỉ IP của nó. Sau đó sử dụng một bản ghi CNAME thực hiện cân bằng tải như sau. www0 IN A 203.113.130.201 www1 IN A 203.113.130.202 www2 IN A 203.113.130.203 www IN CNAME www0. coltech.vnu.edu.vn. IN CNAME www1.coltech.vnu.edu.vn. IN CNAME www2. coltech.vnu.edu.vn. Kết quả kiểm tra như sau. root@dns-server: ~ # root@dns-server: ~ # nslookup www.coltech.vnu.edu.vn Server: 127.0.0.1 Address: 127.0.0.1#53 Name: www.coltech.vnu.edu.vn Address: 203.113.130.202 Name: www.coltech.vnu.edu.vn Address: 203.113.130.203 Name: www.coltech.vnu.edu.vn Address: 203.113.130.201 root@dns-server: ~ # nslookup www.coltech.vnu.edu.vn Server: 127.0.0.1 Address: 127.0.0.1#53 Name: www.coltech.vnu.edu.vn Address: 203.113.130.203 Name: www.coltech.vnu.edu.vn Address: 203.113.130.201 Name: www.coltech.vnu.edu.vn Address: 203.113.130.202 root@dns-server: ~ # Như kết quả thu được khi tiến hành kiểm tra. Sau mỗi lần truy vấn địa chỉ www.coltech.vnu.edu.vn máy chủ dns trả lời với một địa chỉ ip trong nhóm đã được ánh xạ với tên miền www.coltech.vnu.edu.vn theo cơ chế luân chuyển vòng tròn. Như vậy tất cả các máy chủ trong nhóm đều được phân tải một cách đồng đều. KẾT LUẬN Cân bằng tải Server là một vấn đề quan trọng trong sự phát triển của công nghệ mạng. Chính vì vậy, việc thực hiện đề tài “Công nghệ cân băng tải server” đã có những đóng góp về mặt lý thuyết cũng như về mặt công nghệ trong việc tìm hiểu và xây dựng các hệ thống cân bằng tải máy chủ. Sau đây là những kết quả chính mà đề tài đã đạt được: Trình bày tổng quan về mạng máy tính và các giao thức mạng. Trình bày được các yêu cầu cấp thiết đặt ra cho các tổ chức, doanh nghiệp trong việc xậy dựng một hệ thống mạng, máy chủ có khả năng phục vụ được các yêu cầu ngày càng cao của mình như khả năng mở rộng dễ dành, tính sẵn sàng cao vẫn có khả năng hoạt động khi hệ thống xảy ra sự cố. Trình bày được chi tiết các công nghệ, cách thức phân phối lưu lượng trong các hệ thống SLB và ưu nhược điểm của từng công nghệ để từ đó giúp các nhà quản trị có những quyết định đúng đắn trong việc xây dựng giải pháp cho tổ chức của mình. Trong đề tài cũng thực hiện triển khai giải pháp cân bằng tải dựa trên công nghệ DNS round robin. Nhằn đưa ra một cái nhìn rõ ràng hơn về hoạt động của một hệ thống cân bằng tải. Trong phạm vi một luận văn, do hạn chế về thời gian nghiên cứu và các yếu tố khách quan khác, một số vấn đề liên quan của đề tài vẫn chưa giải quyết được trọn vẹn. Qua kết quả đạt được của luận văn cũng như các vấn đề chưa giải quyết được, em xin đề xuất cho hướng nghiên cứu tiếp theo như sau: Tiếp tục nghiên cứu và hoàn thiện lý thuyết về các phương pháp phân phối lưu lượng giữa các nút. Nghiên cứu mở rộng về các thuật toán cân bằng tải tối ưu. Thực hiện cài đặt thử nghiệm trên hệ thống mạng thực của các công ty, tổ chức. Tài liệu tham khảo Tài liệu tiếng việt [1]. Vũ Duy Lợi (2002), Mạng thông tin máy tính, NXB Thế giới [2] . Vương Đạo Vi, Mạng truyền dữ liệu. NXB Đại Học Quốc Gia Hà Nội. Tài liệu tiếng Anh [3]. Paul Albitz, Cricket Liu, DNS and BIND, Fourth Edition, 2001 [4]. Tony Bourke, Server Load Balancing, O'Reilly & Associates [5].

Các file đính kèm theo tài liệu này:

  • docCng ngh7879 cn b7857ng t7843i server.doc