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

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.

doc27 trang | Chia sẻ: lvcdongnoi | Lượt xem: 4007 | Lượt tải: 1download
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
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG CÂN BẰNG TẢI SERVER 1.1 Tại sao phải xây dựng hệ thống cân bằng tải? Trong thời đại bùng nổ của công nghệ thông tin hiện nay, mạng máy tính đóng vai trò ngày càng quan trọng hơn trong hoạt động của các doanh nghiệp, tổ chức cũng như các cơ quan nhà nước. Thậm chí ở một số đơn vị, chẳng hạn như các công ty hàng không hoặc các ngân hàng lớn, mạng máy tính có thể ví như hệ thần kinh điều khiển hoạt động của toàn doanh nghiệp. Sự ngừng hoạt động của mạng máy tính hay sự hoạt động kém hiệu quả của mạng máy tính trong những cơ quan này có thể làm tê liệt các hoạt động chính của đơn vị, và thiệt hại khó có thể lường trước được. Chúng ta đều biết các máy chủ là trái tim của của mạng máy tính, nếu máy chủ mạng hỏng, hoạt động của hệ thống sẽ bị ngưng trệ. Điều đáng tiếc là dù các hãng sản xuất đã cố gắng làm mọi cách để nâng cao chất lượng của thiết bị, nhưng những hỏng hóc đối với các thiết bị mạng nói chung và các máy chủ nói riêng là điều không thể tránh khỏi. Do vậy, vấn đề đặt ra là cần có một giải pháp để đảm bảo cho hệ thống vẫn hoạt động tốt ngay cả khi có sự cố xảy ra đối với máy chủ mạng. 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 và không giải quyết được các vấn đề đặt ra của các tổ chức. 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. Ngoài khả nǎng áp dụng với Web server, kỹ thuật này còn có thể áp dụng với các hệ server ứng dụng khác. SLB không chỉ làm nhiệm vụ phân phối tải cho các server mà còn còn cung cấp cơ chế đảm bảo hệ thống server luôn khả dụng trước các client. SLB không có yêu cầu đặc biệt gì về phần cứng, bất cứ máy tính nào hợp chuẩn đều có thể được sử dụng làm server. Chi phí triển khai nhờ đó giảm đáng kể. Kiến trúc phần mềm phân tán của SLB cho phép cung cấp hiệu nǎng và tính khả dụng của kỹ thuật này ở mức cao nhất. 1.1.1.So sánh hệ thống cân bằng tải và hệ thống thông thường Kịch bản A Kịch bản B Tính sẵn sàng cao Có Không Tính mở rộng Có Không Ứng dụng Xử lý đa nhiệm Xử lý nhanh đơn nhiệm Ưu điểm của cân bằng tải  Tính mở rộng: thêm hoặc bỏ bớt server một cách dễ dàng Tính sẵn sàng cao do hệ thống dùng nhiều Server Vì vậy hệ thống có tính dự phòng. Tính quản lý: Theo dõi và quản lý tập trung hệ thống Server, bảo dưỡng hệ thống server mà không cần tắt các dịch vụ Có thể tách các ứng dụng khỏi server Làm việc được với nhiều hệ điều hành Hiệu suất cao Server được nhóm lại thực hiện đa nhiệm vụ tốt hơn Tất cả Server đều hoạt động đúng công suất không có tình trạng một Server làm việc quá tải trong khi server khác lại đang “nhàn rỗi”. Những tổ chức nào cần có giải pháp cân bằng tải Các doanh nghiệp Nhà cung cấp dịch vụ ISP Trung tâm xử lý dữ liệu Chính phủ Phòng thí nghiệm Trường đại học, viện nghiên cứu… 1.2.Các giải pháp chia tải trên thế giới Việc chia tải có thể thực hiện bằng nhiều phương cách, hình thức khác nhau, với các công nghệ khác nhau hoặc kết hợp chúng lại: 1.2.1. Chia tải bằng phần mềm cài trên các máy chủ Kết hợp nhiều server một cách chặt chẽ tạo thành một server ảo (virtual server). Các hệ điều hành cho máy chủ thế hệ mới của các hãng Microsoft, IBM, HP... hầu hết đều cung cấp khả năng này, một số hãng phần mềm khác như Veritas(Symantec) cũng cung cấp giải pháp theo hướng này. Các giải pháp thuộc nhóm này có ưu điểm là quen thuộc với những nhà quản trị chuyên nghiệp, có thể chia sẻ được nhiều tài nguyên trong hệ thống, theo dõi được trạng thái của các máy chủ trong nhóm để chia tải hợp lý. Tuy nhiên, do sử dụng phần mềm trên server, tính phức tạp cao nên khả năng mở rộng của giải pháp này bị hạn chế, phức tạp khi triển khai cũng như khắc phục khi xảy ra sự cố, có rào cản về tính tương thích, khó có được những tính năng tăng tốc và bảo mật cho ứng dụng. 1.2.2. Chia tải nhờ proxy Nhóm này thường tận dụng khả năng chia tải sẵn có trên phần mềm proxy như ISA Proxy của Microsoft hay Squid phần mềm mã nguồn mở cài trên máy phổ dụng. Proxy này sẽ thực hiện nhiệm vụ chia tải trên các server sao cho hợp lý. Giải pháp này vì hoạt động ở mức ứng dụng nên có khả năng caching (là công nghệ lưu trữ cục bộ dữ liệu được truy cập với tần suất cao) và khả năng firewall ở tầng ứng dụng. Vì sử dụng máy phổ dụng nên giải pháp này có ưu điểm là chi phí thấp, khả năng mở rộng tốt vì cài đặt trên một máy độc lập, dễ quản trị. Tuy nhiên, cũng vì chỉ hoạt động ở mức ứng dụng nên hiệu năng không cao, vì sử dụng máy phổ dụng nên không được tối ưu, dễ tồn tại nhiều lỗi hệ thống, vì cài đặt trên một máy độc lập nên việc theo dõi trạng thái của các máy chủ gặp khó khăn. Nhược điểm lớn nhất của các giải pháp dòng này thường có tính ổn định kém, hiệu năng thấp, dễ mắc lỗi. Đây là điều không thể chấp nhận được đối với các hệ thống đòi hỏi tính sẵn sàng cao như ngân hàng, tài chính. 1.2.3. Chia tải nhờ thiết bị chia kết nối Nhóm này thường sử dụng các mođun cắm thêm trên các thiết bị chuyên dụng như Bộ định tuyến (Router) hay hay bộ chuyển mạch (Switch) để chia tải theo luồng, thường hoạt động từ layer 4 trở xuống. Vì sử dụng thiết bị chuyên dụng nên có hiệu năng cao, tính ổn định cao, khả năng mở rộng tốt hơn nhưng khó phát triển được tính năng bảo mật phức tạp như giải pháp proxy, thường thuật toán chia tải rất đơn giản như DNS round-robin (đây là thuật toán chia tải phổ biến nhất và đơn giản, tuy nhiên cứng nhắc và hiệu quả thấp. Với thuật toán này các yêu cầu về IP của một tên miền ứng với nhiều server sẽ được biên dịch thành địa chỉ IP của các server đó theo thứ tự quay vòng. Nhóm này có khả năng chia tải động kém, không theo dõi được trạng thái của máy chủ, xử lý kết nối ở mức ứng dụng rất kém, dễ gây lỗi ứng dụng và giá thành cao. Cách thức này cũng hoàn toàn không phù hợp đối với các hệ thống yêu cầu tính chuẩn xác của các hoạt động giao dịch như tài chính, ngân hàng. Như vậy, giải pháp có khả năng theo dõi trạng thái ứng dụng tốt thì mở rộng, tăng tốc, bảo mật kém(GP dùng phần mềm). Giải pháp mở rộng, tăng tốc, bảo mật tốt, thì theo dõi trạng thái ứng dụng kém, không ổn định, hiệu năng thấp(GP sử dụng proxy), giải pháp hiệu năng cao, ổn định, mở rộng tốt thì kém thông minh, dễ gây lỗi ứng dụng, tăng tốc kém(GP chia tải nhờ thiết bị chia kết nối). Trong khi đó, tất cả các yêu cầu về hiệu năng cao, ổn định, mở rộng tốt, tăng tốc tốt và bảo mật là rất quan trọng đối với các hoạt động của ngân hàng, chứng khoán và các nhà cung cấp dịch vụ. GP sẵn có của các hãng chỉ đáp ứng được một phần trong các yêu cầu trên như Module CSS của Cisco, ISA của Microsoft, hay Netscaler của Citrix) Như vậy yêu cầu thực tế đặt ra là phải xây dựng được một hệ thống hoàn chỉnh có khả năng quản trị lưu lượng, có khả năng kiểm soát, điều khiển và tối ưu hóa lưu lượng mạng chạy qua nó. SLB là một giải pháp có thể giải quyết được hầu hết các yêu cầu đặt ra ở trên với một sự tối ưu cao nhất. 1.3. Các thành phần của SLB 1.3.1. Chức năng của các thành phần trong SLB Một giải pháp cân bằng tải phải (Server Load Balancer) có những chức năng sau đây: Can thiệp vào luồng dữ liệu mạng tới một điểm đích. Chia luồng dữ liệu đó thành các yêu cầu đơn lẻ và quyết định máy chủ nào sẽ xử lý những yêu cầu đó. Duy trì việc theo dõi các máy chủ đang hoạt động, đảm bảo rằng các máy chủ này vẫn đang đáp ứng các yêu cầu đến. Nếu máy chủ nào không hoạt động đúng chức năng, máy chủ đó bắt buộc phải đưa ra khỏi danh sách xoay vòng. Cung cấp sự đa dạng bằng việc tận dụng nhiều hơn một đơn vị trong các tình huống fail-over (fail-over là khả năng tự động chuyển qua các thiết bị dự phòng khi gặp tình huống hỏng hóc hoặc trục trặc. Việc thực thi này được thực hiện mà không có sự can thiệp của con người cũng như không có bất sự cảnh báo nào). Cung cấp sự phân phối dự trên sự hiểu biết về nội dung ví dụ như đọc URL, can thiệp vào cookies hoặc truyền XML. Server Load Balancers: Load Balancer là một thiết bị phân phối tải giữa các máy tính với nhau và các máy tính này sẽ xuất hiện chỉ như một máy tính duy nhất. Phần dưới đây sẽ thảo luận chi tiết hơn về các thành phần của các thiết bị SLB. VIPs: Virtual IP (VIP): là một dạng thể hiện của của cân bằng tải. Mỗi VIP sử dụng một địa chỉ công khai IP. Bên cạnh đó, một cổng TCP hay UDP sẽ đi kèm với một VIP như cổng TCP 80 được dành cho luồng dữ liệu của web. Một VIP sẽ có ít nhất một máy chủ thực sự được gán địa chỉ IP đó và máy chủ này sẽ làm nhiệm vụ phân phối luồng dữ liệu được chuyển đến. Thườ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. 1.3.2. 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.5: 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. 1.3.3. 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. 1.3.4 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.6: Hành trình của một gói dữ liệu Trong Hình 2.6, 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.6. 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). 1.3.4. 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. 1.3.5. 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. 1.3.6. 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 2: 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. 2.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. 2.2. Đánh giá SLB dựa trên luân chuyển vòng DNS 2.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. 2.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 đó. 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:

  • docCông nghệ cân băng tải server.doc