« Home « Kết quả tìm kiếm

Thiết kế bộ phân tải cho các dịch vụ mạng lớn đảm bảo khả năng nhanh chóng mở rộng quy mô hệ thống


Tóm tắt Xem thử

- 8 CHƢƠNG I: KIẾN TRÚC WEB VỚI KHẢ NĂNG NHANH CHÓNG MỞ RỘNG QUY MÔ HỆ THỐNG.
- Khái niệm chung về kiến trúc web với khả năng mở rộng.
- Khả năng mở rộng (Scalability.
- Khả năng sẵn có (High Availability.
- Thời gian chết của hệ thống (Downtime impact.
- 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.
- Cân bằng tải cho Application servers.
- Cân bằng tải cho Cơ sở dữ liệu (database) trên servers.
- 20 CHƢƠNG II: PHƢƠNG PHÁP XÂY DỰNG BỘ CÂN BẰNG TẢI CHO WEB-SERVER.
- Lý thuyết xây dựng bộ cân bằng tải cho web-servers.
- Kỹ thuật cân bằng tải server (Server Load Balancing – SLB.
- Cân bằng tải cho server toàn cầu (GSLB.
- Cài đặt bộ cân bằng tải vào hệ thống mạng DNS.
- Các phương pháp cân bằng tải cho Cache.
- Cân bằng tải sử dụng phần cứng và cân bằng tải phần mềm.
- Cân bằng tải sử dụng phần cứng.
- Cân bằng tải sử dụng phần mềm.
- Các thuật toán cân bằng tải.
- 56 CHƢƠNG III: CÀI ĐẶT BỘ CÂN BẰNG TẢI HAPROXY.
- Bộ cân bằng tải sử dụng mã nguồn mở Haproxy.
- Giới thiệu về bộ cân bằng tải mã nguồn mở Haproxy.
- Cài đặt với khả năng mở rộng cao.
- Cài đặt các thuật toán cân bằng tải trên HAproxy.
- Nâng cao khả năng chịu tải của bộ cân bằng tải.
- Cấu hình và cài đặt bộ công cụ theo dõi server trong hệ thống cân bằng tải.
- Đây là server tên có thẩm quyền cao nhất Client Khách hàng, người truy cập vào website nói chung Cluster Dùng để chỉ một cụm máy chủ trong mạng LAN DNS Domain Name System Hệ thống phân giải tên trong internet, thiết lập tương ứng giữa địa chỉ IP của một website và tên miền của nó.
- GSLB Global Server Load Balancing Cân bằng tải cho các máy server được cài đặt ở khắp nơi trên thế giới HTTP Hypertext Transfer Protocal Giao thức truyền tải siêu văn bản, được sử dụng trong WWW LB Load balancing Cân bằng tải: phân phối tải giữa các server nhằm đảm bảo sự cân bằng giữa chúng LC Least connections Thuật toán phân tải cho các server dựa trên số kết nối hiện tại của chúng Local DNS Local Domain Name Server Server tên nằm trong mạng LAN của client, trình duyệt của client sử dụng local DNS để liên lạc với Domain Name System Proxy – Proxy Server Server đứng giữa người dùng và webserver, có nhiệm vụ trao đổi thông tin.
- Reverse-proxy Proxy bên phía server, tăng tốc server RR Round Robin Thuật toán phân tải cho các server theo thứ tự xoay vòng SAN Storage Area Networks Kiến trúc kết nối những thiết bị lưu trữ từ xa để xem chúng như là cục bộ với nhau Scalable - Scalability Khả năng mở rộng: khả năng một website có thể đáp ứng được số lượng người dùng ngày một tăng Scale - Scaling Mở rộng, tăng khả năng hoạt động 6 Ký hiệu Từ đầy đủ Nghĩa Tiếng Việt Server Máy phục vụ, chứa các thông tin, ứng dụng cho phép người dùng truy cập vào SLB Server Load Balancing Cân bằng tải cho các máy server Socket Sự kết hợp giữa địa chỉ IP và cổng nhằm xác định đích của một ứng dụng đang chạy trên server SPOF Single point of failure Một node trong hệ thống mà nếu nó bị “chết” thì toàn bộ hệ thống sẽ bị tê liệt TCP Transmission Control Protocol Giao thức điều khiển truyền vận, sử dụng tạo kết nối để trao đổi các gói tin Transparent-proxy Proxy bên phía client, hoạt động “trong suốt” với người dùng 7 DANH MỤC CÁC BẢNG H 1.2-1 So sánh scale out và scale up.
- 15 H 1.2-3 Mô hình cân bằng tải web server.
- 16 H 1.2-4 Mở rộng database server sử dụng kiến trúc SAN.
- 17 H.1.2-5 Mở rộng database server theo chiều ngang.
- 19 H.1.2-7 Mô hình mở rộng database nên dùng.
- 28 H.2.1-4 Bộ cân bằng tải chèn một cookie.
- 29 H.2.1-5 Bộ cân bằng tải ghi đè một cookie.
- 31 H.2.1-7 Bộ cân bằng tải hoạt động như một authoritative DNS.
- 33 H.2.1-8 Bộ cân bằng tải hoạt động như một forward DNS proxy.
- 34 H.2.1-9 Sự kết hợp GSLB và SLB trong bộ cân bằng tải.
- 40 H.2.1-12 Cân bằng tải cho transparent-proxy cache.
- 42 H.2.1-14 Bộ cân bằng tải cho Reverse proxy caches.
- 48 H.2.1-18 Cân bằng tải sử dụng phần cứng.
- 50 H.3.1-1 Mô hình cân bằng tải đơn giản với một bộ cân bằng tải.
- 61 H.3.1-3 Mô hình phức tạp với 2 bộ cân bằng tải chia sẻ 1 địa chỉ IP ảo.
- 63 H.3.1-4 Luồng dữ liệu trong mô hình 2 bộ cân bằng tải với keepalived.
- 81 H.3.4-1 Kiến trúc hệ thống cài đặt Ganglia.
- Với hàng trăm triệu lượt truy cập mỗi ngày, các website này đòi hỏi phải có một hệ thống server cực kỳ mạnh mẽ.
- Một hệ thống hoạt động tốt sẽ khiến người dùng hài lòng, sau một thời gian hoạt động số lượng người dùng sẽ tăng lên, máy chủ của hệ thống sẽ bị quá tải, dẫn đến yêu cầu nâng cấp.
- Vòng tuần hoàn này dẫn đến nhu cầu cần phải xây dựng một hệ thống website với khả năng đáp ứng người dùng trong một thời gian đủ dài và dễ dàng nâng cấp mở rộng khi cần.
- Đó chính là kiến trúc web với khả năng mở rộng quy mô hệ thống.
- Vấn đề quan trọng nhất trong kiến trúc web với khả năng mở rộng chính là cân bằng tải cho hệ thống web-server.
- Một website toàn cầu sẽ có rất nhiều web-server đặt ở nhiều nơi trên thế giới, cân bằng tải cho hệ thống web-server này nghĩa là làm cách nào để các web-server không bị quá tải, luôn đáp ứng được nhu cầu của người dùng trong thời gian nhanh nhất.
- Trong sự cạnh tranh khốc liệt giữa các website dịch vụ, nhà quản trị nào có thể đáp ứng được nhu cầu của người dùng một cách tốt nhất, người đó sẽ thắng, vì vậy nhu cầu cân bằng tải là vô cùng cần thiết và là vấn đề sống còn đối với các nhà cung cấp dịch vụ web.
- Có nhiều phương pháp để cân bằng tải, tuy nhiên lý thuyết chung là cần phải có một bộ cân bằng tải đứng giữa người dùng và hệ thống web-server.
- Bộ cân bằng tải này sẽ nhận yêu cầu từ phía người dùng, sau đó chuyển hướng các yêu cầu này đến các server phù hợp dựa trên các thuật toán phân tải, sau đó nhận dữ liệu từ server và trả về cho người dùng.
- Luận văn trình bày tổng quan về các vấn đề cần phải giải quyết trong quá trình thiết kế hệ thống web với khả năng mở rộng.
- Sau đó sẽ đi sâu vào lý thuyết cân bằng tải cho các hệ thống web-server lớn, các kỹ thuật và phương pháp cân bằng tải hiện đang được sử dụng.
- 9 Tiếp theo sẽ là kiến trúc và các thành phần cần xây dựng của một bộ cân bằng tải, các thuật toán phân tải đã và đang được dùng trên thế giới, các phương pháp cài đặt bộ cân bằng tải vào hệ thống để đạt được hiệu quả về khả đáp ứng người dùng cũng như khả năng mở rộng.
- Tiếp theo em xin đưa ra cài đặt một số thuật toán cân bằng tải cụ thể dựa trên một số phần mềm cân bằng tải mã nguồn mở và một số cải tiến cho các thuật toán này.
- Cuối cùng là định hướng xây dựng một bộ cân bằng tải hoàn toàn độc lập thực thi các thuật toán phân tải cải tiến nhằm áp dụng cho các website đang hoạt động.
- Chương 2: Lý thuyết để xây dựng bộ cân bằng tải web-server, chức năng, nhiệm vụ của một bộ cân bằng tải.
- Các thuật toán, kỹ thuật phân tải đã và đang được sử dụng trên các bộ cân bằng tải web-server.
- Chương 3: Ứng dụng một số thuật toán cân bằng tải dựa trên phần mềm cân bằng tải mã nguồn mở HAProxy.
- Kết luận Luận văn đã đưa ra các thành phần cần phải xây dựng của một bộ cân bằng tải và đã cài đặt một giải pháp phân tải động thông minh hoạt động hiệu quả hơn so với giải pháp đang chạy trên một bộ cân bằng tải mã nguồn mở.
- 10 Trong đó luận văn đã trình bày các bước cài đặt một thuật toán tĩnh và một thuật toán động dựa trên một sản phẩm cân bằng tải mã nguồn mở chạy trên server linux là HAProxy.
- Về lý thuyết: Thực hiện nghiên cứu sâu hơn về các thuật toán cân bằng tải, qua đó ứng dụng mềm dẻo, linh hoạt cho các hệ thống cân bằng tải cụ thể cho các dịch vụ web.
- Về ứng dụng: Hiện tại ứng dụng chỉ dừng ở mức độ thử nghiệm dựa trên sản phẩm cân bằng tải mã nguồn mở có sẵn, chưa đáp ứng được yêu cầu liên lạc giữa các server với nhau, mà chỉ giữa server và bộ cân bằng tải.
- 11 CHƢƠNG I KIẾN TRÚC WEB VỚI KHẢ NĂNG NHANH CHÓNG MỞ RỘNG QUY MÔ HỆ THỐNG 1.
- Để 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ề 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ốt nhất.
- Khả năng mở rộng (Scalability): Là khả năng của một ứng dụng có thể hỗ trợ được số lượng người ngày một tăng.
- Như vậy, khả nă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.
- Hiệu năng (Performance): Là 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ực hiện được đo bằng lượng công việc có ích mà hệ thống thực hiện được với một nguồ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ụng tương đương) thì máy đó có tính thực hiện cao hơn.
- 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.
- 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 (Responsiveness): 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à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 cho đáp ứng đó là bao nhiê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, sẽ khiến người dùng thất vọng, và dẫn tới việc họ tin là trang web đang bị hỏng, điều này rất có hại, vì nếu người dùng mất niềm tin, họ sẽ không quay trở lại trang web đó nữa.
- Chẳng hạn như khi người dùng truy cập vào một trang web, nếu họ phải chờ quá lâu, họ sẽ chuyển qua làm công việc khác, đôi khi họ quên mất là mình đang truy cập và một dịch vụ web và đóng luôn trình duyệt, hoặc họ quay trở lại sau một thời gian khá lâu, điều này rất không tốt vì hệ thống mà họ truy cập vẫn hoạt động và lưu giữ session mà không phục vụ cho ai cả, đó là một sự lãng phí lớn.
- Ở đây cần phải hiểu rằng 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ể đáp ứng rất tệ.
- Thời gian chết của hệ thống (Downtime impact): Downtime impact 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à một số 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ị sẽ phải đối phó với vấn đề nó, giải quyết nó nhằm tạo ra hệ thống hoạt 13 động tốt hơn, cứ như vậy vòng quay lại tiếp tục.
- Đ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, nghĩa là làm sao cho hệ thống hoạt động được tốt nhất trong một 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 một hệ thống 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.
- Xây dựng một hệ thống web như vậy sẽ gặp rất nhiều vấn đề khó, sau đây em xin trình bày ra những vấn đề quan trọng nhất trong việc thiết kế một trang web 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 servers, 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.
- 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: 2.1.
- Cân bằng tải cho Application servers: 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 quan trọng đầu tiên là phải có một hệ thống servers đủ 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.
- 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ó 1 server với cấu hình ngày mạnh hơn (tăng số lượng chip, tăng dung lượng RAM.
- 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ụm server, hệ thống hoạt động rất tốt khi số lượng người dùng vừa phải.
- Tuy vậy, phương pháp này sẽ dẫn đến nhiều vấn đề, đầu tiên là giá thành, nhìn vào bảng so sánh giá ở trang dưới, 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 quan trọng không kém là vấn đề downtime impact, vì chỉ có 1 server nên nó trở thành SPOF (single point of failure), nếu như server này bị chết, ngay lập tức toàn bộ hệ thống sẽ chết.
- Phương pháp này còn dẫn đến giới hạn cho hệ thống, vì đến môt mức nào đó hệ thống sẽ không thể phục vụ được nhiều yêu cầu hơn nữa, vì một hệ thống tổng thể 14 còn phụ thuộc vào nhiều yếu tố như băng thông hay khả năng vào ra của file trên đĩa cứng.
- Theo ví dụ ở trên, cứ lắp thêm 1 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.
- Vậy thì điểm yếu giải pháp này là gì? Đó chính là vấn đề cân bằng tải, để cứ mỗi server sẽ thêm được 200 người dùng, hệ thống phải được cân bằng tải một cách tốt nhất, làm sao để tải được phân bố đều đặn vào trong các máy server? Các server được kết nối với nhau như thế nào? H 1.2-1 So sánh scale out và scale up 15 Giá thành của 2 phương pháp: H 1.2-2 Bảng so sánh giá thành 2 phương pháp Như vậy, rõ ràng rằng sự lựa chọn 1 server chỉ phù hợp cho các hệ thống đòi hỏi sự ổn định cao, với số lượng người dùng tăng lên hàng năm là không nhiều 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 hay các trang chia sẻ video trực tuyến thì sự lựa chọn nhiều server họat động song song là hiệu quả.
- 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 servers này xử lý, từ đó, xuất hiện bài toán cân bằng tải (load balancing – LB) cho cluster này.
- Nhà phát triển hệ thống phải làm sao để các server hoạt động cân bằng, nghĩa là các server được phục vụ 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 được hết tài nguyên hệ thống để phục vụ được lượng truy cập lớn nhất.
- Như đã đề cập ở phần mở đầu, để cân bằng tải cho hệ thống web-servers cần phải xây dựng một gọi là bộ cân bằng tải (load balancer).
- Bộ cân bằng tải này này được đặt trước cluster, nhận yêu cầu từ phía người dùng, xử lý các yêu cầu này và chuyển hướng chúng đến máy server phù hợp.
- Mô hình tổng quát được miêu tả dưới đây: 16 H 1.2-3 Mô hình cân bằng tải web server 2.2.
- Cân bằng tải cho Cơ sở dữ liệu (database) trên servers: Bên cạnh các web server, các database server cũng đóng vai trò vô cùng quan trọng trong hệ thống web.
- Cũng như cân bằng tải ở Application Server, mở rộng Database Server cũng có 2 phương pháp: mở rộng theo chiều ngang và mở rộng theo chiều dọc.
- Mở rộng theo chiều dọc, hiện nay các nhà phát triển hệ thống sử dụng kiến trúc SAN (Storage area networks), DB sẽ được phân chia (partitioning out) theo kiến trúc này.
- Như vậy, hệ thống lưu trữ bây giờ chỉ được xem như một Database Server duy nhất, vì vậy mà nó hoạt động rất hiệu quả.
- Kiến trúc này sẽ tăng đáng kể khả năng của Database Server, tuy vậy vì giá thành của nó rất đắt (như đã đề cập ở trên) 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.

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt