1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu và triển khai giải pháp cân bằng tải cho webserver trên centos

46 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Và Triển Khai Giải Pháp Cân Bằng Tải Cho Webserver Trên Centos
Tác giả Mạnh Trọng Lượng
Người hướng dẫn TS. Lê Văn Minh
Trường học Trường Đại Học Vinh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo Cáo Đồ Án Tốt Nghiệp
Năm xuất bản 2014
Thành phố Nghệ An
Định dạng
Số trang 46
Dung lượng 1,52 MB

Cấu trúc

  • I. Lý do chọn đề tài (7)
  • II. Một số chỉ tiêu đánh giá tải và hiệu năng của máy chủ (8)
    • 2.1. CPU Utilization (8)
    • 2.2. Memory usage (8)
    • 2.3. Thời gian phản hồi (9)
  • III. Tổng quan về Webserver (10)
    • 3.1. Webserver là gì? (10)
    • 3.2. Nguyên tắc hoạt động của Web Server (10)
    • 3.3. Những loại Web Server (11)
  • IV. Kiến trúc Web với khả năng mở rộng (12)
    • 4.1. Khái niệm chung (12)
    • 4.2. Các vấn đề cần giải quyết trong quá trình xây dụng Website theo kiến trúc với khả năng mở rộng (13)
      • 4.2.1. Cân bằng tải cho Application Server (13)
      • 4.2.2. Mở rộng Database Server (15)
      • 4.2.3. Tổ chức lưu trữ dữ liệu (17)
      • 4.2.4. Cân bằng tải cho Cache (18)
  • V. Tổng quan về cân bằng tải (25)
    • 5.1. Khái niệm cân bằng tải (25)
    • 5.2. Lợi ích cân bằng tải (25)
  • VI. Kỹ thuật cân bằng tải (26)
    • 6.1. Kiểm tra trạng thái Server (26)
    • 6.2. Lựa chọn Server tốt nhất (27)
    • 6.3. Kỹ thuật Session Persistence (27)
    • 6.4. Cookie (27)
  • VII. Các thuật toán cân bằng tải (30)
    • 7.1. Thuật toán ngẫu nhiên (30)
    • 7.2. Thuật toán Round Robin (30)
    • 7.3. Thuật toán Weighted Round Robin (31)
    • 7.4. Thuật toán Dynamic Round Robin (31)
    • 7.5. Thuật toán Fastest (31)
    • 7.6. Thuật toán Least Connections (32)
    • 7.7. Thuật toán Observed (32)
    • 7.8. Thuật toán Predictive (32)
    • 7.9. Thuật toán Source (32)
  • VIII. Các giải pháp chia tải (33)
    • 8.1. Cân bằng tải sử dụng phần cứng (33)
    • 8.2. Cân bằng sử dụng phần mềm (34)
    • 8.3. Chia tải nhờ Proxy (34)
    • 8.4. Chia tải nhờ thiết bị chia kết nối (34)
  • IX. Các thành phần của Hệ thống cân bằng tải (34)
    • 9.1. Chức năng của các thành phần trong hệ thống cân bằng tải (34)
    • 9.2. Hoạt động của hệ thống cân bằng tải (35)
    • 9.3. Kiến trúc hệ thống cân bằng tải (35)
  • X. Cài đặt (37)
  • Tài liệu tham khảo (46)

Nội dung

Một số chỉ tiêu đánh giá tải và hiệu năng của máy chủ

CPU Utilization

CPU, hay còn gọi là đơn vị xử lý trung tâm, được coi là bộ não của máy tính và là tài nguyên quan trọng nhất, ảnh hưởng trực tiếp đến khả năng xử lý và tính toán của hệ thống Tốc độ xử lý của CPU thường được đo bằng số xung nhịp đồng hồ hoặc số lượng phép toán cơ bản thực hiện trong một giây, với đơn vị tính là MHz hoặc MIPS.

CPU Utilization, hay còn gọi là CPU usage, là tổng thời gian mà CPU được sử dụng để tính toán và xử lý các chương trình máy tính Đây là một yếu tố quan trọng trong việc đánh giá hiệu suất của máy chủ Khi tỷ lệ phần trăm CPU cao, thời gian xử lý các chương trình sẽ lớn, khiến cho các chương trình khác phải chờ đợi, dẫn đến hiệu suất máy chủ thấp Ngược lại, nếu tỷ lệ phần trăm CPU thấp, thời gian xử lý sẽ ngắn, đồng nghĩa với hiệu suất máy tính cao hơn.

Memory usage

Bộ nhớ là thành phần thiết yếu của máy tính, dùng để lưu trữ chương trình và dữ liệu trước khi thực thi Hai đặc trưng quan trọng của bộ nhớ là thời gian truy cập dữ liệu và dung lượng bộ nhớ Thời gian truy cập, khoảng thời gian từ khi phát tín hiệu đến khi hoàn thành việc đọc/ghi, ảnh hưởng trực tiếp đến tốc độ hoạt động của máy tính Dung lượng bộ nhớ xác định khối lượng dữ liệu có thể lưu trữ đồng thời Trong hệ điều hành Linux, hiệu suất máy tính phụ thuộc vào dung lượng bộ nhớ sẵn có trong RAM và bộ nhớ ảo, hay còn gọi là SWAP Space.

RAM, hay bộ nhớ truy cập ngẫu nhiên, là bộ nhớ chính của máy tính dùng để lưu trữ mã chương trình và dữ liệu trong quá trình thực thi Dữ liệu trong RAM sẽ bị xóa khi mất nguồn điện Đây là loại bộ nhớ cho phép ghi và đọc dữ liệu với thời gian truy cập đồng đều đến mọi ô nhớ.

Bộ nhớ ảo là một không gian trên đĩa cứng, được sử dụng khi RAM đã đầy, cho phép xử lý chương trình mà không cần nạp toàn bộ vào RAM Trong RAM, chỉ lưu trữ các lệnh và dữ liệu cần thiết cho hoạt động của chương trình tại một thời điểm nhất định Khi cần lệnh hoặc dữ liệu mới, hệ thống sẽ nạp chúng vào RAM, thay thế các lệnh không sử dụng bằng cách chuyển chúng vào bộ nhớ ảo.

Thông số "free" trong RAM và "swap" trong bộ nhớ ảo cho biết dung lượng bộ nhớ khả dụng, từ đó giúp đánh giá hiệu suất của máy chủ Dung lượng bộ nhớ lớn hơn sẽ dẫn đến hiệu suất máy chủ cao hơn và ngược lại.

Thời gian phản hồi

Thời gian phản hồi của server đối với các truy vấn từ client là yếu tố quan trọng để đánh giá hiệu suất và tải của máy chủ Thời gian phản hồi thấp cho thấy máy chủ hoạt động hiệu quả, giúp các truy vấn được xử lý nhanh chóng mà không bị chậm trễ Ngược lại, thời gian phản hồi cao dẫn đến hiệu suất giảm, khiến client phải chờ lâu để nhận kết quả từ máy chủ.

Tổng quan về Webserver

Webserver là gì?

Web Server là máy tính cài đặt phần mềm phục vụ Web, đôi khi phần mềm này cũng được gọi là Web Server Tất cả Web Server đều có khả năng hiểu và xử lý các file *.htm và *.html, nhưng mỗi loại Web Server lại hỗ trợ các định dạng file chuyên biệt khác nhau, như IIS của Microsoft cho *.asp, *.aspx; Apache cho *.php; và Sun Java System Web Server của SUN cho các file *.p.

Web Server là máy chủ có dung lượng lớn và tốc độ cao, dùng để lưu trữ thông tin như ngân hàng dữ liệu, bao gồm các website đã được thiết kế cùng với mã Script, chương trình và file Multimedia Web Server gửi các trang web đến Client qua Internet thông qua giao thức HTTP và HTTPS, được thiết kế để truyền tải file đến Web Browser và các giao thức khác.

Hình 3.1: Mô hình hoạt động của Web Server

Web Server có khả năng tích hợp với cơ sở dữ liệu (Database) để quản lý kết nối và truy xuất thông tin Nó cho phép thông tin từ Database được hiển thị trên các trang web và truyền tải đến người dùng Để đảm bảo cung cấp thông tin trực tuyến liên tục, Web Server cần hoạt động ổn định và hiệu quả.

Nguyên tắc hoạt động của Web Server

Users on a Client machine enter a URL (Domain Name) into the address bar of a Web Browser The Web Browser then uses that Domain Name to search for the IP address of the Web Server by querying the DNS server.

- Khi có được IP, Web Browser sẽ gửi yêu cầu đến Web Server để lấy nội dung trang web

Web Server sẽ tiếp nhận và xử lý yêu cầu từ Client bằng cách lấy nội dung của website mà Client yêu cầu Nội dung này được tạo ra bởi người thiết kế web thông qua các phần mềm hỗ trợ và sau đó được đăng tải lên Web Server để gửi lại cho Client.

- Khi nhận được nội dung trang web thì Web Browser sẽ hiển thị lên cho người dùng.

Những loại Web Server

Khi lựa chọn Web Server, cần xem xét nhiều tiêu chí như khả năng tương thích với hệ điều hành, khả năng tích hợp với các ứng dụng khác, thiết lập chương trình ứng dụng phía server, bảo mật dữ liệu, quy trình xuất bản trang web, và các công cụ hỗ trợ xây dựng trang web.

Hiện nay, có 2 loại Web Server thông dụng nhất là: Internet Information Services (IIS), Apache Web Server

Internet Information Services (IIS) là một dịch vụ tùy chọn của Windows Server cung cấp các tính năng về Website

Giải pháp phổ biến nhất của Microsoft cho việc xây dựng website là sử dụng IIS trên nền tảng Windows Server IIS, hay dịch vụ thông tin Internet, được phát triển bởi Microsoft và tích hợp cùng với hệ điều hành Windows Phiên bản mới nhất, IIS 8.5, hoạt động trên Windows Server 2008 và 2012, được thiết kế lại dưới dạng Module, mang lại cả ưu điểm từ các phiên bản trước và cải thiện tính bảo mật cũng như ổn định IIS 8.5 cung cấp hai công cụ quản trị: đồ họa và dòng lệnh, giúp người dùng quản lý hiệu quả hơn.

- Quản lý tập trung IIS và ASP.NET

- Xem thông tin, chuẩn đoán, trong đó bao gồm các thông tin real-time

- Thay đổi quyền trên các đối tượng Website và ứng dụng

- Cấu hình IIS và ASP.NET với một định dạng thống nhất

- Dễ dàng sao chép các file cấu hình và nội dung của site hoặc ứng dụng đến một máy tính khác

Apache Web Server là một nỗ lực lớn trong việc phát triển và duy trì một máy chủ web mã nguồn mở cho nhiều hệ điều hành như Unix, Linux và Windows Nó tích hợp đầy đủ các tính năng bảo mật, hiệu suất, khả năng mở rộng và phát triển, cung cấp dịch vụ web đồng bộ theo các tiêu chuẩn hiện hành.

Các đặc điểm nỗi bật của Apache:

- Apache có thể chạy kết hợp giữa chế độ đa xử lý và chế độ đa chỉ lệnh

- Hỗ trợ nhiều giao thức: Apache được phát triển để có thể phục vụ trên nhiều giao thức khác nhau

- Ngày càng hỗ trợ tốt hơn cho các hệ điều hành khác như: Linux, OS và Windows

- Ngày càng phát triển và hoàn thiện các API (Application Program Interface)

- Hỗ trợ nhiều modul dùng để lọc các dòng dữ liệu đen hoặc đi từ Server.

Kiến trúc Web với khả năng mở rộng

Khái niệm chung

Một website có khả năng mở rộng là khi số lượng người dùng tăng lên mà vẫn đáp ứng tốt nhu cầu truy cập Để phục vụ nhiều lượt truy cập mỗi ngày, website cần đảm bảo hiệu năng, tính sẵn có cao, và khả năng phản hồi nhanh Ngoài ra, cần tránh thời gian chết của hệ thống, bảo trì dễ dàng và được xây dựng với chi phí hợp lý.

Khả năng mở rộng của ứng dụng là khả năng đáp ứng nhu cầu ngày càng tăng của người dùng Đây là chỉ số quan trọng thể hiện số lượng người dùng đồng thời mà một cụm server có thể hỗ trợ, cùng với thời gian hoạt động ổn định của cụm đó.

Để xử lý một yêu cầu, máy chủ là yếu tố thiết yếu Thiết kế website với khả năng mở rộng cao là điều kiện cần thiết cho sự sống còn của hầu hết các công ty dịch vụ web hiện nay Để tồn tại và phát triển, một website cần đáp ứng nhanh chóng các yêu cầu của người dùng.

Hiệu năng của hệ thống được xác định bởi khả năng sử dụng tài nguyên một cách tối ưu Tính thực hiện được đo bằng lượng công việc hữu ích mà hệ thống có thể hoàn thành với một nguồn tài nguyên nhất định Ví dụ, trong trường hợp hai máy chủ có cấu hình giống nhau, máy chủ nào phục vụ được nhiều người dùng hơn (với các ứng dụng tương đương) sẽ được xem là có tính thực hiện cao hơn.

Hệ thống có khả năng sẵn sàng cao đảm bảo rằng nếu một Web Server gặp sự cố, một Web Server khác sẽ ngay lập tức tiếp quản để xử lý yêu cầu Điều này có nghĩa là, khi người dùng đang làm việc với một Server mà Server đó bị lỗi, toàn bộ thông tin trong phiên làm việc của họ sẽ được chuyển giao cho một Server khác Nhờ vậy, người dùng luôn có thể truy cập vào các dịch vụ của hệ thống mà không bị gián đoạn.

Tính đáp ứng của hệ thống là khả năng phục vụ người dùng mọi lúc, với thời gian phản hồi càng nhanh thì tính đáp ứng càng cao Nếu thời gian trì hoãn quá lâu, người dùng có thể chuyển sang công việc khác hoặc quên mất việc đang truy cập, dẫn đến việc đóng trình duyệt Điều này không chỉ gây khó chịu cho người dùng mà còn làm lãng phí tài nguyên hệ thống, khi mà session vẫn hoạt động nhưng không phục vụ cho ai.

Các vấn đề cần giải quyết trong quá trình xây dụng Website theo kiến trúc với khả năng mở rộng

với khả năng mở rộng

4.2.1 Cân bằng tải cho Application Server

Để phục vụ nhiều người truy cập cùng lúc, một trang web cần có hệ thống máy chủ mạnh mẽ Khi lượng người dùng tăng lên, việc nâng cấp và mở rộng hệ thống máy chủ là rất quan trọng Có hai phương pháp mở rộng: mở rộng theo chiều dọc (scale up) và mở rộng theo chiều ngang (scale out).

Mở rộng theo chiều dọc là phương pháp nâng cấp Server khi số lượng người dùng tăng, bằng cách cải thiện cấu hình của máy Server hiện tại, như tăng số lượng chip và dung lượng RAM Phương pháp này giúp quản trị viên không phải lo lắng về cân bằng tải cho cụm Server, và hệ thống hoạt động hiệu quả với số lượng người dùng vừa phải Tuy nhiên, chi phí sử dụng một Server cao hơn nhiều so với nhiều Server, và nếu Server gặp sự cố, toàn bộ hệ thống sẽ ngừng hoạt động Hơn nữa, phương pháp này cũng giới hạn khả năng phục vụ của hệ thống, vì hiệu suất còn phụ thuộc vào các yếu tố như băng thông và khả năng truy xuất dữ liệu trên đĩa cứng.

Với một trang web video, băng thông cần thiết để xem một clip chất lượng trung bình là khoảng 512kb/s (0.5mb/s) Do đó, một đường truyền 100mb sẽ cho phép người dùng xem tối đa nhiều clip cùng lúc mà không gặp phải tình trạng gián đoạn.

Khi có 200 người dùng truy cập đồng thời, nếu số lượng vượt quá con số này, có thể tăng băng thông lên 1 Gigabit Tuy nhiên, điều này dẫn đến tình trạng scale up và gặp giới hạn Thêm vào đó, tốc độ đọc của đĩa cứng chỉ đạt khoảng 400mb/s, vì vậy dù có nâng cấp băng thông, server vẫn không thể phục vụ nhiều người dùng hơn Do đó, việc sử dụng scale up không thể giải quyết triệt để vấn đề này.

Giải pháp thứ hai để nâng cao hiệu suất hệ thống là lắp đặt nhiều máy chủ song song, tạo thành một cụm (Cluster) Mỗi máy chủ mới có khả năng phục vụ thêm 200 người dùng, do đó, số lượng máy chủ càng nhiều, khả năng mở rộng càng lớn Phương pháp này không chỉ giúp tăng cường khả năng phục vụ mà còn giảm thiểu chi phí Tuy nhiên, một thách thức lớn là vấn đề cân bằng tải; để mỗi máy chủ có thể tiếp nhận thêm 200 người dùng, hệ thống cần được tối ưu hóa để phân phối tải đều giữa các máy chủ.

Hình 4.1: Mô hình cân bặng tải trên Web Server

Việc chọn một Server phù hợp cho các hệ thống yêu cầu sự ổn định cao, như chứng khoán hay ngân hàng, là cần thiết khi số lượng người dùng không tăng nhiều Ngược lại, các mạng xã hội và trang chia sẻ video trực tuyến nên sử dụng nhiều Server hoạt động song song để đạt hiệu quả tối ưu Phương pháp scale out cho phép yêu cầu từ người dùng được phân bổ giữa các Server, dẫn đến việc cần thiết phải cân bằng tải (Load Balancing) cho Cluster Nhà phát triển hệ thống phải đảm bảo các Server hoạt động cân bằng, phục vụ một lượng yêu cầu hợp lý, tránh tình trạng quá tải (overload) và tối ưu hóa tài nguyên để đáp ứng lượng truy cập lớn nhất.

App server App server App server

Database Server đóng vai trò quan trọng trong hệ thống Web, và sự phát triển của Website yêu cầu mở rộng Database Server Việc này có thể thực hiện bằng cách lắp thêm Server tại các địa điểm đã có hoặc thiết lập Server mới ở các khu vực khác Tương tự như cân bằng tải ở Application Server, mở rộng Database Server có hai phương pháp: mở rộng theo chiều dọc và mở rộng theo chiều ngang.

Hiện nay, các nhà phát triển hệ thống đang áp dụng kiến trúc SAN (Storage Area Networks) để mở rộng theo chiều dọc, trong đó cơ sở dữ liệu sẽ được phân chia theo kiến trúc này SAN kết nối các thiết bị lưu trữ máy tính từ xa, cho phép chúng hoạt động như thiết bị cục bộ đối với hệ điều hành Nhờ đó, hệ thống lưu trữ được xem như một máy chủ cơ sở dữ liệu duy nhất, mang lại hiệu suất hoạt động rất cao.

Kiến trúc này có khả năng nâng cao hiệu suất của Database Server một cách đáng kể Tuy nhiên, do chi phí cao, nó thường chỉ được áp dụng trong các hệ thống lớn và quan trọng, không phổ biến rộng rãi.

Hình 4.2: Mở rộng Database Server sử dụng kiến trúc SAN

Mở rộng Database theo chiều ngang (scaling out), nghĩa là tăng số lượng các Node Database Server

Hình 4.3: Mở rộng Database Server theo chiều ngang a Shared Nothing Cluster

Mỗi Database Server lưu trữ một bản sao hoàn chỉnh của cơ sở dữ liệu, đảm bảo rằng tất cả các Database Server đều giống nhau Không có dữ liệu nào được chia sẻ giữa các nút Database Server, và các tệp cơ sở dữ liệu thực tế được lưu trữ trong SAN.

Việc chọn cơ chế sao bản (replication) phù hợp là rất quan trọng, vì các cơ sở dữ liệu sẽ chứa bản sao hoàn chỉnh giống nhau Có nhiều lựa chọn cho việc tạo sao bản, bao gồm phương pháp Master – Slave và Multi – Master, cũng như việc đồng bộ hoặc không đồng bộ, và mức độ sao bản của dữ liệu.

Trong phương pháp Master – Slave, yêu cầu đọc được gửi đến một Master và sau đó được sao chép sang các Slave Database, dẫn đến việc tạo bản sao có thể bị lặp Ngược lại, phương pháp Multi – Master cho phép các lệnh đọc được gửi đến nhiều Master, với việc sao chép diễn ra giữa các Master và Slave Tuy nhiên, phương pháp này yêu cầu quản trị viên phải xử lý xung đột và có nguy cơ cao xảy ra hiện tượng deadlock khi dữ liệu được chỉnh sửa đồng thời ở nhiều nơi.

Phương pháp không đồng bộ trong quản lý cơ sở dữ liệu cho phép Master cập nhật và phản hồi nhanh chóng đến Client, nhưng bản sao dữ liệu trên Slave không đồng nhất với Master Mặc dù quá trình sao lưu giữa Master và Slave diễn ra không đồng bộ, ưu điểm lớn nhất của phương pháp này là tốc độ trả về dữ liệu nhanh chóng cho Client Tuy nhiên, nhược điểm chính là dữ liệu trên Slave sẽ bị giới hạn và không cập nhật kịp thời so với Master.

Phương pháp đồng bộ đảm bảo rằng bản sao dữ liệu từ Master đến Slave luôn nhất quán Khi Master cập nhật cơ sở dữ liệu của mình, tất cả các Slave cần phải đồng bộ hóa dữ liệu trước khi phản hồi lại Client, dẫn đến thời gian hồi đáp lâu hơn Trong suốt quá trình này, các Slave sẽ giữ dữ liệu giống hệt như Master.

Database server SAN b Real Application Cluster

Các nodes trong cơ sở dữ liệu chia sẻ một phần chung trên SAN, yêu cầu hệ thống tệp phải được định dạng là Clustered File System (GFS/OFS) Phương pháp này chỉ được cung cấp bởi Oracle do chi phí cao, hiện chỉ các doanh nghiệp lớn hoặc tập đoàn mới triển khai được.

4.2.3 Tổ chức lưu trữ dữ liệu

Tổng quan về cân bằng tải

