Luận văn Công nghệ cân bằng tải server

Tài liệu Luận văn Công nghệ cân bằng tải server: LỜI CẢM ƠN Lời đầu tiên, em muốn gửi lời cảm ơn chân thành nhất tới PGS.TS Nguyễn Kim Giao người đã trực tiếp hướng dẫn và có những lời góp ý, cùng nhiều tài liệu bổ ích để luận văn này được hoàn thành. Em cũng xin chân thành cảm ơn các thầy cô giáo khoa điện tử viễn thông đã tạo điều kiện học tập và nghiên cứu trong những năm học tập vừa qua. Xin chân thành cảm ơn các bạn bè đồng nghiệp, các bạn học cùng lớp đã có những lời động viên quý báu trong suốt thời gian thực hiện luận văn này. Lời cuối, em muốn gửi lời biết ơn sâu sắc tới gia đình em. Gia đình luôn là nguồn động viên tinh thần và cổ vũ lớn lao, là động lực giúp em thành công trong học tập, công việc và cuộc sống. Hà nội, tháng 05 năm 2008 Dương Ngọc Thắng DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT SLB Server load blancing Cân bằng tải máy chủ NLB Network load blancing Cân bằng tải mạng DNS Domain Name System Hệ thống tên miền DANH MỤC CÁC HÌNH VẼ Hình 1.1: Một mô hình liên kết các máy tính trong mạng 8 Hình 1.2: Hìn...

