Hướng dẫn triển khai network load balancing cho Webserver

0
2439

Một website với khả năng mở rộng nghĩa là khi số lượng người dùng tăng lên nhanh chóng trong một khoảng thời gian nhất định, website vẫn đáp ứng được nhu cầu, hơn nữa website có khả năng dễ dàng nâng cấp lên để phù hợp với tình hình mới.

Tại thời điểm ban đầu, các website với khả năng mở rộng lớn thường được thiết kế để phục vụ hàng triệu yêu cầu mỗi ngày, sau đó nó được nâng cấp để phục vụ thêm nếu như có yêu cầu.

Để phục vụ được hàng chục triệu lượt truy cập mỗi ngày, website cần phải đáp ứng được yêu cầu về khả năng mở rộng (Scalability), về tính linh hoạt (Flexibility), tính đáp ứng (Responsiveness), tính sẵn sàng cao (High Availability), tránh được thời gian chết của hệ thống (downtime impact), khả năng bảo trì tốt và được xây dựng với giá thành tốt nhất.

Khả năng mở rộnglà khả năng của một ứng dụng có thể hỗ trợ được số lượng người truy cập ngày một tăng. Nếu nó cần 10ms để một ứng dụng có thể đáp trả cho một yêu cầu thì khoảng thời gian sẽ là bao lâu để nó đáp trả 10.000 yêu cầu cùng 1 lúc?

Khả năng mở rộng vô hạn sẽ cho phép nó đáp trả các yêu cầu này chỉ trong khoảng 10ms, Như vậy, khả năng mở rộng là đơn vị đo sự kết hợp mà các hệ số đó là số lượng người dùng đồng thời mà 1 cụm server có thể hỗ trợ và thời gian cụm server cần để xử lí một yêu cầu.

Thiết kế Website với khả năng mở rộng cao là yêu cầu sống còn đối với 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 được yêu cầu của người dùng trong thời gian họ mong muốn

Hiệu nănglà khả năng mà hệ thống sử dụng tài nguyên của nó một cách tốt nhất, chẳng hạn như nếu 2 server cấu hình giống nhau, server nào có thể phục vụ được nhiều người dùng hơn(người dùng chạy các ứng dụng tương đương) thì máy đó có tính thực hiện cao hơn.

Khả năng có sẵn cao có thể được hiểu là tình trạng dư thừa. Nếu một máy chủ không thể quản lý một yêu cầu thì các máy chủ khác trong cluster đó có quản lý được nó hay không?

Trong một hệ thống có khả năng có sẵn cao, nếu một web server bị lỗi thì một web server khác sẽ tiếp quản ngay để xử lý yêu cầu. Nghĩa là, nếu 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 làm việc của người đó dẽ được chuyển qua cho một server khác đảm nhiệm.

Như vậy trong bất cứ trường hợp nào, người dùng truy cập vào các dịch vụ của hệ thống đều được đáp ứng, chính vì vậy mà người dùng luôn cảm thấy được phục vụ tốt nhất

Tính đáp ứng là khả năng phục vụ người dùng của hệ thống làm sao để hệ thống có thể phục vụ người dùng tại mọi thời điểm và thời gian đáp ứng là bao lâu.

Hệ thống gửi response về càng nhanh thì tính đáp ứng của nó càng cao, ngược lại nếu thời gian trì hoãn (delay) càng lớn thì tính đáp ứng sẽ càng lâu.

Chẳng hạn như khi người dùng truy cập vào một trang web mà phải chờ đợi quá lâu cho việc load dữ liệu, thông tin thì thay vào đó để không phải tốn mất nhiều thời gian họ sẽ tìm một công việc khác để làm đôi khi họ quên mất rằng mình đang truy cập vào một dịch vụ web và đóng luôn trình duyệt đó lại hoặc sẽ quay trở lại sau một khoảng thời gian khá lâu.

Điều này rất không tốt bởi trong hệ thống mà họ truy cập vẫn hoạt động và lưu giữ phiên session mà không phục vụ cho bất cứ ai, đó chính là một sự lãng phí lớn. Tính đáp ứng và tính thực hiện là độc lập với nhau, một hệ thống có hiệu năng tốt vẫn có thể có khả năng đáp ứng rất tồi tệ.

Downtime impact: Đây là một vấn đề mà tất cả các hệ thống đều gặp phải, đó là thời gian mà hệ thống bị “chết”, khi mà số lượng các chức năng chính bị down, đây là vấn đề có tính tuần hoàn đối với các nhà phát triển hệ thống.

Một hệ thống tốt sẽ giúp người dùng truy cập nhanh làm họ cảm thấy hài lòng dẫn đến số lượng người dùng tăng lên và khi số lượng người dùng tăng lên hệ thống sẽ lại bị tắc nghẽn và nhà quản trị mạng sẽ phải đối phó với vấn đề đó, giải quyết nó nhằm tạo ra hệ thống hoạt động được tốt nhất.

Điều quan trọng là một hệ thống tốt cần phải kéo thời gian chu kì này lên, sao cho hệ thống hoạt động tốt nhất trong thời gian đủ dài trước khi cần phải nâng cấp, cũng như làm sao để xây dựng được hệ thống tốt nhất có khả năng mở rộng lớn.

Cùng với các đòi hỏi này, hệ thống cũng cần phải có thể dễ dàng bảo trì và giá thành vừa phải, không quá cao. Xây dựng một hệ thống web như vậy sẽ gặp rất nhiều vấn đề khó, những vấn đề quan trọng nhất trong việc thiết kế một website có khả năng mở rộng mà bất cứ nhà phát triển hệ thống web nào cũng phải giải quyết đó là cân bằng tải cho application server, cân bằng tải cho database-server, tổ chức lưu trữ dữ liệu trên đĩa cứng và cân bằng tải cho cache.

nlb

Server Load Balancing (máy chủ cân bằng tải) làm cho nhiều máy chủ xuất hiện như là một máy chủ duy nhất, một dịch vụ đơn ảo, phân phối các yêu cầu người sử dụng trong các máy chủ. (xem tiếp trang sau)

This site uses Akismet to reduce spam. Learn how your comment data is processed.