Khái niệm cân bằng tải

Cân bằng tải là phương pháp phân phối khối lượng tải trên nhiều máy tính hoặc cụm máy tính nhằm tối ưu hóa nguồn lực, tăng cường thông lượng và giảm thời gian đáp ứng Phương pháp này giúp chia sẻ dữ liệu trên mạng, ngăn chặn tình trạng nghẽn mạng do quá tải hoặc sự cố Khi một máy chủ gặp trục trặc, hệ thống sẽ tự động chuyển giao dữ liệu cho máy chủ khác, đảm bảo quá trình truyền tải không bị gián đoạn.

Cân bằng tải Web Server là yếu tố quan trọng trong việc xây dựng Website theo kiến trúc mở rộng, giúp tránh tình trạng tắc nghẽn và đảm bảo thời gian phản hồi nhanh cho người dùng Một trong những kỹ thuật phổ biến để thực hiện cân bằng tải là sử dụng DNS (Domain Name System) DNS Server chứa thông tin về địa chỉ của nhiều Host dưới một tên Host duy nhất, cho phép người dùng truy cập vào các địa chỉ khác nhau theo thứ tự quay vòng, từ đó tối ưu hóa hiệu suất và khả năng truy cập của Website.

Lợi ích cân bằng tải

- Tăng khả năng đáp ứng, tránh tình trạng quá tải trên máy chủ, đảm bảo tính linh hoạt và mở rộng cho hệ thống

Sử dụng cân bằng tải không chỉ nâng cao độ tin cậy mà còn cải thiện khả năng dự phòng cho hệ thống, đảm bảo tính sẵn sàng cao (High Availability - HA) Điều này giúp người dùng tránh được gián đoạn dịch vụ ngay cả khi có sự cố xảy ra tại một điểm cung cấp dịch vụ.

Bằng cách sử dụng bộ cân bằng tải, hệ thống tăng cường tính bảo mật khi xử lý yêu cầu dịch vụ từ người dùng Yêu cầu được chuyển tiếp qua bộ cân bằng tải trước khi đến các máy chủ nội bộ, và quá trình trả dữ liệu cũng diễn ra qua thành phần này Điều này giúp người dùng không thể xác định được máy chủ nào đang hoạt động và phương pháp phân tải được sử dụng, từ đó ngăn chặn việc giao tiếp trực tiếp với các máy chủ, bảo vệ thông tin và cấu trúc mạng nội bộ, cũng như giảm thiểu nguy cơ tấn công mạng và các dịch vụ không liên quan hoạt động trên các cổng khác.

Kỹ thuật cân bằng tải

Kiểm tra trạng thái Server

Để chọn Server phù hợp cho việc gửi Request, bộ cân bằng tải cần xác định trạng thái hoạt động của các Server hiện có thông qua kỹ thuật “Health Check” Một Server bị Down có thể phản hồi lệnh ping nhưng không thể xử lý các kết nối TCP, trong khi một Server bị treo có thể đáp ứng kết nối TCP nhưng không trả lời các yêu cầu HTTP Khi một ứng dụng Web nhiều lớp hoạt động, một số yêu cầu HTTP có thể được xử lý ngay lập tức, trong khi những yêu cầu khác có thể gặp thất bại.

Cân bằng thời gian kiểm tra là thách thức lớn nhất trong kỹ thuật lựa chọn Server, yêu cầu khoảng thời gian giữa hai lần kiểm tra phải đủ dài để tiết kiệm tài nguyên hệ thống, nhưng cũng cần đủ ngắn để nhanh chóng phát hiện Server “chết” “Health Checks” là một trong những khía cạnh phức tạp nhất của kỹ thuật cân bằng tải, vì vậy sau một vài lần kiểm tra, các nhà phát triển ứng dụng thường thực hiện yêu cầu đặc biệt cho bộ cân bằng tải, nhằm thực hiện một số kiểm tra nội bộ.

Phần mềm cân bằng tải mang lại khả năng Scripting, giúp tăng cường tính linh hoạt Hơn nữa, khi cần chỉnh sửa code cho một bài kiểm tra, phần mềm có thể thực hiện nhanh chóng trong thời gian ngắn.

Lựa chọn Server tốt nhất

Phương pháp Round Robin là một trong những cách dễ nhất và phổ biến nhất để phân phối yêu cầu trong các hệ thống nhỏ, với các server được lựa chọn theo thứ tự vòng Tuy nhiên, phương pháp này có nhược điểm là khi hai yêu cầu liên tiếp từ cùng một người dùng được gửi đi, chúng có thể được xử lý bởi hai server khác nhau, dẫn đến việc mất thông tin giữa các yêu cầu Điều này gây khó khăn trong việc tối ưu hóa tài nguyên và làm tăng thời gian cần thiết để thiết lập kết nối cho các phiên.

Một giải pháp để khắc phục nhược điểm này là áp dụng hàm băm theo địa chỉ IP, giúp các yêu cầu từ cùng một địa chỉ IP chỉ được gửi đến một máy chủ duy nhất Tuy nhiên, phương pháp này yêu cầu người dùng phải có địa chỉ IP tĩnh.

Kỹ thuật Session Persistence

Kỹ thuật Session Persistence là giải pháp quan trọng để đảm bảo rằng tất cả các yêu cầu của người dùng trong suốt phiên làm việc của họ được gửi đến cùng một máy chủ Điều này giúp duy trì tính liên tục của phiên làm việc Nếu máy chủ gặp sự cố hoặc cần bảo trì, cần có cơ chế chuyển đổi để di chuyển Session của người dùng sang máy chủ khác, đảm bảo trải nghiệm người dùng không bị gián đoạn.

Cookie

Cookie là một đối tượng do Web Servers điều khiển, chứa thông tin được chèn thêm trong phản hồi gửi đến người dùng Khi người dùng gửi yêu cầu tiếp theo đến Server, thông tin của Cookie sẽ được kèm theo, giúp Server nhận biết và xử lý các yêu cầu này một cách hiệu quả.

HTTP nhận được yêu cầu HTTP nhận được trả lời có 1 người dùng cookie = 1

HTTP tiếp theo nhận được yêu cầu từ khách hàng có người dùng cookie = 1

Trình duyệt của máy khách lưu trữ người sử dụng cookie = 1 trên máy tính

Hình 6.1: Cách làm việc của Cookie user = 1

Cookie được định nghĩa dưới dạng cặp tên=giá trị (name=value) Trong thiết kế bộ cân bằng tải, có ba phương pháp sử dụng Cookie: Cookie chỉ đọc (Cookie-Read), bộ cân bằng tải chèn Cookie để xác thực Server (Cookie-Insert), và ghi đè Cookie (Cookie-Rewrite).

Khi người dùng gửi yêu cầu đầu tiên đến server mà không có Cookie, yêu cầu sẽ được chuyển đến server RS1 Tại đây, server RS1 tạo và gán Cookie Server=1 vào dữ liệu trả về cho người dùng Trình duyệt nhận dữ liệu này, đọc và lưu trữ Cookie vào đĩa cứng Sau đó, người dùng có thể tắt trình duyệt hoặc ngắt kết nối Khi người dùng kết nối lại sau một thời gian, họ sẽ gửi yêu cầu đến bộ cân bằng tải.

Sau khi thiết lập kết nối, trình duyệt sẽ gửi Cookie Server=1 trong yêu cầu HTTP Bộ cân bằng tải nhận diện Cookie này và chuyển hướng yêu cầu của người dùng đến Server RS1 Do đó, người dùng sẽ luôn được kết nối với Server 1 cho đến khi Cookie hết hạn, bất kể họ truy cập từ các địa chỉ IP khác nhau.

HTTP trả lời với máy chủ cookie = 1 HTTP yêu cầu với máy chủ cookie = 1

Phương pháp Cookie-Read có ưu điểm là giảm tải công việc cho bộ cân bằng tải, chỉ cần đọc Cookie được tạo ra từ Web Server và yêu cầu của người dùng Tuy nhiên, nhược điểm là ứng dụng trên Server phải tạo ra Cookie, điều này yêu cầu nhà phát triển phải thay đổi mã nguồn chương trình Khi lắp đặt Server mới, quản trị viên hệ thống cần sửa đổi hoặc thêm thông số vào File cấu hình của bộ cân bằng tải.

Trong phương pháp này, ứng dụng trên Server không thực hiện bất kỳ thao tác nào Tương tự như Cookie-Read, khi Server gửi dữ liệu cho người dùng, bộ cân bằng tải sẽ xác định Server nào đã trả về dữ liệu và chèn vào đó một Cookie chứa thông tin về Server đó Khi người dùng kết nối lần tiếp theo, bộ cân bằng tải sẽ đọc thông tin từ Cookie và chuyển hướng yêu cầu của người dùng đến đúng Server RS1.

Cân bằng tải sửa đổi HTTP trả lời để chèn các máy chủ cookie = 1 HTTP yêu cầu với máy chủ cookie = 1

Phương pháp sử dụng Cookie có ưu điểm là ứng dụng Server không cần tạo hoặc quan tâm đến Cookie, giúp người quản trị hệ thống dễ dàng hơn khi thêm hoặc xóa Server mà không cần cập nhật File cấu hình Tuy nhiên, nhược điểm của phương pháp này là có thể gây quá tải cho bộ cân bằng tải, do việc chèn dữ liệu làm tăng dung lượng bộ nhớ cần thiết và có thể dẫn đến việc gói tin trả về lớn hơn, gây ra tình trạng chia đôi gói tin và mất dữ liệu.

Phương pháp Cookie-Read yêu cầu ứng dụng phía Server tạo Cookie, nhưng không làm quá tải bộ cân bằng, trái ngược với Cookie-Insert Để tối ưu hóa hiệu suất, cần một phương pháp kết hợp ưu nhược điểm của cả hai, và phương pháp Cookie-Rewrite chính là giải pháp lý tưởng.

Nhược điểm lớn nhất của phương pháp cookie-insert là yêu cầu về bộ nhớ phức tạp, có thể dẫn đến việc gói tin bị chia thành hai do vượt quá kích thước tối đa của gói tin Ethernet, gây mất dữ liệu Giải pháp là tạo một khoảng trống trong gói tin để chứa giá trị cookie, cho phép bộ cân bằng tải chỉ cần chèn giá trị cần thiết Phương pháp ghi đè cookie, như mô tả trong hình 1.5, cho phép ứng dụng chèn vào gói tin trả về một cookie server=xxx Bộ cân bằng tải chỉ cần tìm đoạn server=xxx và thay "XXX" bằng ID của server, ví dụ như server1 Ưu điểm của phương pháp này là giảm tải cho bộ cân bằng và ngăn gói tin bị chia nhỏ, đồng thời khắc phục nhược điểm của phương pháp Cookie-Read.

Các thuật toán cân bằng tải

Thuật toán ngẫu nhiên

Trong thuật toán ngẫu nhiên, tải sẽ được phân phối ngẫu nhiên giữa các Web Server Việc chọn Web Server được thực hiện dựa trên một hàm sinh số ngẫu nhiên, và yêu cầu từ người dùng sẽ được chuyển đến Server đã được chọn.