doc50 trang | Chia sẻ: hunglv | Lượt xem: 1139 | Lượt tải: 4download
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Công nghệ cân bằng tải server, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LỜI CẢM ƠN Lời đầu tiên, em muốn gửi lời cảm ơn chân thành nhất tới PGS.TS Nguyễn Kim Giao người đã trực tiếp hướng dẫn và có những lời góp ý, cùng nhiều tài liệu bổ ích để luận văn này được hoàn thành. Em cũng xin chân thành cảm ơn các thầy cô giáo khoa điện tử viễn thông đã tạo điều kiện học tập và nghiên cứu trong những năm học tập vừa qua. Xin chân thành cảm ơn các bạn bè đồng nghiệp, các bạn học cùng lớp đã có những lời động viên quý báu trong suốt thời gian thực hiện luận văn này. Lời cuối, em muốn gửi lời biết ơn sâu sắc tới gia đình em. Gia đình luôn là nguồn động viên tinh thần và cổ vũ lớn lao, là động lực giúp em thành công trong học tập, công việc và cuộc sống. Hà nội, tháng 05 năm 2008 Dương Ngọc Thắng DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT SLB Server load blancing Cân bằng tải máy chủ NLB Network load blancing Cân bằng tải mạng DNS Domain Name System Hệ thống tên miền DANH MỤC CÁC HÌNH VẼ Hình 1.1: Một mô hình liên kết các máy tính trong mạng 8 Hình 1.2: Hình ảnh một mạng LAN 11 Hình 1.3: Hình ảnh một mạng WAN 12 Hình 1.4: Hình ảnh một mạng MAN 12 Hình 1.5: Hình ảnh một mạng SAN 13 Hình 1.6: Hình ảnh một mạng VPN 14 Hình 1.7: Mô hình 7 tầng OSI 16 Hình 2.1: Kịch bản Active – Standby 23 Hình 2.2: Hoạt động của kịch bản Active - Standby 24 Hình 2.3: Kịch bản Active-Active 25 Hình 2.4: Hoạt động của kịch bản Active-Active 25 Hình 2.5: Hoạt động của VRRP 26 Hình 2.6 Mô tả Colocation 29 Hình 2.7: Hệ thống SLB đơn giản 31 Hình 2.8: Hành trình của một gói dữ liệu 33 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. CHƯƠNG 1: CẤU TRÚC MẠNG Sự kết hợp của máy tính với các hệ thống truyền thông đặc biệt là các hệ thống viễn thông đã tạo ra một sự chuyển biến có tính cách mạng trong vấn đề khai thác và sử dụng các hệ thống máy tính. Mô hình tập trung dựa trên các máy tính lớn với phương thức khai thác theo lô đã được thay thế bằng mô hình tổ chức mới, trong đó các máy tính đơn lẻ được kết hợp lại để cùng thực hiện một công việc. Một môi trường làm việc đà người dùng sử dụng tài nguyên phân tán đã hình thành và cho phép nâng cao hiệu quả khai thác tài nguyên chung từ những vị trí địa lý khác nhau. Các hệ thống như thế gọi là các mạng máy tính. Trong những năm 70 của thế kỉ 20, khi bắt đầu xuất hiện khái niệm Mạng truyền thông, trong đó các thành phần chính của nó là các nút mạng, được gọi là các bộ chuyển mạch dùng để chuyển thông tin đến đích của nó. Các nút mạng được nối với nhau bằng các đường truyền vật lý còn các máy tính xủ lý thông tin qua trạm Host hoặc các trạm cuối được kết nối trực tiếp vào các nút mạng để khi cần thì sẵn sàng trao đổi thông tin qua mạng. 1.1. Định nghĩa mạng máy tính Mạng máy tính là một tập hợp các máy tính được nối với nhau bởi đường truyền theo một cấu trúc nào đó và thông qua đó các máy tính trao đổi thông tin qua lại cho nhau. Đường truyền là hệ thống các thiết bị truyền dẫn có dây hay không dây dùng để chuyển các tín hiệu điện tử từ máy tính này đến máy tính khác. Các tín hiệu điện tử đó biểu thị các giá trị dữ liệu dưới dạng các xung nhị phân (on - off). Tất cả các tín hiệu được truyền giữa các máy tính đều thuộc một dạng sóng điện từ. Tùy theo tần số của sóng điện từ có thể dùng các đường truyền vật lý khác nhau để truyền các tín hiệu. Ở đây đường truyền được kết nối có thể là dây cáp đồng trục, cáp xoắn, cáp quang, dây điện thoại, sóng vô tuyến ... Các đường truyền dữ liệu tạo nên cấu trúc của mạng. Hai khái niệm đường truyền và cấu trúc là những đặc trưng cơ bản của mạng máy tính. Hình 1.1: Một mô hình liên kết các máy tính trong mạng Với sự trao đổi qua lại giữa máy tính này với máy tính khác đã phân biệt mạng máy tính với các hệ thống thu phát một chiều như truyền hình, phát thông tin từ vệ tinh xuống các trạm thu thụ động... vì tại đây chỉ có thông tin một chiều từ nơi phát đến nơi thu mà không quan tâm đến có bao nhiêu nơi thu, có thu tốt hay không. Đặc trưng cơ bản của đường truyền vật lý là băng thông. Băng thông của một đường chuyền chính là độ đo phạm vi tần số mà nó có thể đáp ứng được. Tốc độ truyền dữ liệu trên đường truyền còn được gọi là thông lượng của đường truyền - thường được tính bằng số lượng bit được truyền đi trong một giây (Bps). 1.2. Kiến trúc mạng máy tính Kiến trúc mạng máy tính thể hiện cách nối các máy tính với nhau ra sao và tập hợp các quy ước mà tất cả các thực thể tham gia truyền thông trên mạng phải tuân theo để đảm bảo cho mạng hoạt động tốt. Sự sắp xếp vật lý đặc trưng của các thành phần mạng được gọi là hình trạng (topology) mạng. Còn tập hợp các quy tắc, qui ước truyền thông gọi là giao thức mạng. 1.2.1. Topo mạng Topo mạng xác định cấu trúc của mạng. Có hai kiểu topo mạng là topo vật lý và topo luận lý. Topo vật lý: xác định các thành phần của mạng được nối thực tế với nhau như thế nào. Có các dạng topo vật lý được dùng phổ biến như. Bus: dùng một trục cáp đơn được kết cuối ở cả hai đầu. Tất cả các host được kết nối trực tiếp vào trục này. Ring: kết nối host này đến host kế tiếp và cứ thế cho đến host cuối lại kết nối với host đầu. Từ đó tạo nên vòng tròn cáp vật lý. Star: Kết nối tất cả các host đến một điểm trung tâm. Start mở rộng: liên kết các star riêng lại với nhau bằng cách nối các hub hoặc switch với nhau, dạng này có khả năng mở rộng phạm vi và mức bao phủ của mạng. Topo phân cấp: tương tự như star mở rộng. Tuy nhiên, thay vì liên kết các hub hay switch với nhau, hệ thống này được liên kết đến một máy tính kiểm soát lưu lượng trên topo. Mesh: được triển khai nhằn tăng cường mức bảo vệ càng nhiều càng tốt đối với tình huống gián đoạn dịch vụ. Việc sử dụng mesh trong các hệ thống điều khiển được nối thành mạng của một cơ sở hạt nhân là một ví dụ điển hình. Như có thể thấy trên hình dưới, mỗi host có các kết nối riêng đến tất cả các host còn lại. Mặc dù Internet có nhiều đường dẫn đến bất kì một vị trí nào, nhưng nó vẫn không được coi là một topo dạng lưới đầy đủ. Topo luận lý: là cách thức mà host truyền thông xuyên qua môi trường. Có hai loại phổ biến nhất của topo luận lý là broadcast và token passing Broadcast có nghĩa đơn giản là mỗi host truyền số liệu của nó đến tất cả các host trên môi trường mạng. Không có trật tự ưu tiên nào mà các trạm phải tuân theo trong việc sử dụng mạng, mà hoạt động theo phương thức đến trước phục vụ trước. Kiểu hoạt động này hoạt động theo cách của mạng Ethernet. Token passing điều khiển truy nhập mạng bằng cách chuyển một thể điện một cách tuần tự đến các host. Mỗi khi một host nhận được thẻ bài này là lúc nó có thể truyền số liệu lên mạng. Nếu host không có số liệu để truyền nó lập tức chuyển thẻ điện đến host kế tiếp và tiến trình cứ như thế lặp lại. Hai mạng sử dụng token passing là Token Ring và FDDI. Một biến thể khác của Token Ring và FDDI là Arcnet. Arcnet là một token passing trên một topo dạng bus. 1.2.2. Giao thức mạng Việc trao đổi thông tin cho dù là đơn giản nhất cũng phải tuân theo những quy tắc nhất định. Ngay cả hai người nói chuyện với nhau muốn cho cuộc nói chuyện có kết quả thì hai người cũng phải ngầm theo một quy tắc nào đó. Việc truyền tín hiệu trên mạng cũng vậy, cần phải có những quy tắc, quy ước về nhiều mặt, từ khuôn dạng của dữ liệu cho tới các thủ tục gửi nhận dữ liệu, kiểm soát hiệu quả và chất lượng truyền tin, xử lý các lỗi và sự cố. Yêu cầu về xử lý và trao đổi thông tin của người sử dụng càng cao thì các quy tắc càng nhiều và phức tạp hơn. Tập hợp tất cả các quy tắc, quy ước đó được gọi là giao thức của mạng. 1.3. Phân loại mạng máy tính Do hiện nay mạng máy tính được phát triển khắp nơi với những ứng dụng ngày càng đa dạng cho nên việc phân loại mạng máy tính là một việc rất phức tạp. Người ta có thể chia các mạng máy tính theo khoảng cách địa lý ra làm các loại: Mạng diện rộng,Mạng cục bộ, mạng đô thị, Mạng lưu trữ và Mạng riêng ảo. 1.3.1 Mạng cục bộ (Local Area Networks - LAN) Mạng cục bộ là mạng được thiết lập để liên kết các máy tính trong một khu vực như trong một toà nhà, một khu nhà. Mạng LAN bao gồn các thành phần sau: Máy tính Các card giao tiếp mạng. Các thiết bị ngoại vi. Đường truyền thiết lập mạng. Các thiết bị mạng. LAN dùng các kĩ thuật máy tính để chia sẻ tập tin và máy in cục bộ một cách hiệu quả và mở ra khả năng truyền thông nội bộ. Một vài công nghệ LAN phổ biến là. Ethernet. Token Ring. FDDI. Hình 1.2: Hình ảnh một mạng LAN 1.3.2. Mạng diện rộng (Wide Area Networks - WAN) Mạng WAN là mạng được thiết lập để liên kết các máy tính của hai hay nhiều khu vực khác nhau như giữa các thành phố hay các tỉnh. Các Wan được thiết kế để phục vụ các mục đích sau: Hoạt động qua các vùng tách biệt về mặt địa lý. Cho phép người sử dụng có khả năng truyền thông tin thơì gian thực với người khác. Cung cấp các kết nối liên tục đến các vùng tài nguyên. Một số công nghệ WAN phổ biến là: Modem ISDN DSL Frame Relay. Các đường truyền chuẩn Bắc Mỹ và Châu Âu T1, E1, T3, E3. Mạng quang đồng bộ SONET. Hình 1.3: Hình ảnh một mạng WAN 1.3.3. Mạng đô thị (MAN) MAN là mạng được thiết lập giữa hai hay nhiều LAN toạ lạc trong cùng một vùng địa lý, một vùng nội thị hay ngoại ô. Một mạng MAN cũng có thể được tạo bằng công nghệ cầu không dây (wireless bridge) với các tín hiệu vô tuyến lan truyền qua các vùng có cộng đồng người sử dụng. Hình 1.4: Hình ảnh một mạng MAN 1.3.4. Mạng lưu trữ (SAN) SAN là mạng chất lượng cao, cấp riêng được dùng để di chuyển dữ liệu qua lại giữa các server và các tài ngyên lưu giữ. Bởi nó là mạng cấp riêng tách biệt nên tránh được bất kì sự xung đột nào giữa clien và server. Công nghệ SAN cho phép thực hiện các cuộc nối tốc độ cao giữa các server với các thiết bị lưu trữ. Hình 1.5: Hình ảnh một mạng SAN 1.3.5 Mạng riêng ảo (VPN) VPN là mạng riêng được kiến tạo bên trong một hạ tầng mạng công cộng như internet. Sử dụng VPN, mọi người có thể làm việc tại nhà qua mạng (telecommuter) có thể truy xuất vào mạng của công ty qua internet bằng cách xây dựng một đường hầm bí mật (secure tunnel) giữa máy tính của họ và một VPN router đặt tại văn phòng công ty. Hình 1.6: Hình ảnh một mạng VPN Sự phân biệt trên chỉ có tính chất ước lệ, các phân biệt trên càng trở nên khó xác định với việc phát triển của khoa học và kỹ thuật cũng như các phương tiện truyền dẫn. Tuy nhiên với sự phân biệt trên phương diện địa lý đã đưa tới việc phân biệt trong nhiều đặc tính khác nhau của hai loại mạng trên, việc nghiên cứu các phân biệt đó cho ta hiểu rõ hơn về các loại mạng. 1.4. Mô hình OSI Sự phát triển các mạng thời kỳ đầu không được tổ chức và diễn ra theo nhiều cách. Những năm đầu thập niên 80 đã chứng kiến sự gia tăng mạnh mẽ về số lượng và kích thước của các mạng. Khi các công ty bắt đầu nhận thức được ưu điểm của việc sử dụng công nghệ mạng, các mạng được thêm vào và mở rộng nhanh chóng. Do sự phát triển quá nhanh khiến các công ty gặp phải những khó khăn, cũng giống như con người bất đồng ngôn ngữ khi tiếp xúc với người khác ngôn ngữ, các mạng của các công ty và các hãng cũng gặp phải tình trạng tương tự do những đặc tả và những quy định khác nhau trong việc thiết kế hệ thống mạng của mình. Để giải quyết vấn đề bất tương thích mạng, tổ chức tiêu chuẩn hóa quốc tế (ISO) đã nghiên cứu các mô hình mạng thiết lập như DECnet, SNA và TCP/IP để tìm ra một số luật định có thể áp dụng một cách tổng quát cho tất cả các mạng. Sử dụng nghiên cứu này ISO đã đưa ra một mô hình mạng, qua đó giúp các nhà cung cấp thiết bị mạng tạo ra các mạng có thể tương thích tốt với các mạng khác. Mô hình tham chiếu các hệ thống mở OSI đã được công bố vào năm 1984, và là mô hình có tính chất mô tả được tạo ra bởi ISO. Nó cung cấp cho các nhà sản xuất một tập các tiêu chuẩn đảm bảo khả năng tương thích và khả năng liên kết hoạt động tốt hơn giữa các công nghệ mạng khác nhau được giới thiệu bởi các công ty trên khắp thế giới. Môt hình tham chiếu OSI đã trở thành mô hình chính thức cho hoạt động truyền thông mạng. Mặc dù tồn tại một số mô hình khác nhưng hầu hết các nhà chế tạo đều đựa vào mô hình OSI để chế tạo các sản phẩn của họ. 1.5. Mô hình OSI với hệ thống cân bằng tải Khi nói về thiết bị cân bằng tải, các lớp của mô hình OSI thường được đề cập đến. OSI đã được phát triển và được coi như một framework cho việc phát triển các giao thức và các ứng dụng. Mô hình OSI có một sự tương đồng với các chuẩn của mô hình mạng Internet (Mô hình TCP/IP) cái mà hệ thống cân bằng tải đang được ứng dụng ngày nay. Tầng ứng dụng (Application layer): tầng ứng dụng quy định giao diện giữa người sử dụng và môi trường OSI, nó cung cấp các phương tiện cho người sử dụng truy cập vả sử dụng các dịch vụ của mô hình OSI. Tầng trình bày (Presentation layer): tầng trình bày chuyển đổi các thông tin từ cú pháp người sử dụng sang cú pháp để truyền dữ liệu, ngoài ra nó có thể nén dữ liệu truyền và mã hóa chúng trước khi truyền đễ bảo mật. Tầng giao dịch (Session layer): tầng giao dịch quy định một giao diện ứng dụng cho tầng vận chuyển sử dụng. Nó xác lập ánh xa giữa các tên đặt địa chỉ, tạo ra các tiếp xúc ban đầu giữa các máy tính khác nhau trên cơ sở các giao dịch truyền thông. Nó đặt tên nhất quán cho mọi thành phần muốn đối thoại riêng với nhau. Các tầng từ 5 tới 7 thực hiện chức năng cân bằng tải qua việc sử dụng URL hoặc các thông tin trong gới dữ liệu như cookie. DNS round robin là một ứng dụng điển hình. Tầng giao vận (Transport layer): tầng vận chuyển xác định địa chỉ trên mạng, cách thức chuyển giao gói tin trên cơ sở trực tiếp giữa hai đầu mút (end-to-end). Để bảo đảm được việc truyền ổn định trên mạng tầng vận chuyển thường đánh số các gói tin và đảm bảo chúng chuyển theo thứ tự. SLB sử dụng các thông tin về cổng và địa chỉ để thực hiện các chức năng cân bằng tải. Hình 1.7: Mô hình 7 tầng OSI Tầng mạng (Network layer): tầng mạng có nhiệm vụ xác định việc chuyển hướng, vạch đường các gói tin trong mạng, các gói tin này có thể phải đi qua nhiều chặng trước khi đến được đích cuối cùng. Thường chức năng cân bảng tải cũng được thực hiện trên các router tại lớp mạng. Tầng liên kết dữ liệu (Data link layer): tầng liên kết dữ liệu có nhiệm vụ xác định cơ chế truy nhập thông tin trên mạng, các dạng thức chung trong các gói tin, đóng các gói tin...Tại lớp liên kết dữ liệu các thiết bị như switch thường được nối với nhau bởi nhiều đường, và cũng thực hiện các chức năng phân phối tải theo các thuật toán đã được cài đặt sẵn trong thiết bị Tầng vật lý (Phisical layer): tầng vật lý cung cấp phương thức truy cập vào đường truyền vật lý để truyền các dòng Bit không cấu trúc, ngoài ra nó cung cấp các chuẩn về điện, dây cáp, đầu nối, kỹ thuật nối mạch điện, điện áp, tốc độ cáp truyền dẫn, giao diện nối kết và các mức nối kết..Chức năng cân bằng tải ở lớp vật lý thường đề cập đến việc kết nối các thiết bị qua các cáp vật lý như cat 5, fiber… CHƯƠNG 2: TỔNG QUAN VỀ HỆ THỐNG CÂN BẰNG TẢI SERVER 2.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. 2.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… 2.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: 2.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. 2.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. 2.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. 2.3. Các thành phần của SLB 2.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. 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