MỞ ĐẦU Tổng quan tình hình nghiên cứu - Ngoài nước: Đã có nhiều giải pháp về thiết bị phần cứng và phần mềm hỗ trợ xử lý công việc lớn, tính sẵn sàng và độ tin cậy cao cho các dịch vụ. Trong đó giải pháp mã nguồn mở Linux Virtual Server - LVS đã được sử dụng để xây dựng cluster cho một số websites trên Internet như www.net và những dịch vụ JANET Web Cache của UK, tuy nhiên chưa thực sự rộng rãi. - Trong nước: Việc nghiên cứu và sử dụng mã nguồn mở LVS vào trong hệ thống cluster của các tổ chức còn hạn chế Tính cấp thiết - Việc đáp ứng được khối lượng xử lý lớn, khả năng phản ứng nhanh chóng và tính sẵn sàng cao là những yêu cầu bắt buộc cho các ứng dụng quan trọng. - Hiện nay, phần mềm mã nguồn mở đã và đang thu hút được sự chú ý mạnh mẽ của cộng đồng, và số lượng phần mềm cũng như người dùng đã tăng lên một cách đáng kể.
Những lợi ích dưới đây do phần mềm nguồn mở mang lại: o Miễn phí bản quyền phần mềm o Miễn phí các phiên bản nâng cấp trong toàn bộ vòng đời sử dụng sản phẩm o Giảm chi phí phát triển phần mềm đáp ứng theo yêu cầu nghiệp vụ. o Kéo dài thời gian sử dụng/tái sử dụng các phần cứng, thiết bị trong khi vẫn đảm bảo hiệu năng toàn hệ thống o Mềm dẻo trong quản lý. Mục tiêu - Tài liệu tham khảo về giải pháp xây dựng hệ thống cluster Luan van Page |8 - Giải pháp trong xây dựng hệ thống cluster với LVS Cách tiếp cận - Nghiên cứu, ứng dụng những công cụ mới trong việc xây dựng hệ thống cluster nhằm đáp ứng được khối lượng xử lý lớn, khả năng phản ứng nhanh chóng và tính sẵn sàng cao Phương pháp nghiên cứu, - Tìm hiểu, phân tích và triển khai thực nghiệm. Đối tượng và phạm vi nghiên cứu, - Đối tượng: Kỹ thuật Linux Virtual Server (LVS) - Phạm vi: Hệ thống mạng các tổ chức Nội dung nghiên cứu.
- Clustering trong Linux - Các thành phần, kiến trúc và hoạt động của kỹ thuật LVS - Kỹ thuật Load Balancer và failover trong LVS - Các kỹ thuật IP load balancing của LVS - Tìm hiểu, phân tích các thuật toán lập lịch hoạt động của LVS - Các công cụ quản lý LVS - Thiết kế và triển khai mô hình thực nghiệm với kỹ thuật LVS Luan van Page |9 NỘI DUNG I. Giới thiệu Cluster là một hệ thống bao gồm nhiều máy chủ được kết nối với nhau theo dạng song song hay phân tán và được sử dụng như một tài nguyên thống nhất. Nếu một máy chủ ngừng hoạt động do bị sự cố hoặc để nâng cấp, bảo trì, thì toàn bộ công việc mà máy chủ này đảm nhận sẽ được tự động chuyển sang cho một máy chủ khác (trong cùng một cluster) mà không làm cho hoạt động của hệ thống bị ngắt hay gián đoạn. Quá trình này gọi là “fail-over” và việc phục hồi tài nguyên của một máy chủ trong hệ thống (cluster) được gọi là “fail-back”.
Mỗi máy chủ trong cluster được gọi là một node (cluster node), và có thể được thiết lập ở chế độ chủ động (active) hay thụ động (passive). Khi một node ở chế độ chủ động, nó sẽ chủ động xử lý các yêu cầu. Khi một node là thụ động, nó sẽ nằm ở chế độ dự phòng nóng (standby) chờ để sẵn sàng thay thế cho một node khác nếu bị hỏng. Trong một cluster có nhiều node có thể kết hợp cả node chủ động và node thụ động.
Trong những mô hình loại này việc quyết định một node được cấu hình là chủ động hay thụ động rất quan trọng. Tùy theo nhu cầu mà chúng ta có thể triển khai nhiều dịch vụ trên cùng 1 cluster hay cài đặt trên mỗi node 1 dịch vụ để hữu ích nhất. Có 3 dạng triển khai chính: + Dịch vụ chạy song song: Cài đặt cả 2 ứng dụng vào mỗi node của cluster .Ở cấu trúc này thì 2 ứng dụng trên cùng 1 server do đó nếu ứng dụng này bị lỗi thì sẽ ảnh hưởng đến ứng dụng kia, hiệu quả của hệ thống cluster thấp (Hình 1) + Dịch vụ chạy riêng lẻ : Tạo 2 hệ thống cluster riêng lẻ, trong mỗi cluster cài đặt duy nhất 1 ứng dụng. Ở cấu trúc này thì hệ thống sẽ hiệu quả hơn nếu có ứng dụng nào đó bị lỗi thì cũng không ảnh hưởng đến các ứng dụng khác.
Nhưng chi phí đầu Luan van P a g e | 10 tư cho kiểu này rất cao bởi vì số lượng các node cho mỗi ứng dụng nhiều hơn loại trên (Hình 2) + Dịch vụ chạy riêng lẻ và có dự phòng (Hình 3), mỗi node cài 1 ứng dụng nhưng khác với loại 1 là sẽ có 1 node làm nhiệm vụ backup. Cụ thể như hình 3 cho ta thấy hệ thống này có 1 node passive dùng làm backup và cài cả 2 ứng dụng của node 1 và node 2 (2 node Active). Nếu 1 trong 2 node này bị lỗi thì node passive sẽ thay thế chức năng của node bị lỗi. Hệ thống này có hiệu quả cao hơn 2 loại trước.
Hình 1: Hai dịch vụ chạy song song trên Server của cluster Hình 2: Hai dịch vụ chạy trên các Server khác nhau của Cluster Hình 3: Hai dịch vụ chạy trên các Server khác nhau và có dự phòng Luan van P a g e | 11 2. Phân loại cluster Tùy theo mục đích chính khi xây dựng hệ thống cluster, có thể chia các hệ thống cluster ra thành ba loại: - Hệ thống có tính sẵn sàng cao (High availability cluster) - Hệ thống cân bằng tải (Load balancing cluster) - Hệ thống có hiệu năng cao (High performance cluster) a) Hệ thống có tính sẵn sàng cao (High availability cluster) Hệ thống có tính sẵn sàng cao (HA cluster) thường được triển khai để phục vụ cho những ứng dụng quan trọng, đòi hỏi thời gian đáp ứng 24/7. Chìa khóa để đảm bảo tính sẵn sàng cao chính là triển khai các thiết bị dự phòng. Một hệ thống HA cluster bao gồm nhiều máy tính có khả năng cung cấp dịch vụ giống nhau.
Ở mức độ cơ bản nhất, chỉ có một máy tính trong số đó hoạt động chính, các máy còn lại nằm trong trạng thái chờ và theo dõi hoạt động của máy chính để đảm bảo nó vẫn hoạt động tốt. Nếu như máy đang chạy chính dừng hoạt động, một máy dự phòng đang ở trạng thái chờ sẽ được chọn thay thế để tiếp tục cung cấp dịch vụ, quá trình này được gọi là failover. Khi máy chính trở lại hoạt động bình thường chức năng cung cấp dịch vụ được trao lại cho máy chính, quá trình này được gọi là failback. b) Hệ thống cân bằng tải (Load balancing cluster) Hệ thống cân bằng tải (LB cluster) được thiết kế để có thể xử lý một số lượng lớn công việc cùng một lúc bằng cách chia khối lượng công việc cần giải quyết ra cho nhiều máy tính cùng thực hiện.
Lấy ví dụ, khi triển khai một hệ thống nhiều máy chủ web dưới dạng LB cluster. Nếu cùng một lúc có nhiều yêu cầu truy cập gửi đến trang web thì mỗi yêu cầu truy cập sẽ được giao cho một máy chủ riêng xử lý. Khối lượng công việc được chia cho các máy con như thế nào là dựa trên thuật toán lập lịch mà hệ thống cluster đó chọn sử dụng. Luan van P a g e | 12 c) Hệ thống có hiệu năng cao (High performance cluster) Hệ thống có hiệu năng cao (HP cluster) được sử dụng với mục đích tăng cường khả năng tính toán hơn là nâng cao khả năng xử lý các tác vụ mang tính chất đọc ghi như web hay databases.
Các hệ thống dạng này có thể được dùng để thực hiện các tính toán lớn và phức tạp trong vật lý lượng tử, các chương trình mô phỏng sự biến đổi của thời tiết hay tình trạng giao thông của một thành phố, v. Một số hệ thống HP cluster lớn được biết đến như là các siêu máy tính có thể thực hiện hàng trăm triệu phép tính trên giây. Trên thực tế, ba loại cluster trên không hoàn toàn tách biệt khỏi nhau. Bất kỳ một hệ thống nào gồm nhiều máy tính được kết nối và cùng hoạt động đều có thể áp dụng các phương pháp để dự phòng rủi ro, tăng hiệu năng hoạt động và có khả năng mở rộng linh hoạt.
Do đó các hệ thống cluster được triển khai thường mang đặc điểm của hai hay cả ba loại cluster nói trên, việc phân loại chỉ giúp làm nổi bật và hướng người thiết kế cũng như quản trị tập trung vào yêu cầu chính của hệ thống. Yêu cầu khi xây dựng hệ thống clustering Tính sẵn sàng cao (High availability) Tài nguyên trong mạng luôn sẵn sàng trong khả năng cao nhất để cung cấp và phục vụ người dùng ngay cả khi các phần cứng hay phần mềm bị sự cố giúp giảm thiểu việc ngưng trệ hệ thống. Dễ mở rộng (Scalability) Khi các ứng dụng trong cluster sử dụng tài nguyên hệ thống vượt quá khả năng đáp ứng của nó, việc nâng cấp mở rộng các thiết bị phần cứng hoàn toàn dễ dàng. Độ tin cậy cao(reliability) Server cluster giảm thiểu tần số xảy ra các sự cố và nâng cao khả năng chịu đựng sai sót trên hệ thống.
Luan van P a g e | 13 II. Linux Enterprise Cluster 1. Giới thiệu Một Linux Enterprise Cluster là một kiểu cluster trên hệ thống Linux chạy các ứng dụng làm nhiệm vụ quan trọng để phục vụ cho nhiều người dùng. Những người dùng của Linux Enterprise Cluster không cần trực tiếp ngồi trước máy trạm Linux, họ có thể kết nối tới cluster bằng trình web, telnet hoặc một ứng dụng client mà có thể giao tiếp với các dịch vụ đang chạy trên các nodes cluster.
Các hệ thống Linux clustering được triển khai dựa trên hai dạng chính là: - Loadbalancer cluster: dùng Server Linux ảo (Linux Virtual Server – LVS) - High available cluster: dùng máy dự phòng khi gặp lỗi (Fail Over Service - FOS) với hỗ trợ của Heartbeat. Thuộc tính của Linux Enterprise Cluster a) Trong suốt với người dùng Người dùng không biết họ đang dùng cluster. Nếu họ biết mình đang dùng cluster, thì chỉ biết mình đang dùng một nguồn tài nguyên máy tính duy nhất trên một máy đơn chứ không phải trên nhiều server khác nhau [4] b) Trong suốt với các nodes server trong cluster Các nodes server trong cluster không biết chúng là một phần của cluster.