Thuật toán này có thể thực hiện như sau: arrayServer [] == list_of_server(); int n = number_of_active_server; int i - get_random_number (n); proxy ->server = arrayServe[i];

Thuật toán này thường không được sử dụng trong các bộ cân bằng tải, mặc dù nó thường được tích hợp sẵn Thay vào đó, nó chủ yếu xuất hiện trong các gói phần mềm lớn, nơi cân bằng tải chỉ được xem như một chức năng bổ sung.

Thuật toán Round Robin

Phương pháp dễ nhất và thường được sử dụng nhất trong các hệ thống nhỏ là Round Robin, các Server được lựa chọn quay vòng,

Round Robin là phương pháp phân phối tải hiệu quả khi các Server có cấu hình tương đương Tuy nhiên, khi các Server có cấu hình khác nhau hoặc sau một thời gian, hiện tượng mất cân bằng có thể xảy ra Điều này dẫn đến việc một số Server phải xử lý nhiều kết nối hơn so với các Server khác, mặc dù số lượng kết nối tiếp theo được phân bổ đều.

To check for available servers, verify the size of the Server_map If the server map size is zero, return NULL Additionally, ensure that the server round-robin index does not exceed the server map size.

/* Nếu đến cuối mảng srv_map, update lại giá trị srv_rr_idx */ srv_rr_idx=0; int newidx = px->srv_rr_idx; do { srv = proxy ->srv_map[newidx++];

/* Trả về server và update lại giá trị srv_rr_idx */ return srv; proxy->srv_rr_idx = newidx;

} while (newidx != px->srv_rr_idx)

Phương pháp này có nhược điểm là hai yêu cầu liên tiếp từ một người dùng sẽ được xử lý bởi hai máy chủ khác nhau, dẫn đến việc thông tin giữa các yêu cầu bị mất Điều này khiến cho việc tối ưu hóa tài nguyên trở nên khó khăn.

Thuật toán Weighted Round Robin

Thuật toán Weighted Round Robin hoạt động tương tự như thuật toán Round Robin, trong đó yêu cầu từ người dùng được bộ cân bằng tải phân phối đến các Server theo thứ tự xoay vòng Tuy nhiên, điểm khác biệt chính là Weighted Round Robin chú trọng đến khả năng xử lý của từng Server Cụ thể, trong cùng một chu kỳ, một Server có khả năng xử lý gấp đôi Server khác sẽ nhận được gấp đôi số yêu cầu từ bộ cân bằng tải.

Giả sử 4 Server A, B, C, D có cấu hình khác nhau, A và B có cấu hình giống nhau, C và

Máy chủ D có cấu hình mạnh gấp đôi máy chủ A, vì vậy có thể gán trọng số cho máy chủ A và B là 1, trong khi C và D được gán trọng số là 2 Theo thuật toán Weighted Round Robin, thứ tự mà máy chủ nhận yêu cầu từ bộ cân bằng tải sẽ là ABCDCD.

Thuật toán Weighted Round Robin là lựa chọn ưu việt hơn so với Round Robin khi các máy chủ trong cụm có cấu hình khác nhau Tuy nhiên, việc áp dụng thuật toán này có thể gây ra tình trạng mất cân bằng tải động, đặc biệt khi tải của các yêu cầu thay đổi liên tục trong khoảng thời gian ngắn Điều này có thể dẫn đến việc nhiều yêu cầu có tải cao được chuyển hướng đến cùng một máy chủ.

Thuật toán Dynamic Round Robin

Thuật toán Dynamic Round Robin tương tự như Weighted Round Robin, nhưng trọng số thay đổi liên tục dựa trên việc kiểm tra hiệu suất của Server Thuật toán này phân tích hiệu năng Server theo thời gian thực, xem xét các yếu tố như số kết nối hiện tại và tốc độ phản hồi của Server Dynamic Round Robin thường không xuất hiện trong các bộ cân bằng tải đơn giản, mà chủ yếu được áp dụng trong các sản phẩm cân bằng tải của F5 Network.

Thuật toán Fastest

Thuật toán Fastest chọn Server dựa trên thời gian đáp ứng nhanh nhất của từng Server Thời gian đáp ứng được tính từ lúc gửi gói tin đến khi nhận được phản hồi Bộ cân bằng tải sẽ quản lý quá trình gửi nhận này và dựa trên thời gian đáp ứng để quyết định Server nào sẽ nhận yêu cầu tiếp theo.

Thuật toán Fastest sử dụng các máy chủ phân bố ở nhiều vị trí khác nhau, giúp tối ưu hóa thời gian đáp ứng cho người dùng Người dùng sẽ được kết nối đến máy chủ gần nhất, đảm bảo thời gian phản hồi nhanh nhất và hiệu suất phục vụ tốt nhất.

Thuật toán Least Connections

Thuật toán Least Connections chuyển yêu cầu của người dùng đến Server có số kết nối ít nhất tại thời điểm đó, được xem là thuật toán động vì cần theo dõi số lượng kết nối hiện có Với hệ thống có các Server tương đồng về cấu hình, thuật toán này hoạt động hiệu quả ngay cả khi tải kết nối biến đổi lớn Giả sử có n Server Si, với số lượng kết nối hoạt động là Ci.

= (1, 2, ,n) All_connections là tổng Ci

Yêu cầu tiếp theo sẽ được chuyển đến Server j, trong đó:

Cj/All_connections = min {Ci/All_connections}, i =(l,2, ,n)

Vì giá trị All_connections là không đổi tại thời điểm tính nên chúng ta có thể chọn Server Cj theo công thức:

Thuật toán Observed

