Tìm hiểu về cân bằng tải cho WebServer Ngày nay, với sự phát triển của dịch vụ web, số lượng website ngày càng nhiều đem đến cho người dùng rất nhiều sự lựa chọn. Để tồn tại và phát triển, website của các tổ chức, doanh nghiệp phải giữ được người dùng hiện tại và tăng thêm số lượng người dùng mới. Mục đích nghiên cứu Giải thích được các kỹ thuật cân bằng tải Webserver Phân tích được các thuật toán cân bằng tải cho Webserver Cài đặt được hệ thống Webserver Triển khai cài đặt được hệ thống cân bằng tải cho Webserver
Trang 1MỤC LỤC
DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ
DANH MỤC CÁC TỪ VIẾT TẮT
ARP Address Resolution Protocol Giao thức phân giải địa chỉ
CDN Content Delivery Network Mạng lưới phân phối nội dung
CPU Central Processing Unit Bộ trung tâm xử lý
DAO Data Access Object Đối tượng truy cập dữ liệu
Trang 2DNS Domain Name System Hệ thống tên miền
DRR Dynamic Round Robin Thuật toán động luân chuyển vòngFTP File Transfer Protocol Giao thức truyền tập tin
GSLB Global Server Load Balancing Cân bằng tải server toàn cầu
HA High Availability Tính sẵn sàng cao của server
HTML Hypertext Markup Language Ngôn ngữ đánh dấu siêu văn bảnHTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn bản
IGMP Internet Group Management
Protocol
Giao thức quản lý nhóm internet
IIS Internet Information Services Dịch vụ thông tin trên internet
IP Internet Protocol Địa chỉ của máy tính kết nối mạngISA Internet Security and
Acceleration
Phần mềm bảo mật và tăng tốcInternet
ISP Internet Service Provider Nhà cung cấp dịch vụ Internet
NLB Network Load Balancing Cân bằng tải cho mạng
LAN Local Access Network Mạng máy tính cục bộ
LC Least Connections Thuật toán số kết nối ít nhất
MAC Media Access Control Địa chỉ vật lý của card mạng
NAT Network Address Translate Giao tiếp máy tính trong mạng ra
ngoài internetOSI Open Systems Interconnection Mô hình tham chiếu kết nối các hệ
thống mởRDBM Open Systems Interconnection Kết nối các hệ thống mở
RRDNS Round Robin Domain Name
System
Luân chuyển vòng dựa trên hệthống tên miền
SAN Storage Area Network Vùng lưu trữ thông tin, dữ liệu
SLB Server Load Balancing Máy chủ cân bằng tải
SMTP Simple Mail Transfer Potocol Giao thức truyền thư tín điện tửSSL Secure Sockets Layer Giao thức bảo mật thông tin mạngTCP Transmission Control Protocol Giao thức điều khiển truyền vận
URL Uniform Resource Locator Địa chỉ web/ liên kết mạng
VIP Virtual Internet Protocol Địa chỉ truy cập ảo
WRR Weighted Round Robin Thuật toán luân chuyển vòng dựa
trên khả năng xử lý của các server
Trang 3CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1. Lý do chọn đề tài
Ngày nay, với sự phát triển của dịch vụ web, số lượng website ngày càng nhiềuđem đến cho người dùng rất nhiều sự lựa chọn Để tồn tại và phát triển, website củacác tổ chức, doanh nghiệp phải giữ được người dùng hiện tại và tăng thêm số lượngngười dùng mới Để làm được điều này, các doanh nghiệp phải đảm bảo cho hệ thốngcủa mình hoạt động tốt nhất và phục vụ được các nhu cầu của người dùng truy cập với
số lượng lớn, do đó yêu cầu lắp đặt thêm nhiều server mới cũng như yêu cầu cân bằngtải cho các server thực sự là nhu cầu cấp thiết Đứng trước sự cạnh tranh về giá thành,việc phát triển và xây dựng các phương pháp cân bằng tải trở nên vô cùng hữu ích
Từ thực tế trên em quyết định chọn đề tài “Tìm hiểu về cân bằng tải Webserver”
nhằm tìm hiểu các nguyên lý hoạt động cũng như các thuật toán cân bằng tải để xâydựng một nền tảng vững chắc về vấn đề cân bằng tải cho webserver, từ đó góp phầnthúc đẩy quá trình xây dựng nên một bộ cân bằng tải hoạt động hiệu quả có khả năngđáp ứng nhu cầu cho các webserver thúc đẩy quá trình xây dựng nên một bộ cân bằngtải hoạt động hiệu quả, có khả năng đáp ứng nhu cầu của các webserver
1.2. Đối tượng và khách thể nghiên cứu
- Tìm hiểu tổng quan về web server
- Tìm hiểu các kỹ thuật cân bằng tải cho web server
- Tìm hiểu các thuật toán cân bằng tải
- Triển khai cài đặt hệ thống web server và thực hiện cân bằng tải hệ thống.1.3. Mục đích nghiên cứu
- Giải thích được các kỹ thuật cân bằng tải Webserver
Trang 4- Phân tích được các thuật toán cân bằng tải cho Webserver
- Cài đặt được hệ thống Webserver
- Triển khai cài đặt được hệ thống cân bằng tải cho Webserver
1.4. Nội dung thực hiện
- Tìm hiểu về kiến trúc web với khả năng mở rộng
- Tìm hiểu các kỹ thuật cân bằng tải webserver
- Tìm hiểu các thuật toán cân bằng tải
- Triển khai cài đặt hệ thống webserver
- Cài đặt hệ thống cân bằng tải cho webserver
1.5. Phương pháp tiếp cận
- Cách tiếp cận: Nghiên cứu kỹ thuật cân bằng tải trên nền tảng công nghệ khác nhaunhư Windows, Linux
- Sử dụng phương pháp nghiên cứu:
Phương pháp lý luận: Tham khảo tài liệu trên sách báo, trên mạng internet, đặcbiệt là các diễn đàn công nghệ, đọc dịch tài liệu tiếng anh và xử lý thông tin
Phương pháp thực nghiệm: Dựa vào lý thuyết để áp dụng vào triển khai xâydựng hệ thống và đánh giá kết quả thực nghiệm nhiều lần nhằm xây dựng hệthống đáp ứng yêu cầu hiệu quả
Phương pháp chuyên gia: Nhờ sự giúp đỡ của các thầy cô giáo có kiến thứcchuyên môn để nhận xét, đánh giá, đóng góp ý kiến cho đề tài hoàn thiện hơn
Trang 5CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Tổng quan về WebServer
2.1.1 Khái niệm về WebServer
Web Server là máy chủ được cài đặt phần mềm phục vụ Web, đôi khi người tacũng gọi chính phần mềm đó là Web Server Tất cả các Web Server đều hiểu và chạyđược các file *.htm và *.html, tuy nhiên mỗi Web Server lại phục vụ một số kiểu filechuyên biệt chẳng hạn như IIS của Microsoft dành cho *.asp, *.aspx ; Apache dànhcho *.php ; Sun Java System Web Server dành cho *.jsp
Máy Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữthông tin như một ngân hàng dữ liệu, chứa những website đã được thiết kế cùng vớinhững thông tin liên quan khác như (các mã Script, các chương trình, và các fileMultimedia)
Web Server có khả năng gửi đến máy khách những trang Web thông qua môitrường Internet (hoặc Intranet) qua giao thức HTTP - giao thức được thiết kế để gửicác file đến trình duyệt Web (Web Browser), và các giao thức khác.Tất cả các Web Server đều có một địa chỉ IP (IP Address) hoặc cũng có thể có mộtDomain Name Giả sử khi bạn đánh vào thanh Address trên trình duyệt của ngườidùng một dòng http://www.abc.com sau đó gõ phím Enter sẽ gửi một yêu cầu đến mộtServer có Domain Name là www.abc.com Server này sẽ tìm trang Web có tên làindex.htm rồi gửi nó đến trình duyệt của người dùng truy cập
2.1.2 Sơ lược về giao thức HTTP
Giao thức HTTP (Hipertext Transfer Protocol – Giao thức truyền tải siêu vănbản) là giao thức giao tiếp theo kiểu truy vấn - trả lời (request-response) giữa khách-chủ (client-server) được sử dụng phổ biến trên internet Cũng nên biết là trên internetngoài HTTP ta còn có rất nhiều giao thức khác như FTP (File Transfer Protocol - Giaothức truyền tập tin), SMTP (Simple Mail Transfer Protocol - Giao thức truyền tải thư
Trang 6tín đơn giản) World Wide Web được xây dựng dưa trên nền tảng giao thức HTTP vàcông nghệ HTML (Hipertext Markup Language: Ngôn ngữ đánh dấu siêu văn bản).HTTP được ứng dụng trong các phần mềm máy chủ Web và trong các trình duyệtWeb để trao đổi thông tin giữa máy chủ Web và máy khách Web trên môi trườngmạng.
Một HTTP khách (HTTP client), chẳng hạn một trình duyệt web (web browser),dùng HTTP để truy vấn một tài liệu HTML, khi nhận được trả lời từ HTTP chủ (HTTPserver), chẳng hạn máy chủ Apache (Apache HTTP server: httpd), nó sẽ định dạng(format) rồi hiển thị tài liệu này cho người dùng HTTP được sử dụng để truyền tảikhông chỉ HTML, tuy nhiên HTML là ngôn ngữ giao tiếp (lingua franca) của web vàứng dụng web
Truy vấn HTTP: Một truy vấn HTTP (HTTP request) bao gồm một phương thứctruy vấn (request method), URL truy vấn (request URL), phần đầu (header) và phầnthân (body) truy vấn; phần thân có thể rỗng Trong đó phương thức là một lệnh chỉ rõloại truy vấn, HTTP định nghĩa các phương thức truy vấn sau:
- GET: phương thức hay dùng nhất để lấy tài nguyên (resource) từ URL truy vấn.Khi truy vấn dùng phương thức này, các tham số (parameter) được nối thẳng vàoURL Phương thức GET này không có phần thân hay phần thân trống rỗng
- HEAD: lấy phần đầu (header) của truy vấn, tức thông tin về tài nguyên
- POST: gửi dữ liệu với độ dài không giới hạn tới máy chủ web (web server) Khácvới phương thức GET, phương thức POST dùng phần thân của câu truy vấn đểgửi dữ liệu đến máy chủ web
- PUT: thay thế hoặc thêm tài nguyên vào máy chủ web theo URL cung cấp
- DELETE: xoá tài nguyên ở máy chủ web định vị bởi URL
- OPTIONS: trả về các phương thức HTTP server cung cấp cho 1 URL xác định
- TRACE: trả về thông tin truy vấn mà máy chủ nhận được Phương thức này chophép theo dõi một truy vấn để xem có những thay đổi hay thêm thắt nào nếu có
do những máy chủ trung gian (intermediate server) thực hiện
Trả lời HTTP: Một trả lời HTTP bao gồm một mã kết quả (result code) hay mã trạngthái (status code), phần đầu (header) và phần thân (body)
Giống như những phần mềm khác, Web Server Software cũng chỉ là một ứngdụng phần mềm Nó được cài đặt và chạy trên máy tính dùng làm Web Server, nhờ có
Trang 7chương trình này mà người sử dụng có thể truy cập đến các thông tin của trang Web từmột máy tính khác ở trên mạng (Internet, Intranet).
Web Server Software còn có thể được tích hợp với cơ sở dữ liệu (Database), hayđiều khiển việc kết nối vào cơ sở dữ liệu để có thể truy cập và kết xuất thông tin từ cơ
sở dữ liệu lên các trang Web và truyền tải chúng đến người dùng
Server phải hoạt động liên tục để phục vụ cho việc cung cấp thông tin trực tuyến
Vị trí đặt server đóng vai trò quan trọng trong chất lượng và tốc độ lưu chuyển thôngtin từ server và máy tính truy cập
2.2 Các khái niệm về kiến trúc web với khả năng mở rộng
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ênnhanh chóng trong một khoảng thời gian nhất định, website vẫn đáp ứng được nhucầu, hơn nữa website có khả năng dễ dàng nâng cấp lên để phù hợp với nhu 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 đượcyêu cầu về khả năng mở rộng (Scalability), về hiệu năng (Performance), tính đáp ứng(Responsiveness), tính sẵn có 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ốtnhất Dưới đây là các khái niệm về kiến trúc web với khả năng mở rộng:
mở rộng là đơn vị đo sự kết hợp của các hệ số, đó là số lượng người dùng đồng thời
mà một 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 hầu hết cáccông ti dịch vụ web hiện nay, để tồn tại và phát triển một website cần phải đáp ứngđược các yêu cầu của người dùng trong thời gian mà họ mong muốn
2.2.2 Hiệu năng
Trang 8Là 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 Tính thựchiện được đo bằng lượng công việc có ích mà hệ thống thực hiện được đối với mộtnguồn tài nguyên nhất định, chẳng hạn như nếu 2 server có 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ụngtương đương) thì máy đó có tính thực hiện cao hơn.
2.2.3 Khả năng có sẵn cao
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 cụm cluster đó có quản lýđược hay không? Trong một hệ thống có khả năng có sẵn cao, nếu một trangwebserver bị lỗi thì một webserver khá trong cụm cluster sẽ tiếp quản ngay để xử lýyêu cầu Nghĩa là, nếu như 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 người đó sẽ được chuyển qua cho mộtserver khác đảm nhiệm Như vậy trong bất cứ trường hợp nào, người dùng truy cậpvà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ảmthấy được phục vụ nhu cầu tốt nhất
2.2.4 Tính đáp ứng
Tính đáp ứng ở đây có thể hiểu là khả năng phục vụ người dùng của hệ thống làmsao để 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ượclại nếu thời gian trì hoãn (delay) càng lớn sẽ khiến người dùng thất vọng và dẫn tớiviệc họ tin rằng trang web bị hỏng hay không hoạt động bình thường, điều này rất cóhại vì nếu đã mất đi niềm tin nơi người dùng thì chắc rằng họ sẽ không quay trở lạitrang web đó nữa Chẳng hạn như khi người dùng truy cập vào một trang web mà phảichờ đợ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ấtnhiề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ạisau 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, đó
Trang 9chí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 mạng dù có hiệu năng tốt nhưng vẫn có thể đáp ứng không đạt hiệu quả
2.2.5 Downtime impact
Downtime impact (tác động của thời gian chết) 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ứcnă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òngdẫ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ầnphả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ốtnhấ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 webnhư 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ũngphả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 [3], [4], [8]
2.3 Tổng quan về cân bằng tải
2.3.1 Khái niệm cân bằng tải
Cân bằng tải là một phương pháp phân phối khối lượng tải trên nhiều máy tínhhoặc một cụm máy tính để có thể sử dụng tối ưu các nguồn lực, tối đa hóa thônglượng, giảm thời gian đáp ứng và tránh tình trạng quá tải trên máy chủ
Sử dụng nhiều dịch vụ với cân bằng tải thay vì một dịch vụ duy nhất có thể làmtăng độ tin cậy thông qua các máy dự phòng Trong đó, cân bằng tải mạng là một kỹthuật nhằm mở rộng hiệu năng của các máy chủ ứng dụng, chẳng hạn như máy chủWeb, nhờ phân phối các yêu cầu của máy khách cho các máy chủ trong nhóm Khi đó,các máy chủ đều nhận gói IP đến nhưng gói chỉ được xử lý bởi một máy chủ nhất
Trang 10định Các máy chủ trong nhóm sẽ đồng thời đáp ứng các yêu cầu khác nhau của cácmáy trạm Với kỹ thuật cần bằng tải, quá trình xử lý và thời gian đáp ứng yêu cầu củamáy trạm sẽ nhanh hơn nhiều.
2.3.2 Chức năng và ưu điểm của cân bằng tải
Ngày nay, mạng máy tính đóng vai trò ngày càng quan trọng hơn trong hoạt độngcủa các doanh nghiệp, tổ chức cũng như các công ty lớn, mạng máy tính có vị trí rấtquan trọng trong việc điều khiển hoạt động của toàn bộ 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 trongnhững doanh nghiệp này có thể làm gián đoạn, ảnh hưởng đến sự hoạt động và pháttriển của doanh nghiệp và thiệt hại khó có thể lường trước được Nhất là đối với nhữngcông ty cần phải giao dịch liên tục, trao đổi thông tin nhanh chóng với khách hàng truycập 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ốtngay cả khi có sự cố xảy ra đối với máy chủ Việc lựa chọn một server đơn lẻ có cấuhì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 thểgiải quyết được các vấn đề đặt ra của 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, đó chính là giải pháp cân bằng tải cho máy chủ
Có rất nhiều hãng đưa ra giải pháp cân bằng tải đó là các thiết bị mạng nhưCisco, Coyote Point, Sun Microsystem… với rất nhiều tính năng phong phú Tuynhiên, về cơ bản thì 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 Do vậy, Load Balancing không chỉ làm nhiệm vụ phân phối tảicho các server mà còn cung cấp cơ chế đảm bảo hệ thống server luôn khả dụng trướccác client Server Load Balancing 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ờ đó
mà 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
Trang 11Mô hình so sánh hệ thống cân bằng tải và hệ thống thông thường:
Hình 2.1: Mô hình so sánh hệ thống cân bằng tải và hệ thống thông thường
Cân bằng tải có các chức năng sau:
- Chặn lưu lượng mạng (như lưu lượng web) đến một trang web Bản thân thiết
bị cân bằng tải có thể là một Proxy hay một Firewall tầng ứng dụng(Application Layer), nó sẽ là đối tượng đầu tiên nhận các yêu cầu trước khi chiatải nên chức năng này được coi như là thiết yếu của một hệ thống cân bằng tải
- Tách các lưu lượng thành các yêu cầu riêng biệt và quyết định máy chủ nàonhận các yêu cầu đó, đây là chức năng quan trọng của cân bằng tải tùy vào cácthuật toán khác nhau mà sẽ có các cách thức khác nhau để phân chia tải vào cácmáy chủ
- Duy trì một cơ chế ở những máy chủ đang sẵn sàng, giữa hệ thống cân bằng tải
và các máy chủ luôn luôn phải có liên lạc với nhau để biết máy chủ có đanghoạt động hay không
- Cung cấp khả năng dự phòng bằng cách sử dụng nhiều kịch bản fail-over
Trang 12- Cung cấp khả năng nhận thức nội dung phân tán bằng cách đọc URL, chặncookie và biên dịch, đây được coi là một trong những tiêu chí chia tải của hệthống cân bằng tải.
- Chuyển mạch cache trong suốt (transparent cache switching): giúp chuyểnhướng lưu lượng một cách “trong suốt” đến các caches, góp phần tăng thời gianđáp ứng và hiệu năng của hệ thống
Ưu điểm của hệ thống cân bằng tải:
- Tính mở rộng: thêm hoặc bỏ bớt đi server một cách dễ dàng
- Tính sãn sàng cao do hệ thống dùng nhiều Server, bảo dưỡng hệ thống server
mà không cần tắt các dịch vụ
- Tăng tính bảo mật cho hệ thống mạng do người dùng tương tác gián tiếp vớicác server cung cấp 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àmviệc quá tải trong khi các server khác lại đang “nhàn rỗi”
Những tổ chức cần có giải pháp cân bằng tải:
- Các doanh nghiệp, tổ chức có quy mô lớn
- 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 …[5],[8],[9]
2.4 Các vấn đề về xây dựng bộ cân bằng tải
2.3.1 Cân bằng tải cho Application Server
Một trang web phục vụ hàng triệu lượt người truy cập mỗi ngày thì điều quantrọng là phải có một hệ thống server đủ mạnh, khi người dùng tăng lên theo thời gian,
hệ thống máy chủ cũng phải được nâng cấp, mở rộng Có hai sự lựa chọn là mở rộngtheo chiều ngang (scale out) và mở rộng theo chiều dọc (scale up)
Mở rộng theo chiều dọc nghĩa là khi số lượng người dùng tăng lên, nhà phát triển
sẽ nâng cấp server của mình bằng cách tăng cấu hình của máy server, hệ thống vẫn chỉ
có một server với cấu hình ngày một mạnh hơn (tăng số lượng chip, tăng dung lượngRam…) Sử dụng phương pháp này, người quản trị hệ thống sẽ không phải quan tâmđến vấn đề cân bằng tải cho các server, hệ thống hoạt động rất tốt khi số lượng ngườidùng vừa phải Tuy nhiên, phương pháp này cũng có một số vấn đề hạn chế về giá
Trang 13thành, sử dụng một server sẽ tốn kém hơn rất nhiều so với nhiều servers, một vấn đềnữa cũng rất quan trọng đó là vấn đề downtime impact, vì chỉ có một server nên nó sẽtrở thành SPOF (single point of failure), nếu như server này bị chết, thì ngay lập tứctoàn bộ hệ thống sẽ ngừng hoạt động Phương pháp này còn dẫn đến giới hạn cho hệthống, bởi đến một mức nào đó hệ thống tổng thể còn phụ thuộc vào nhiều yếu tố nhưbandwith hay khả năng vào ra của file trên đĩa cứng.
Ví dụ sau đây sẽ cho thấy rõ điều đó, giả sử với một site video, băng thông đểxem được một clip ở dạng chất lượng trung bình sẽ vào khoảng 512kb/s đến 0.5mb/s.Vậy đường truyền 100mb sẽ cho phép tối đa 200 người dùng xem đồng thời Nếumuốn có hơn số lượng người dùng đó, có thể tăng băng thông cho đường truyền lên1gigabit nhưng sẽ rơi vào tình trạng của scale up và gặp giới hạn Ngoài ra, tốc độ đọcđĩa cứng chỉ vào khoảng 400mb/s nên dù có tăng tốc độ đường truyền thì server vẫnkhông thể đáp ứng và phục vụ được nhiều hơn nữa Như vậy sử dụng scale up khôngthể giải quyết vấn đề này
Giải pháp thứ hai là scale out: lắp nhiều server song song và chúng hoạt độngthành một cluster Theo ví dụ trên, cứ lắp thêm một server lại có khả năng đáp ứng cho
200 người dùng nữa và càng nhiều server thì khả năng mở rộng lại càng lớn, hơn nữachi phí cũng được giảm thiểu Tuy nhiên khó khăn của phương pháp này là vấn đề cânbằng tải sao cho tải được phân phối đều đặn vào trong các máy server Các server phảiđược nối với nhau như thế nào …đều là những bài toán khó Sau đây là bảng so sánh
ưu điểm và nhược điểm của từng phương pháp:
Bảng 2.1: So sánh giữa Scale down và Scale up
Một
server cực
mạnh
- Hệ thống đơn giản và dễdàng thực hiện
- Hoạt động hiệu quả khi sốlượng người dùng ở mức vừaphải
- Chi phí đầu tư server rất cao
- Không khắc phục được khi servergặp phải sự cố
- Có giới hạn đối với số lượng ngườidùng nhất định
Nhiều
server nhỏ
- Giảm thiểu chi phí đầu tư
- Phục vụ được lượng user rấtlớn đảm bảo đáp ứng yêu
- Cần thiết phải có công cụ loadbalancing: sử dụng phần cứng hoặcphần mềm
Trang 14cầu từ phía người dùng
- Khắc phục tình trạng mộtserver gặp sự cố (giải pháp
Hình 2.2: Biểu đồ thể hiện giá thành của scale down và scale up
Như vậy, sự lựa chọn một server chỉ phù hợp cho các hệ thống đòi hỏi sự ổn địnhcao, với số lượng người dùng tăng lên không quá nhanh và có tiềm lực mạnh về kinh
tế như các hệ thống chứng khoán, ngân hàng … còn đối với các mạng xã hội khác haycác trang chia sẻ video trực tuyến thì sự lựa chọn nhiều server hoạt động song song làhiệu quả nhất Khi sử dụng phương pháp scale out, yêu cầu từ phía người dùng sẽđược chuyển vào một trong các server này xử lý, từ đó xuất hiện bài toán cân bằng tải(Load Balancing-LB) cho các server để chúng phục vụ được một lượng yêu cầu phùhợp, tránh không để bất cứ server nào bị quá tải (overload), đồng thời tận dụng đượchết tài nguyên hệ thống để phục vụ được lượng truy cập lớn nhất
Mô hình tổng quát được miêu tả dưới đây:
Trang 15Hình 2.3: Mô hình cân bằng tải server
2.3.2 Mở rộng Database server
Bên cạnh các webserver, các database server cũng đóng vai trò vô cùng quantrọng trong hệ thống web Sự phát triển của website sẽ dẫn đến yêu cầu phải mở rộngdatabase server, chẳng hạn như lắp thêm server để phục vụ nhu cầu tại một địa điểm
đã có server từ trước hoặc lắp mới server ở các vùng khác nhau trên thế giới Mở rộngDatabase Server cũng có hai phương pháp là theo chiều ngang và theo chiều dọc
Mở rộng theo chiều dọc: hệ thống Database Server sẽ được phân chia theo kiếntrúc SAN (Storage Area Network) Nó là một kiểu kiến trúc kết nối những thiết bị lưutrữ máy tính từ xa để phục vụ theo cách mà những thiết bị đó được xem như là cục bộ(local) đối với hệ điều hành Như vậy, hệ thống lưu trữ chỉ được xem như một DB duynhất và hoạt động rất hiệu quả Tuy nhiên vì giá thành của nó rất đắt nên nó khôngđược sử dụng rộng rãi mà chỉ được dùng trong các hệ thống lớn và quan trọng
Hình 2.4: Mở rộng database server sử dụng kiến trúc SAN
Trang 16Mở rộng DB theo chiều ngang (scaling out), nghĩa là tăng số lượng các node DatabaseServer, như minh họa sau đây:
Hình 2.5: Mở rộng database theo chiều ngang
Có 2 lựa chọn để cài đặt theo phương pháp này:
- Shared nothing Cluster:
Mỗi database server sẽ chứa một bản sao của database (tất cả các DBserver giốngnhau) Không có dữ liệu được chia sẻ giữa các node, các file DB thực sự sẽ được chứatrong SAN Tuy nhiên, vấn đề ở đây là phải lựa chọn cơ chế sao bản (replication) phùhợp vì các DB sẽ chứa cùng một bản sao hoàn chỉnh của cơ sở dữ liệu Có rất nhiềulựa chọn để tạo sao bản đó là lựa chọn giữa phương pháp Master – Slave và Multi –Master, đồng bộ hay không đồng bộ và tạo sao bản ở mức nào của dữ liệu
- Real Application Cluster (Shared storage cluster):
Trong phương pháp này, các nodes ở DB cùng chia sẻ một phần chung ở SAN, nhưngfile system phải được định dạng là clustered file system Phương pháp này chỉ đượccung cấp bởi công ty Oracle do giá thành của nó rất cao Hiện nay chỉ có các doanhnghiệp lớn hoặc các tập đoàn mới triển khai được phương pháp này
- Mô hình khuyên dùng: Dựa theo ưu-nhược điểm, mô hình Database mở rộngnên dùng là:
- Master – Slave replication
Trang 17- Sao chép không đồng bộ
- Ghi dữ liệu tại DAO layer
Hình 2.6: Mô hình mở rộng database khuyên dùng
2.3.3 Tổ chức lưu trữ dữ liệu
Một website có hệ thống web-server và database server mạnh vẫn sẽ bị giới hạntốc độ truy cập nếu như khả năng lưu trữ và phân bổ dữ liệu của website đó không tốt.Nếu như dữ liệu cần tải về lưu trữ quá xa người dùng, quá trình này sẽ chiếm nhiềuthời gian, có thể khiến cho người dùng không hài lòng
Một kỹ thuật thường dùng là CDN (Content delivery network) hướng request đếnserver gần người dùng nhất Điều này có thể giảm các yêu cầu chạy qua trục backbonechính, đồng thời giảm băng thông đi quốc tế Một cách đơn giản nhất đó là bộ cânbằng tải sẽ xác định IP của người dùng rồi xác định khu vực và hướng yêu cầu đếnserver nằm tại data center gần nó nhất
Ví dụ trước khi www.youtube.com đặt ở server Việt Nam, người dùng Việt Namxem các video ở youtube.com rất chậm, thường phải chờ tải từng phần, sự ngắt quãngnày khiến người dùng khó chịu Nhưng sau khi server được đặt ở Việt Nam không còn
bị giật khi xem video, chính vì vậy mà youtube đã vượt hẳn lên so với trang web chỉchia sẻ video trực tuyến của Việt Nam
Một ví dụ khác: khi người dùng truy cập vào website www.discovery.com (1),origin server đầu tiên sẽ trả về trang chỉ mục index.html (2) Sau đó nó sẽ chuyểnhướng yêu cầu đến nhà cung cấp CDN (nhà cung cấp ở đây là Akamai) (3), nhà cung
Trang 18cấp CDN sẽ dùng thuật toán lựa chọn của họ để tìm kiếm server sao bản gần với ngườidùng nhất (4) và sau đó trả về dữ liệu cho người dùng từ server này (5).
Hình 2.7: Ví dụ về mô hình CDN
Khi một website đã trở nên toàn cầu và có trung tâm dữ liệu (data center) tạinhiều nơi khác nhau trên thế giới sẽ xảy ra vấn đề đồng bộ dữ liệu giữa các data centernày Cần phải đảm bảo được dữ liệu mà người dùng muốn truy cập đến luôn có trênserver, xử lý điều này bằng cách: nếu dữ liệu đó là dữ liệu quan trọng, đơn giản là mộtvideo có số lượt xem rất cao sẽ được sao lưu đến tất cả các data center trong hệ thống.Còn nếu như đó là một video không được quan tâm nhiều thì có thể chỉ được lưu trênserver uploads lên và dữ liệu sẽ được tải về từ đây cho người dùng
Một vấn đề nữa là khi số lượng truy cập vào website là rất nhiều và đa dạng, dữliệu phải liên tục vào ra tại ổ đĩa lưu trữ của website Khác với web application khibăng thông quá cao, có thể dùng một proxy server đứng trước phân tải, trong trườnghợp file sharing hay video sharing, như vậy sẽ khiến bộ cân bằng tải sẽ trở thành thắt
cổ chai Vì ra vào dữ liệu tại bộ cân bằng tải chỉ có giới hạn nhất định, nếu vượt quágiới hạn đó nó sẽ rơi vào tình trạng quá tải và bị “treo” Cần phải có kỹ thuật
Trang 19partitioning giúp cho việc vào ra tại các thiết bị lưu trữ được giảm một cách tối ưuhoặc là sử dụng bộ đệm cache một cách hiệu quả.
2.3.4 Sử dụng bộ nhớ Cache
Trong các hệ thống web, bộ nhớ cache lưu trữ các Web Content (sự kết hợp giữatext, các hành động hoặc audio) nhằm tiết kiệm băng thông cũng như tăng tốc độ truyxuất web
Ví dụ khi người dùng A lần đầu tiên truy cập vào http://foundrynet.com/ bộ nhớweb cache sẽ nhận được yêu cầu này Vì là lần đầu truy nhập vào hệ thống nên sẽ chưa
có trang này trong cache, bộ nhớ cache sẽ tìm kiếm trang này từ server gốc và lưu giữtrang này trong bộ nhớ local, chẳng hạn như Ram hoặc đĩa, sau đó nó sẽ trả về trangnày cho người dùng Sau đó người dùng B truy cập vào địa chỉ này, vì đã được lưu giữlại trong bộ nhớ cache nên ngay lập tức cache trả về trang web cho người dùng B Vậy
B sẽ nhận được trả lời nhanh hơn A, đồng thời cũng sẽ tiết kiệm được băng thông khikhông phải truy cập vào server gốc để lấy trang web này
Hình 2.8: Simple Cache
Các loại Caches và cách cài đặt:
Bộ nhớ cache có thể được dùng để tăng tốc độ đáp ứng yêu cầu của người dùnghoặc dùng để tăng hiệu năng của web servers Dựa trên khả năng đó, cache được phânthành hai loại: tăng tốc người dùng (client acceleration) và tăng tốc server (serveracceleration)
Trang 20Triển vọng của client acceleration cache là khả năng đáp ứng người dùng nhanhhơn và tiết kiệm băng thông mạng Triển vọng của server acceleration là khả năng luânchuyển web content nhanh hơn và giảm số lượng servers cần thiết, vì nguyên lý củaserver acceleration là dựa trên một tiền đề mà qua đó sử dụng cache là phù hợp hơnservers trong việc phục vụ các ngữ cảnh tĩnh (static content) Web Server sẽ giảm bớtđược yêu cầu phục vụ các ngữ cảnh tĩnh đã dược chỉ định cho cache và tập trung vàophục vụ các ngữ cảnh động (dynamic web content).
Dựa trên lý thuyết cơ bản về caching, có 4 cách khác nhau để triển khai và sửdụng cache:
- Forward Proxy dùng cho tăng tốc client
- Transparent Proxy dùng cho tăng tốc client
- Reverse Proxy dùng cho tăng tốc server
- Transparent Reverse Proxy dùng cho tăng tốc server
Cache được cài đặt như một forward proxy được dùng để tăng tốc truy nhậpinternet cho client, trong khi cache được cài đặt như reverse proxy lại dùng để tăng tốctruyền tải dữ liệu của server Transparent proxy cũng thực thi nhiệm vụ như forwardproxy nhưng nó được cài đặt để client không biết nó tồn tại Transparent reverse proxyđược cài đặt như reverse proxy và hoàn toàn trong suốt đối với servers [9]
2.5 Các kỹ thuật cân bằng tải
Cân bằng tải webserver là phần quan trọng nhất trong quy trình xây dựng website theokiến trúc mở rộng Một trang web được cân bằng tốt sẽ tránh được tình trạng tắc nghẽnserver, trả về yêu cầu của người dùng trong khoảng thời gian ngắn nhất Có nhiều kỹthuật để thực hiện cân bằng tải cho server nhưng quan trọng nhất trong cân bằng tảiserver chính là thiết kế và xây dựng bộ cân bằng tải Bộ cân bằng tải này sẽ đứng trướccluster server, nhận yêu cầu từ người dùng sau đó phân tải vào các server trong clustermột cách phù hợp
2.5.1 Kỹ thuật cân bằng tải server (Server Load Balancing - SLB)
Bộ cân bằng tải có nhiệm vụ kết nối giữa người dùng và server, do đó nó có thểhoạt động như một proxy hoặc gateway Một proxy có nhiệm vụ luân chuyển yêu cầu
và dữ liệu đáp trả giữa người dùng và server, trong khi đó một gateway chỉ có nhiệm
vụ tạo ra một kết nối hai đối tượng này và không làm gì thêm Có thể sử dụng phần
Trang 21cứng hoặc phần mềm được cài đặt thêm một front server hoặc trên chính web server.Thêm nữa, khi số lượng người dùng tăng lên, để tránh một điểm lỗi cần phải cài đặt 2
bộ cân bằng tải song song, hoạt động theo cơ chế active-active hoặc active-backup.Các phần mềm cân bằng tải thường được cài đặt như một proxy Để xây dựng một bộcân bằng tải phần mềm, các kỹ thuật cần phải chú trọng đó là kiểm tra trạng tháiserver, lựa chọn server tốt nhất để gửi yêu cầu và kỹ thuật duy trì kết nối của ngườidùng với một server trong suốt phiên làm việc của họ
a) Kiểm tra trạng thái server
Để chọn được server phù hợp để gửi request, bộ cân bằng tải cần phải biết đượcserver nào đang có sẵn Vì vậy, nó cần phải dùng biện pháp nào đó để kiểm tra trạngthái của server, chẳng hạn như gửi lệnh ping, các yêu cầu, thử kết nối hay bất cứphương pháp nào mà người quản trị dùng Kỹ thuật kiểm tra này thường được gọi là
“health checks”
Một server bị down có thể trả lời lệnh ping nhưng không thể trả lời các kết nốiTCP, một server bị treo có khả năng trả lời kết nối TCP nhưng không thể trả lời cácyêu cầu HTTP Khi một ứng dụng web nhiều lớp được kích hoạt, một số yêu cầuHTTP có thể trả lời ngay lập tức trong khi số khác sẽ thất bại
Chính vì thế, việc lựa chọn một phương pháp test phù hợp được chấp nhận bởiứng dụng web và bộ cân bằng tải là một công việc rất khó khăn Một số test đôi khicần phải truy xuất dữ liệu database nhằm đảm bảo rằng toàn bộ quá trình của nó làđúng Hạn chế lớn nhất là những phương pháp kiểm tra này sẽ chiếm tài nguyên của
hệ thống như là CPU, threads,
Do đó, cân bằng thời gian kiểm tra chính là vấn đề khó nhất trong kỹ thuật lựachọn server Khoảng thời gian kiểm tra giữa 2 lần test liên tiếp phải đủ dài để khôngtốn quá nhiều tài nguyên của hệ thống và cũng cần đủ ngắn để nhanh chóng phát hiện
ra những server “chết” Vì “health checks” là một trong những khía cạnh phức tạp nhấtcủa kỹ thuật cân bằng tải, nên thông thường sau một vài kiểm tra các nhà phát triểnứng dụng sẽ thực thi một yêu cầu đặc biệt dành riêng cho bộ cân bằng tải, giúp cho nóthực hiện một số kiểm tra nội bộ
Trang 22Phần mềm cân bằng tải có khả năng cung cấp scripting, do đó nó đạt được độ linhhoạt rất cao Hơn nữa, nếu như một lần kiểm tra nào đó đòi hỏi phải chỉnh sửa code,
nó có thể thực hiện trong một khoảng thời gian ngắn
b) Lựa chọn server tốt nhất
Việc lựa chọn server tốt nhất chính là phần chính của thuật toán cân bằng tảiđược đề cập trong phần 2 Phương pháp dễ nhất và thường được sử dụng nhất trongcác hệ thống nhỏ là Round Robin, các server được lựa chọn quay vòng, tuy nhiênphương pháp này có nhược điểm là 2 requests liên tục từ một người dùng sẽ vào 2server khác nhau, thông tin giữa hai yêu cầu liên tiếp sẽ bị mất, như vậy sẽ không thểtối ưu hóa được sử dụng tài nguyên Đặc biệt là khi cần phải cài đặt kết nối cho cácphiên chạy, ví dụ như SSL key negociation- sẽ tốn rất nhiều thời gian
Một cách khắc phục nhược điểm này là sử dụng một hàm băm theo địa chỉ IP,như vậy requests từ cùng một địa chỉ IP sẽ chỉ vào một server duy nhất Tuy vậyphương pháp này đòi hỏi người dùng phải có IP tĩnh
c) Kỹ thuật Session Persistence
Vấn đề cần giải quyết chính là làm sao để giữ cho các yêu cầu của một ngườidùng được gửi vào một máy duy nhất trong suốt phiên làm việc của người đó Tất cảcác yêu cầu của người dùng này cần phải được chuyển vào cùng một server Nếuserver bị chết hoặc ngừng để bảo trì, cần phải có cơ chế để chuyển session của ngườidùng này sang máy server khác Đó chính là kỹ thuật Session Persistence
Có một số giải pháp được đưa ra để tiếp cận kỹ thuật này, chẳng hạn như sử dụngmột respone HTTP 302 hay tạo ra liên kết giữa người dùng – server Tuy vậy 2phương pháp này đều có những hạn chế, sử dụng HTTP 302 sẽ khiến người dùng luônluôn tìm cách kết nối với một server duy nhất, kể cả khi server này đã “chết” Dùngcách tạo liên kết đòi hỏi user phải có IP tĩnh trong suốt phiên làm việc
d) Cookie
Cookie - là một đối tượng được điều khiển bởi Web Server, trong kết quả trả vềcho người dùng web server sẽ chèn thêm một số thông tin Những yêu cầu tiếp theo
Trang 23của người dùng gửi đến server sẽ chứa thêm thông tin của cookie này, server sẽ đọccác cookie và biết phải làm gì với các yêu cầu này.
Một cookie được định nghĩa bằng cặp tên = giá trị (name=value) Hình dưới đâymiêu tả hoạt động của cookie với cặp user =1, cho biết tên cookie là user và giá trị của
nó là 1 Bên phía người dùng, cookie được điều khiển bởi trình duyệt và “trong suốt”đối với người dùng
Hình 2.9: Cách làm việc của cookie user =1
Cách thức hoạt động của cookie là khi người dùng lần đầu tiên gửi yêu cầu đếnserver, do không có cookie trong yêu cầu nên nó sẽ được phân tải đến server RS1 (1).Server RS1 sẽ tạo và đặt cookie server=1 vào trong dữ liệu trả về cho người dùng (2).Trình duyệt của người dùng sẽ nhận trả về, đọc thấy cookies và lưu trữ nó vào trongđĩa cứng (3) Sau đó người dùng có thể đóng trình duyệt hoặc ngắt kết nối (giả sử rằngtrình duyệt của người dùng không tự động xóa cookie sau khi đóng) Một thời gian saungười dùng kết nối lại và gửi yêu cầu đến bộ cân bằng tải Sau khi kết nối được thiếtlập, trình duyệt người dùng sẽ gửi cookie server=1 như là một phần yêu cầu HTTP (4)
Bộ cân bằng tải sẽ đọc được cookie này và sẽ chuyển yêu cầu của người dùng vàoserver RS1 Như vậy, người dùng sẽ luôn được kết nối vào server 1 cho đến khi nàocookie còn tồn tại, cho dù người dùng có thể vào website từ các địa chỉ IP khác nhau
Trang 24Hình 2.10: Cookie
Ưu điểm của phương pháp này là bộ cân bằng tải chỉ cần đọc cookie được tạo ra
từ phía web server và từ yêu cầu của người dùng Tuy nhiên, trong phương pháp nàyứng dụng ở server phải tạo ra một cookie, điều này sẽ khiến nhà phát triển ứng dụngphải thay đổi mã nguồn chương trình Khi một server mới được lắp đặt, người quản trị
hệ thống phải sửa đổi hoặc đặt thêm thông số server vào file cấu hình của bộ cân bằngtải [1], [9]
2.5.2 Cân bằng tải cho server toàn cầu (GSLB)
Có 2 nhân tố chính thể hiện sự cần thiết của GSLB, đó là khả năng có sẵn cao vàthời gian đáp ứng
Để đảm bảo tính có sẵn của cluster server, cần phải thực hiện kiểm tra “health checks”đối với các server Để bộ cân bằng tải không bị quá tải, có thể cài đặt nhiều bộ cânbằng tải hoạt động theo chế độ active-active hoặc active-backup Nếu như toàn bộtrung tâm chứa dữ liệu các server và các bộ cân bằng tải không thể hoạt động vì mộtvài sự cố xảy ra thì người dùng sẽ không thể truy cập vào website Để tránh trườnghợp này xảy ra, có thể cài đặt website ở nhiều trung tâm dữ liệu khác nhau và sử dụngGSLB để đồng bộ giữa các trung tâm, đảm bảo sự hoạt động của hệ thống
Trong mạng Internet, có những yếu tố bất lợi mà chúng ta không thể giải quyếtmột cách triệt để, một trong những yếu tố đó là “thời gian trễ của đường truyềninternet” (internet delay), chính là yếu tố quyết định đến thời gian đáp ứng của websiteđối với người dùng Thời gian đáp ứng người dùng phụ thuộc vào thời gian trễ củangười dùng (client-side delay), thời gian trễ của server (server-side delay) và thời giantrễ của đường truyền internet Do không thể kiểm soát được thời gian trễ của người
Trang 25dùng nên sử dụng phương pháp cài đặt hệ thống server để hạn chế được thời gian trễcủa đường truyền qua mạng.
a) Domain Name System
GSLB có thể đạt được bằng nhiều cách khác nhau nhưng cách được dùng nhiềunhất là sử dụng Domain Name System (DNS) Khi người dùng truy cập vào websitenào đó thì tương ứng với nó là tên miền Ví dụ như website www.utehy.edu.vn thì
“utehy.edu.vn” chính là tên miền (domain) Một tên miền có thể chứa nhiều tên miềncon chẳng hạn như “fit.utehy.edu.vn” được gọi là các vùng zones của tên miền chính.Một name server lưu trữ thông tin về các tên miền và có trách nhiệm trả về tất cả cácchất vấn về không gian tên của các tên miền này Một tên miền có thể được lưu trữ ởnhiều DNS khác nhau nhưng sẽ có một DNS có thẩm quyền cao nhất (authoritativeDNS), DNS này sẽ có trách nhiệm cập nhật tất cả các thay đổi cho các DNS có thẩmquyền thấp hơn
Server tên miền cục bộ (local DNS) là name server được lưu trữ ở trong mạngLan của người dùng Ví dụ khi client truy cập một tên miền như www.facebook.com,local DNS sẽ chuyển tên miền này thành 1 địa chỉ IP theo một trình tự sau: đầu tiên nó
sẽ đi đến root name server (2), dữ liệu trả về là một danh sách các tên miền có đuôi
là com (3) Sau đó Local DNS sẽ chuyển đến yêu cầu đến “.com name server” (4) vàname server này sẽ trả về IP của authoritative DNS của website facebook.com (5).Local DNS gửi yêu cầu đến địa chỉ IP này (6) và nhận dữ liệu trả về cho trình duyệt vàđược dùng để truy xuất dữ liệu (8,9)
Trang 26Hình 2.11: Mô hình Global Server Load Balancing
Trong bước (7), đôi khi dữ liệu trả về sẽ là một danh sách các địa chỉ IP củawebsite cần truy cập hoặc có khi DNS sẽ dùng round-robin để trả về danh sách nàytheo thứ tự quay vòng, như vậy mỗi lần sẽ trả về một địa chỉ IP khác nhau Nếu localDNS nhận được một list các IP trả về nó sẽ chuyển về trình duyệt các IP này theo thuậttoán Round-robin
Khi Local DNS nhận dữ liệu trả về, nó sẽ lưu trữ thông tin của các dữ liệu nàytrong một khoảng thời gian (gọi là Time to Live-TTL) Trong khoảng thời gian này,bất cứ yêu cầu nào với tên miền là con của tên miền gốc sẽ được trả về địa chỉ IPgiống như yêu cầu gốc Nếu hết thời gian TTL mà vẫn không có yêu cầu, dữ liệu này
sẽ tự động bị xóa đi Giá trị TTL giảm sẽ khiến local DNS có nguy cơ thừa quá nhiều
dữ liệu không dùng đến Vì vậy, chọn giá trị TTL phải tùy thuộc vào từng website vàthời điểm cụ thể
Để thực hiện GSLB dựa trên DNS, cần phải đặt bộ cân bằng tải của website vàotrong 1node nào đó của hệ thống DNS, từ đó chọn địa chỉ IP của web-server phù hợpnhất để phục vụ cho từng nhóm người dùng cụ thể Như vậy, cần phải giải quyết 2 vấn
đề là đặt bộ cân bằng tải vào trong hệ thống DNS và phải chọn được site phù hợp nhất.b) Cài đặt bộ cân bằng tải vào hệ thống mạng DNS
Trang 27Có hai cách để cài đặt bộ cân bằng tải, đó là sử dụng bộ cân bằng tải để thay thếauthoritative DNS và cài đặt bộ cân bằng tải như một forward DNS proxy.
Authoritative DNS là DNS có quyền trả về địa chỉ IP hoặc một danh sách các địachỉ IP của một cluster Vậy nếu như thay vị trí của nó bằng bộ cân bằng tải, toàn bộcác yêu cầu dữ liệu DNS sẽ được chuyển vào bộ cân bằng tải có nhiều thuật toán phântải và thuật toán lựa chọn tối ưu nên sẽ có khả năng trả về dữ liệu một cách tốt nhất.Dưới đây là một ví dụ minh họa cho phương pháp thay thế authoritative DNS bằng bộcân bằng tải Local DNS lúc này sẽ làm việc với bộ cân bằng tải có chức năng cânbằng tải cho server toàn cầu và nhận địa chỉ IP của webserver
Hình 2.12: Bộ cân bằng tải hoạt động như một authoritative DNS
Trong phương pháp này, bộ cân bằng tải sẽ thay thế cho authoritative DNS, do đóviệc chọn IP trả về cho local DNS sẽ phụ thuộc vào chức năng DNS được cài đặt trong
bộ cân bằng tải Nếu một sản phẩm không thể điều khiển được một request DNS nào
đó, nó có thể loại bỏ chúng trả về một lỗi hoặc chuyển chúng đến DNS server thực sự.Cài đặt bộ cân bằng tải như một forward DNS proxy
Phương pháp được mô tả ở hình dưới, bộ cân bằng tải trở thành một proxy, nó đứng ở vị trí của một authoritative DNS, nhận yêu cầu từ phía local DNS
Trang 28forward-sau đó sẽ chuyển yêu cầu đến authoritative DNS thực sự được cài đặt ở phía forward-sau nó.Khi nhận dữ liệu về từ authoritative DNS thực sự, bộ cân bằng tải sẽ chỉnh sửa chophù hợp và trả về cho local DNS, sự trả về này phải được thực hiện một cách “trongsuốt” và chỉ những dữ liệu có liên quan đến GSLB mới cần phải thay đổi Ở đây nếunhư có nhiều DNS server thực sự, bộ cân bằng tải sẽ làm nhiệm vụ cân bằng tải chonhóm DNS server này.
Hình 2.13: Bộ cân bằng tải hoạt động như một forward DNS proxy
Ưu điểm của phương pháp này là có thể cài đặt nhiều DNS server và cân bằng tảicho chúng, do đó tăng khả năng mở rộng và khả năng có sẵn Hơn nữa, IP của cácDNS server thực sự có thể được giữ kín để ngăn chặn việc truy cập trái phép và tăngtính bảo mật Bộ cân bằng tải không cần phải cài đặt đầy đủ các chức năng GSLB màchỉ cần các chức năng cần thiết để giúp DNS trả về địa chỉ IP cho local DNS một cáchthông minh hơn Hơn nữa, có thể kết hợp cả GSLB và SLB vào trong một mô hình Bộcân bằng tải ở đây có 2 địa chỉ IP ảo: VIPD dùng để đóng vai trò một authoritativeDNS, VIP1 dùng để cân bằng tải cho cụm server
Trang 29Hình 2.14: Sự kết hợp GSLB và SLB trong bộ cân bằng tải
c) Lựa chọn site tốt nhất
Việc lựa chọn trang tốt nhất hay đúng hơn là chọn cluster server nào tốt nhất vàtrả về địa chỉ IP của cluster đó cho người dung rất quan trọng Cluster server tốt nhất ởđây bao hàm cả trạng thái server và vị trí của nó đối với người dùng Các công việccần phải thực hiện để kiểm tra trạng thái của server bao gồm kiểm tra “server health”,thời gian đáp ứng và tải hiện tại của server
Kiểm tra trạng thái server là một nhân tố quan trọng của GSLB, nhằm nhận biếtcác site đang hoạt động hay không, từ đó chuyển hướng người dùng đến site phù hợp.Việc này là khá dễ đối với bộ cân bằng tải vì nó có thể sử dụng cùng một phương phápnhư phương pháp “health checks” đối với các server trong cùng một cluster Bộ cânbằng tải toàn cầu sẽ gửi một yêu cầu HTTP đối với mỗi URL từ phía người dùng vàkiểm tra một mã trả về, sau đó kiểm tra ngữ cảnh trên các từ khóa hoặc tính toán một
mã kiểm tra trên trang trả về để khớp với giá trị mà người dùng đã chỉ định
Trang 30Nhân tố thứ hai quyết định việc chọn site trong GSLB là thời gian đáp ứng củasite đó (thời gian đáp ứng của webserver) Kiểm tra thời gian đáp ứng bằng cách đothời gian trễ giữa quá trình gửi yêu cầu và nhận hồi đáp trong một thao tác Như vậy
có thể kết hợp cả health checks và kiểm tra thời gian đáp ứng bằng cách đo thời giantrễ của quá trình health check Thời gian đáp ứng của site không phải là thời gian đápứng người dùng, không phải thời gian trễ của người dùng và của internet, nó chỉ đơngiản là thời gian đáp ứng của cluster
Khi bộ cân bằng tải gửi một tín hiệu “health checks”, tín hiệu này sẽ chuyển đượcđến một server nào đó trong cluster Khi gửi thêm một tín hiệu khác, có thể sẽ đượcchuyển đến một server khác Thời gian đáp ứng đo được ở các thao tác này là khácnhau, vì vậy để đánh giá một cách chính xác thời gian đáp ứng của cluster, cần phảilấy thời gian trung bình các lần đo này
Nhân tố thứ ba chính là trạng thái tải của site, cần phải biết tải hiện tại của server
và phải quan tâm đến khả năng của server để chọn được site có tính sẵn có cao nhất.Một trong các thông số để đo trạng thái tải của server chính là số kết nối hiện tại đếnserver và thời gian đáp ứng của server chính là nhân tố cho thấy tải hiện tại của server,một server nhẹ tải sẽ đáp ứng nhanh hơn một server nặng tải hơn
Song song với việc chọn site theo thông số của server đó là chọn site theo vị tríđịa lý của site này GSLB sẽ nhận biết địa chỉ IP của người dùng, sau đó xác định vùng
mà người đó truy cập vào website Việc xác định này dựa trên block của địa chỉ IP,được cấp phát bởi các tổ chức quản lý địa chỉ IP Sau khi xác định vùng truy cập,GSLB sẽ hướng người dùng đến server gần nhất Nó sẽ giúp giảm thiểu tối đa thờigian trễ của Internet, vì hướng người dùng đến site gần họ nhất nên hầu hết sẽ khôngphải tốn băng thông đi quốc tế
Như vậy, DNS được tạo ra không phải để dành riêng cho GSLB GSLB sử dụngDNS để phục vụ cho mục đích của mình và kết quả mang lại rất hiệu quả Tuy vậy vẫn
có những hạn chế mà GSLB dựa trên DNS không thể giải quyết được, chẳng hạn nhưngười dùng quá xa local DNS của họ hoặc một số local DNS bỏ qua giá trị TTL đượcchỉ định bởi authoritative DNS.[1], [5]
Trang 312.5.3 Cân bằng tải sử dụng phần cứng và phần mềm
a) Cân bằng tải sử dụng phần cứng
Bộ cân bằng tải bằng phần cứng sẽ thể hiện một địa chỉ IP ảo đối với mạng bênngoài, địa chỉ này bản đồ hóa đến các địa chỉ của mỗi máy trong một cluster Chính vìvậy toàn bộ các máy tính trong cluster sẽ chỉ được xem như là một máy duy nhất đốivới thế giới bên ngoài Bộ cân bằng tải sử dụng phần cứng thường hoạt động ở tầngmạng và hoạt động dựa trên sự định tuyến, sử dụng một trong các phương pháp: Địnhtuyến trực tiếp (direct routing), tunneling, IP address translation (NAT)
Hình 2.15: Cân bằng tải sử dụng phần cứng
Khi sử dụng thiết bị phần cứng làm Load Balancing cần quan tâm đến các yêu cầu sau:
- Cân bằng tải cho hầu hết các ứng dụng trên nền mạng IP như Web, FTP, mail, hay video theo yêu cầu…
E Cân bằng tải theo nhiều phương pháp: sử dụng cả hai mô hình hoạt động tĩnh
và động cho việc cân bằng tải các máy chủ Mô hình tĩnh dựa trên việc quayvòng cung cấp dịch vụ lần lượt cho từng máy chủ và theo công suất máy chủ.Khả năng thiết lập cấu hình cực kỳ mềm dẻo, hỗ trợ các cấu hình hoạt động đadạng bao gồm: chuyển dịch địa chỉ mạng/NAT, điịnh tuyến trực tiếp, đườnghầm IP
Trang 32- Kiểm tra trạng thái của máy chủ: thường xuyên kiểm tra trạng thái của từngmáy chủ để đảm bảo rằng không một yêu cầu cung cấp dịch vụ nào được gửiđến một máy chủ đang gặp phải sự cố.
- Tắt dịch vụ an toàn: tính năng này cho phép các dịch vụ trên máy chủ chỉ đượcđóng khi tất cả các yêu cầu đã được xử lý xong Khi có yêu cầu tắt máy để bảodưỡng hay nâng cấp một máy chủ nào đó, sẽ không gửi các yêu cầu cung cấpdịch vụ tới máy chủ đó nữa và quản trị viên sẽ được thông báo khi tất cả cácyêu cầu cung cấp dịch vụ trên máy đó đã được xử lý
- Dự phòng nóng: hai thiết bị có thể được kết nối song song với nhau, một ở chế
đọ hoạt động chính và một ở dự phòng để đảm bảo vai trò của hệ thống
- Đồng bộ cấu hình và nhật ký: cho phép khả năng cấu hình hệ thống và nhật kýlàm việc của cả hai thiết bị ở chế độ làm việc song song là như nhau tại mọithời điểm Và có khả năng ghi nhật ký chi tiết về hệ thống, quản trị, tính sẵnsàng cao và các cảnh báo
- Bảo mật cao: các mặt nạ IP cho phép các máy chủ thực tế không xuất hiện trựctiếp trên mạng Internet
Ưu điểm của phương pháp này là:
- Mối quan hệ giữa các máy chủ: Bộ cân bằng tải phần cứng đọc cookie hoặc cácURL đang được đọc trên mỗi một request bởi máy khách Dựa trên các thôngtin này, nó có thể ghi lại các thông tin header và gửi request đến nút thích hợptrong cluster- nơi session của nó được duy trì
Các bộ cân bằng tải này có thể cung cấp mối quan hệ giữa các máy server trongtruyền thông HTTP nhưng không thông qua kênh an toàn như HTTPS Trongkênh an toàn, các thông báo được mã hóa SSL và có thể tránh bộ cân bằng tảiđọc các thông tin session
- Khả năng có sẵn cao thông qua hệ thống tự động chuyển đổi dự phòng: chuyểnđổi dự phòng xảy ra khi một nút trong cluster không thể xử lý một request vàchuyển hướng nó đến một nút khác Dù vậy bất kỳ một thông tin session nàotrên nút chết sẽ bị mất khi các request được chuyển hướng đến một nút mới
Để thực thi chuyển đổi dự phòng session một cách trong suốt các nút trongcluster phải kết hợp với nhau và có vùng bộ nhớ chia sẻ hoặc cơ sở dữ liệu
Trang 33dùng chung để lưu tất cả các dữ liệu session Chính vì vậy nếu một nút trongcluster có sự cố, vấn đề xảy ra thì một session có thể tiếp tục trong một nútkhác.
- Metrics: vì tất cả các yêu cầu tới một ứng dụng web đều phải qua hệ thống cânbằng tải, hệ thống có thể quyết định số lượng session hoạt động, số lượngsession hoạt động được kết nối trong các trường hợp khác nhau, các khoảngthời gian đáp ứng, thời gian tối đa điện áp, số lượng session trong suốt khoảngtối đa điện áp, số lượng session trong suốt khoảng tối thiểu điện áp … Tất cảcác thông tin kiểm định này được sử dụng để tinh chỉnh toàn bộ hệ thống nhằmtối ưu hiệu suất
Hiện nay, có rất nhiều hãng đã đưa ra các giải pháp load balancing là các thiết bị phầncứng linh hoạt và hiệu quả như Cisco, Coyote Point, F5 Network… Một số thiết bịload balancing như:
- Coyote Point Equalize E370LX: hỗ trợ nhiều ứng dụng, nhiều giao thức Băng thông4.8 Gbps, có khả năng xử lý 75000 yêu cầu/s Thiết bị này cung cấp giải pháp chuyểnđổi dự phòng linh hoạt cho các server có tính sẵn sàng cao, quản lý được các trung tâm
dữ liệu dễ dàng Các server được LB theo thuật toán LC, RR, WRR với phương phápduy trì cookie, IP client và thích ứng thời gian trễ của server
- F5 Network: Đảm bảo độ tin cậy và tính sẵn sang cao, kiểm tra trạng thái các server.Cân bằng tải phân phối các yêu cầu dựa trên các dữ liệu ứng dụng cụ thể như tiêu đềHTTP, cookie…Sử dụng các thuật toán RR, WRR, LC, Fastest
- Kemp LoadMaster 2400: đáp ứng được 45000 yêu cầu HTTP/s và lưu trữ CacheHTTP/HTTPs Có khả năng xử lý được 75000 kết nối đồng thời Kiểm tra trạng tháicác server, thuật toán sử dụng là RR, WRR, LC với phương pháp load balancing theo
IP nguồn và duy trì Session [12]
b) Cân bằng tải sử dụng phần mềm
Một bộ cân bằng tải bằng phần cứng giải quyết được vấn đề lost session, nhờ vào
cơ chế chuyển đổi dự phòng của nó Tuy nhiên, sự lựa chọn này kéo theo chi phí đầu
tư lớn Đối với các hệ thống vừa và nhỏ thì mà sự lựa chọn tối ưu hơn là sử dụng một
Trang 34phần mềm load balancing với giá vừa phải hay sử dụng các phần mềm load balancingđược tích hợp sẵn.
Các phần mềm được cung cấp bởi F5 hay Citrix vẫn còn là thách thức lớn đối vớicác nhà phát triển web mặc dù chúng hoạt động rất hiệu quả và tương thích với nhiềumôi trường khác nhau Với phần mềm do các công ty hay các nhóm nhỏ hơn thì chấtlượng sẽ kém hơn đi, vì vậy nếu không có đủ kinh phí đầu tư để sử dụng một giải phápcủa F5 thì người ta thường sẽ chọn các phần mềm sẵn có, sau đó tinh chỉnh cho phùhợp với hệ thống của mình Có rất nhiều phần mềm như vậy trên thị trường, chẳng hạnnhư HAProxy, Squid… Giải pháp phần mềm thường sử dụng hai thuật toán chính đó
là thuật toán cân bằng tải tĩnh (Static LB- DNS Round Robin) và thuật toán cân bằngtải động (Dynamic LB)
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ặtchẽ 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 Các giảiphá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ácmá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 còn bị hạn chế, phức tạpkhi triển khai cũng như khắc phục khi xảy ra sự cố, có rào cản về 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.6 Các thuật toán cân bằng tải
2.6.1 Thuật toán ngẫu nhiên (random)
Trong thuật toán random, tải sẽ được phân một cách ngẫu nhiên vào trong cácweb-server Webserver được lựa chọn dựa trên một hàm chọn số ngẫu nhiên, sau đóyêu cầu hiện tại từ phía người dùng sẽ được chuyển vào server này
Thuật toán được mô tả như sau:
arrayServer [] == list_of_server ();
int n = number_of_active_server;
int i = get_random_number (n);
Trang 35proxy ->server = arrayServer [i];
1) Khi nhận được yêu cầu từ phía người dùng hệ thống sẽ kiểm tra trạng thái cácserver để xem chúng có đang hoạt động hay đang gặp phải sự cố
2) Lập danh sách các server đang hoạt động để đáp ứng các yêu cầu từ phía client.3) Sử dụng hàm số chọn ngẫu nhiên random trong danh sách các server hoạt động.4) Gửi request tới server được chọn, server này sẽ trả về kết quả cho người dùng.Thuật toán này hầu như không dùng đến trong các bộ cân bằng tải mặc dù nóthường được cài đặt sẵn và thường thấy trong các gói phần mềm lớn mà trong đó cânbằng tải chỉ được đưa ra như một chức năng
2.6.2 Thuật toán Round Robin (RR)
RR là thuật toán được dùng thường xuyên nhất trong các hệ thống vừa và nhỏ, có
ít đòi hỏi về khả năng mở rộng Một kết nối mới sẽ được gửi đến server kế tiếp trongcụm server và cứ quay vòng như vậy RR làm việc rất tốt trong mọi cấu hình, nhưng sẽtốt hơn nếu như các trang thiết bị đang được cân bằng tải khác nhau về tốc độ xử lý,tốc độ kết nối hoặc bộ nhớ
Thuật toán thực hiện theo các bước sau:
1) Đầu tiên, khi nhận được request từ phía người dùng hệ thống sẽ kiểm tra trạngthái các server để xem chúng có đang hoạt động hay đang gặp phải sự cố.2) Lập danh sách các server đang hoạt động để đáp ứng yêu cầu và đánh số cácserver theo thứ tự
3) Các yêu cầu lần lượt sẽ được phân vào các server theo thứ tự:
- Yêu cầu thứ nhất sẽ được gửi đến server thứ nhất
- Yêu cầu thứ hai sẽ được gửi đến server thứ hai
- …
- Yêu cầu thứ n sẽ được gửi đến server thứ n
4) Khi nhận được các request gửi đến thì server sẽ gửi lại kết quả trả về chongười dùng
5) Nếu như số server cuối cùng thứ n đã thực hiện xong việc đáp ứng yêu cầu thìthứ tự lại tiếp tục được quay vòng lại Tức là yêu cầu tiếp theo thứ n+1 sẽđược gửi đến server thứ 1 và tiếp tục theo thứ tự danh sách của các server
RR hoạt động tốt khi các server có khả năng xử lý (cấu hình) tương tự nhau, tuynhiên sẽ có hiện tượng mất cân bằng khi các server có cấu hình khác nhau hoặc sau
Trang 36một thời gian số kết nối đang hoạt động ở một server đang nhiều hơn hẳn một serverkhác nhưng lượng kết nối tiếp theo mà các server này nhận được vẫn bằng nhau Do
đó, một server sẽ phải xử lý nhiều hơn hẳn các server khác RR có tính đơn giản nên
nó hoạt động rất hiệu quả (không phải mất thêm thời gian tính toán các thông số khácnên việc phân tải diễn ra rất nhanh) Nếu như các server hoạt động bình thường vàkhông xảy ra sự cố thì sử dụng RR rất tốt
Điểm yếu của RR là hai yêu cầu liên tục từ phía một người dùng có thể sẽ đượcgửi vào hai server khác nhau Điều này không tốt vì khi người dùng đang được kết nốivào một server, thông tin mà họ cần đang ở server đó, nếu kết nối tiếp theo vẫn đượcserver đó xử lý thì sẽ góp phần tăng tốc độ đáp ứng cho người dùng Do đó, thuật toán
RR thường được cài đặt cùng với các phương pháp duy trì session như sử dụng cookie.Một kỹ thuật cân bằng tải điển hình trong thuật toán này là RRDNS (RoundRobin DNS) Với giải pháp này, nếu như có một server trong nhóm bị lỗi thì RRDNSvẫn sẽ tiếp tục gửi các yêu cầu đến server đó cho đến khi phát hiện ra lỗi và tách servernà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ụ
2.6.3 Thuật toán Weighted Round Robin (Ratio)
Nguyên lý hoạt động của thuật toán Weighted Round Robin (WRR) này cũnggiống như thuật toán RR, yêu cầu từ phía người dùng sẽ được bộ cân bằng tải chuyểnđến các server theo thứ tự xoay vòng Sự khác biệt duy nhất ở đây là thuật toán WRRcòn quan tâm đến khả năng xử lý (cấu hình) của các server 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 yêu cầu từ phía
bộ cân bằng tải
Thuật toán thực hiện theo các bước sau:
1) Đầu tiên, khi nhận được yêu cầu từ phía người dùng hệ thống sẽ kiểm tratrạng thái các server để xem chúng có đang hoạt động hay không
2) Từ các server đang hoạt động, bộ cân bằng tải tiếp tục thực hiện việc kiểm tracấu hình (khả năng xử lý, đáp ứng yêu cầu) của các server đó
Trang 373) Lập danh sách các server đáp ứng yêu cầu và đánh trọng số các server theocấu hình của mỗi server.
Giả sử có 3 server A,B,C có cấu hình khác nhau, Avà B có cấu hình giốngnhau, C có cấu hình mạnh gấp đôi A Vậy chúng ta có thể đánh trọng số cho
A và B là 1, C là 2 Khi đó thứ tự server nhận yêu cầu từ phía bộ cân bằng tải
sẽ là ABCC
4) Các yêu cầu lần lượt sẽ được phân vào các server theo thứ tự đã định:
- Yêu cầu thứ nhất sẽ được gửi đến server A
- Yêu cầu thứ hai sẽ được gửi đến server B
- Yêu cầu thứ ba sẽ được gửi đến server C
- Yêu cầu thứ tư sẽ được gửi đến server C
- Yêu cầu thứ năm sẽ được gửi đến server A
và tiếp tục theo trọng số của các server
Trong thuật toán này có thể được thực thi như sau: giả sử có một hàng đợi đểchứa các server sẽ nhận request Nếu như một server trọng số n, trong hàng đợi sẽ có nchỉ mục (entry) của cùng một server này, chẳng hạn như ở ví dụ trên, mỗi server A,B
sẽ có một chỉ mục, mỗi server C,D sẽ có 2 chỉ mục Với cách lưu chỉ mục như vậytrong hàng đợi, các server trong WRR sẽ được lấy ra theo thứ tự hoàn toàn giống nhưtrong thuật toán RR
Thuật toán WRR hoạt động tốt hơn RR khi các server trong cluster có cấu hìnhkhác nhau Tuy nhiên sử dụng thuật toán này có thể dẫn tới sự mất cân bằng tải độngnếu như tải của các yêu cầu liên tục thay đổi trong một khoảng rộng (ví dụ như cácyêu cầu xem video hoặc tải các file có dung lượng lớn xen kẽ với các yêu cầu đọcthông tin,…) Trong một khoảng thời gian ngắn, hoàn toàn có khả năng phần lớn cácyêu cầu có tải cao sẽ được chuyển hướng đến cùng một server
2.6.4 Thuật toán Dynamic Round Robin – DRR (Dynamic Ratio)
Trang 38Thuật toán DRR hoạt động gần giống với WRR, điểm khác biệt là trọng số ở đâydựa trên sự kiểm tra server một cách liên tục, do đó trọng số liên tục thay đổi Đây làmột thuật toán động (khác với thuật toán đã trình bày ở trên đều là thuật toán tĩnh),việc chọn server sẽ dựa trên rất nhiều khía cạnh trong việc phân tích hiệu năng củaserver dựa trên thời gian thực, chẳng hạn như số kết nối hiện tại đang có trên cácserver hoặc server trả lời nhanh nhất Thuật toán này thường không thấy trong các bộcân bằng tải đơn giản, nó được sử dụng trong các sản phẩm cân bằng tải của F5Network Không thể sử dụng WRR và xây dựng lại hàng đợi dựa trên trọng số thayđổi của các server, có thể dùng một con trỏ cấu trúc để lưu lại các server, mỗi lần tạomột kết nối mới cho server nào đó sẽ phải tính toán lại vị trí của nó trong struct.
Thuật toán thực hiện theo các bước sau:
1) Đầu tiên, khi nhận được yêu cầu từ phía người dùng hệ thống sẽ kiểm tratrạng thái các server để xem chúng có đang hoạt động hay không
2) Từ các server đang hoạt động, bộ cân bằng tải tiếp tục thực hiện việc kiểm tracấu hình (khả năng xử lý, đáp ứng yêu cầu) của các server đó, đồng thời thựchiện phân tích hiệu năng của server dựa trên thời gian thực như số kết nốihiện tại hay thời gian đáp ứng nhanh nhất
3) Lập danh sách các server đáp ứng yêu cầu, đánh trọng số các server theo cấuhình và hiệu năng của mỗi server
Giả sử có 3 server A,B,C trong đó: B có cấu hình mạnh gấp đôi A, nhưng Alại có thời gian đáp ứng nhanh nhất Vậy trọng số cho các server như sau: C là
1, A và B là 2 Khi đó thứ tự server nhận yêu cầu từ phía bộ cân bằng tải sẽ làABABC
4) Các yêu cầu lần lượt sẽ được phân vào các server theo thứ tự đã định:
- Yêu cầu thứ nhất sẽ được gửi đến server A
- Yêu cầu thứ hai sẽ được gửi đến server B
- Yêu cầu thứ ba sẽ được gửi đến server A
- Yêu cầu thứ tư sẽ được gửi đến server B
- Yêu cầu thứ năm sẽ được gửi đến server C
5) Các server nhận được yêu cầu sẽ gửi lại kết quả trả về cho người dùng
6) Khi server cuối cùng C đã thực hiện xong việc đáp ứng yêu cầu thì thứ tự lạitiếp tục được quay vòng lại Tức là yêu cầu tiếp theo sẽ được gửi đến server A
và tiếp tục theo trọng số của các server
2.6.5 Thuật toán Fastest