Observed là phương pháp kết hợp giữa Least Connections và Fastest Response, yêu cầu nhà phát triển hệ thống cân bằng giữa số lượng kết nối đến một server và thời gian đáp ứng Hai yếu tố này được gán trọng số nhất định dựa trên đánh giá của người quản trị Một phép toán dựa trên số kết nối, thời gian đáp ứng và trọng số sẽ xác định giá trị cho mỗi server Dựa vào giá trị này, bộ cân bằng tải sẽ lựa chọn server phù hợp nhất.

Thuật toán Predictive

Predictive là bước tiến mới của Observed, trong đó hệ thống phân tích trạng thái của các Server theo thời gian để xác định thời điểm hiệu năng tăng hay giảm Khi hai Server được đánh giá tương đương bởi thuật toán Observed, Server có hiệu năng biến đổi tốt hơn sẽ được ưu tiên lựa chọn.

Thuật toán Source

Trong thuật toán Source, địa chỉ IP nguồn được băm và chia cho tổng số máy chủ đang hoạt động, từ đó xác định máy chủ nào sẽ nhận yêu cầu Phương pháp này giúp đảm bảo rằng các khách hàng có cùng một địa chỉ IP sẽ được phân phối đều đến các máy chủ khác nhau.

IP luôn hoạt động với một máy chủ, và nếu số lượng máy chủ thay đổi, nhiều khách hàng có thể được chuyển đến một máy chủ khác Thuật toán này thường được áp dụng trong chế độ TCP mà không sử dụng Cookie, do đó nó được coi là thuật toán tĩnh.

Các giải pháp chia tải

Cân bằng tải sử dụng phần cứng

Bộ cân bằng tải phần cứng cung cấp một địa chỉ IP ảo cho mạng bên ngoài, ánh xạ đến các địa chỉ của từng máy trong Cluster Do đó, toàn bộ máy tính trong Cluster được xem như một máy duy nhất từ phía bên ngoài Thiết bị này hoạt động chủ yếu ở tầng mạng và dựa trên nguyên tắc định tuyến để phân phối lưu lượng.

Hình 8.1: Cân bằng tải sử dụng phần cứng

Khi một yêu cầu được gửi đến bộ cân bằng tải, nó sẽ ghi lại tiêu đề của yêu cầu để chuyển tiếp đến các máy chủ khác trong cụm Tất cả các máy chủ trong cụm đều có cùng địa chỉ IP, mang lại sự đồng nhất và dễ dàng quản lý.

Bộ cân bằng tải phần cứng quản lý mối quan hệ giữa các máy chủ bằng cách đọc Cookie hoặc URL trong mỗi yêu cầu từ máy khách Dựa trên thông tin này, nó ghi lại các Header và chuyển tiếp yêu cầu đến nút phù hợp trong Cluster, nơi phiên làm việc (Session) được duy trì.

Khả năng sẵn có cao được đảm bảo nhờ vào hệ thống tự động chuyển đổi dự phòng, cho phép chuyển hướng yêu cầu đến nút khác trong Cluster khi một nút không thể xử lý.

Bộ cân bằng tải kiểu này cung cấp khả năng chuyển đổi dự phòng cho các yêu cầu, tự động chuyển hướng tất cả các Request từ nút gặp sự cố sang một nút hoạt động khác trong Cluster Để đảm bảo chuyển đổi dự phòng Session diễn ra một cách suôn sẻ, cần có sự phối hợp giữa các nút trong Cluster với vùng bộ nhớ chia sẻ hoặc cơ sở dữ liệu chung để lưu trữ dữ liệu Session Nhờ vậy, nếu một nút gặp vấn đề, Session có thể tiếp tục trên nút khác mà không bị gián đoạn.

Các chỉ số là rất quan trọng vì tất cả yêu cầu đến một ứng dụng Web đều phải thông qua hệ thống cân bằng tải, giúp hệ thống xác định số lượng phiên hoạt động.

Cân bằng sử dụng phần mềm

Kết hợp nhiều server để tạo thành một server ảo (Virtual Server) mang lại nhiều lợi ích, nhưng việc sử dụng phần mềm phức tạp trên server dẫn đến khả năng mở rộng hạn chế Giải pháp này cũng gặp khó khăn trong việc triển khai và khắc phục sự cố, đồng thời có rào cản về tính tương thích Hơn nữa, việc tích hợp các tính năng tăng tốc và bảo mật cho ứng dụng trở nên khó khăn hơn.

Chia tải nhờ Proxy

Sử dụng phần mềm proxy như ISA Proxy của Microsoft hay Squid, người dùng có thể tận dụng khả năng chia tải hiệu quả trên các server Giải pháp này có chi phí thấp và khả năng mở rộng tốt nhờ cài đặt trên máy phổ dụng, dễ dàng quản lý Tuy nhiên, do chỉ hoạt động ở mức ứng dụng, hiệu năng không cao và có thể gặp nhiều lỗi hệ thống, khiến việc theo dõi trạng thái máy chủ trở nên khó khăn Nhược điểm lớn nhất của các giải pháp này là tính ổn định kém và hiệu suất thấp.

Chia tải nhờ thiết bị chia kết nối

Sử dụng các mô-đun cắm thêm trên thiết bị chuyên dụng như bộ định tuyến và bộ chuyển mạch giúp chia tải theo luồng hiệu quả, thường hoạt động từ layer 4 trở xuống Những thiết bị này mang lại hiệu năng và tính ổn định cao, cùng khả năng mở rộng tốt hơn Tuy nhiên, việc phát triển tính năng bảo mật phức tạp gặp khó khăn, vì thuật toán chia tải thường đơn giản.

Các thành phần của Hệ thống cân bằng tải

Ngày đăng: 25/08/2021, 15:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w