Báo cáo Kỹ thuật linux virtual server và thực nghiệm (Phần 1)

pdf 22 trang phuongnguyen 40
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo Kỹ thuật linux virtual server và thực nghiệm (Phần 1)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbao_cao_ky_thuat_linux_virtual_server_va_thuc_nghiem_phan_1.pdf

Nội dung text: Báo cáo Kỹ thuật linux virtual server và thực nghiệm (Phần 1)

  1. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH CÔNG TRÌNH NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG KỸ THUẬT LINUX VIRTUAL SERVER VÀ THỰC NGHIỆM S K C 0 0 3 9 5 9 MÃ SỐ: T2013-42 S KC 0 0 5 3 6 3 Tp. Hồ Chí Minh, 2013
  2. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ĐỀ TÀI KH&CN CẤP TRƯỜNG KỸ THUẬT LINUX VIRTUAL SERVER VÀ THỰC NGHIỆM Mã số:T2013-42 Chủ nhiệm đề tài: Ths. Nguyễn Thị Thanh Vân TP. HCM, 11/2013
  3. MỤC LỤC Contents Mục lục Mục lục hình vẽ Danh mục từ viết tắt Thông tin kết quả nghiên cứu Mở đầu Nội dung: I. Clustering 9 1. Giới thiệu 9 2. Phân loại cluster 11 a) Hệ thống có tính sẵn sàng cao (High availability cluster) 11 b) Hệ thống cân bằng tải (Load balancing cluster) 11 c) Hệ thống có hiệu năng cao (High performance cluster) 12 3. Yêu cầu khi xây dựng hệ thống clustering 12 II. Linux Enterprise Cluster 13 1. Giới thiệu 13 2. Thuộc tính của Linux Enterprise Cluster 13 a) Trong suốt với người dùng 13 b) Trong suốt với các nodes server trong cluster 13 c) Trong suốt với các ứng dụng chạy trên cluster 13 d) Trong suốt với các server phục vụ cho cluster 14 3. Kiến trúc của Linux Enterprise Cluster 14 4. The Cluster Node Manager 15 5. Single Point of Failure -SPOF 15 III. Giới thiệu Linux Virtual Server - LVS 16 1. Lịch sử phát triển 16 2. Đặc điểm 17 3. Thành phần kiến trúc LVS 18 4. Các loại địa chỉ IP trong LVS 19 a) Virtual IP (VIP) address 19 b) Real IP (RIP) address 19
  4. P a g e | 1 c) Director's IP (DIP) address 19 d) Client computer's IP (CIP) address 20 IV. Kỹ thuật IP Load Balancing trong LVS 20 1. Kỹ thuật LVS-NAT 20 2. Kỹ thuật LVS-TUN 22 3. Kỹ thuật LVS-DR (Direct Routing) 24 4. So sánh các kỹ thuật IP load balancing 27 a) Linux Virtual Server via NAT 27 b) Linux Virtual Server via IP Tunneling 28 c) Linux Virtual Server via Direct Routing 28 V. Các thuật toán lập lịch 29 1. Round-Robin 30 2. Weighted Round-Robin 31 3. Destination Hashing 32 4. Source Hashing 32 5. Least-Connection 32 6. Weighted Least-Connection 33 7. Locality-Based Least-Connection Scheduling (LBLC): 34 8. Locality-Based Least-Connection Scheduling with Replication (LBLCR): 34 9. Shortest Expected Delay Scheduling 35 10. Never Queue 36 VI. Hệ thống LVS dự phòng lỗi (failover) 36 1. Dự phòng lỗi cho các Real Server 36 2. Dự phòng lỗi cho các Load Balancer 37 3. HeartBeat 37 a) Hoạt động của Heartbeat 37 b) Kết nối vật lý cho Heartbeats 38 c) IPfail 40 d) Tín hiệu điều khiển Heartbeat 41 4. LDirector deamon 43 VII. Các công cụ quản lý LVS 46 1. IPVS 46 2. Piranha Configuration Tool 49 3. Mon 49
  5. P a g e | 2 VIII. Triển khai hệ thống LVS High Available 49 Yêu cầu chung đối với hệ thống LVS High Available 46 1. Triển khai LVS-NAT high available 51 a) Mô hình và mô tả 51 b) Thực hiện 51 2. Triển khai LVS-DR với high available 55 a) Mô hình và mô tả 55 b) Thực hiện 55 3. Triển khai LVS-TUN 57 a) Mô hình và mô tả 57 b) Thực hiện 57 IX. Đánh giá và đề xuất 58 Kết luận và kiến nghị Tài liệu tham khảo
  6. P a g e | 3 MỤC LỤC HÌNH VẼ Hình 1: Hai dịch vụ chạy song song trên Server của cluster 10 Hình 2: Hai dịch vụ chạy trên các Server khác nhau của Cluster 10 Hình 3: Hai dịch vụ chạy trên các Server khác nhau và có dự phòng 10 Hình 4: Simplified architecture of an enterprise cluster 14 Hình 5: Enterprise cluster with no single point of failure 15 Hình 6: Kiến trúc LVS 18 Hình 7: Sơ đồ LVS cluster với các loại địa chỉ 20 Hình 8: Kiến trúc LVS-NAT 21 Hình 9: Quá trình trao đổi gói tin trong LVS/NAT 22 Hình 10: Kiến trúc LVS-TUN 23 Hình 11: Quá trình trao đổi gói tin trong LVS/TUN 23 Hình 12: Kiến trúc LVS-DR 25 Hình 13: An ARP broadcast and ARP response to an LVS-DR cluster 26 Hình 14: Quá trình trao đổi gói tin trong LVS/DR 27 Hình 15: Physical paths for heartbeats 38 Hình 16: Stonith sequence of events 40 Hình 17: Heartbeat không có ipfail 41 Hình 18: Heartbeat với IPFail 41 Hình 19 – lDirectord gửi yêu cầu kiểm tra dịch vụ web 44 Hình 20 – websever trả lời lDirectord 45 Hình 21: Hoạt động của IPVS 46 Hình 22: IPVS- IPVSADM 47 Hình 23: Mô hình triển khai theo kỹ thuật LVS-NAT 51 Hình 24: Mô hình triển khai theo kỹ thuật LVS-DR 55 Hình 25: Mô hình triển khai theo kỹ thuật LVS-TUN 57 Hình 26: Màn hình login piranha từ giao diện web 58
  7. P a g e | 4 DANH MỤC TỪ VIẾT TẮT LVS Linux Virtual Server Máy chủ ảo Linux IPV IP Virtual Địa chỉ IP ảo IPVS IP Virutal Server Phần mềm tích hợp trong LVS LVS-NAT LVS via NAT Kỹ thuật LVS sử dụng NAT LVS-DR LVS via Directed Routing Kỹ thuật LVS sử dụng DR LVS-TUN LVS via Tunneling Kỹ thuật LVS sử dụng đường hầm LB Load Balancer Máy cân bằng tải RS Real Server Máy chủ nằm sau LVS VIP Virtual IP Địa chỉ IP ảo CIP Client IP Địa chỉ IP khách hàng RIP Real Server IP Địa chỉ IP thực của Real Server DIP Director IP Địa chỉ IP thực của Director LAN Local Area Network Mạng cục bộ WAN Wide Area Network Mạng diện rộng DNS Domain Name Solution Phân giải tên miền SOF Single of Failure Điểm đơn lẻ GUI Graphic User Interface Giao diện người dùng đồ họa FTP File Transfer Protocol Giao thức truyền tải file ARP Address Resolution Protocol Giao thức phân giải tên IP MAC TCP Transmission Control Protocol Giao thức điều khiển truyền HTTP Hyper Text Tranfer Protocol Giao thức truyền siêu văn bản ICMP Internet Control Message Giao thức điều khiển thông điệp Protocol
  8. P a g e | 5 BM 08TĐ. Thông tin kết quả nghiên cứu TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT THUẬT NAM THÀNH PHỐ HỒ CHÍ MINH Độc lập - Tự do - Hạnh phúc KHOA CNTT Tp. HCM, Ngày 25 tháng 11 năm 2013 THÔNG TIN KẾT QUẢ NGHIÊN CỨU 1. Thông tin chung: - Tên đề tài: KỸ THUẬT LVS (LINUX VIRTUAL SERVER) VÀ THỰC NGHIỆM. - Mã số: - Chủ nhiệm: Nguyễn Thị Thanh Vân - Cơ quan chủ trì: - Thời gian thực hiện: 1 năm 2. Mục tiêu: - Giải pháp cluster trong xây dựng hệ thống mạng với LVS - Tài liệu tham khảo về giải pháp xây dựng cluster với LVS 3. Tính mới và sáng tạo: - Sử dụng những phần mềm mã nguồn mở để xây dựng hệ thống LVS trên Linux. 4. Kết quả nghiên cứu: - Hệ thống cluster trong hệ thống mạng với các kỹ thuật LVS: NAT, DR, TUN đảm bảo sự cân bằng tải các dịch vụ trong hệ thống và tính sẵn sàng cao 5. Sản phẩm: - Tài liệu tham khảo cho sinh viên chuyên ngành mạng. - Giải pháp xây dựng hệ thống mạng với kỹ thuật LVS - 01 bài báo đăng trên Web Khoa 6. Hiệu quả, phương thức chuyển giao kết quả nghiên cứu và khả năng áp dụng: - Có thể triển khai thực nghiệm trong các tổ chức Trưởng Đơn vị Chủ nhiệm đề tài (ký, họ và tên) (ký, họ và tên) Nguyễn Thị Thanh Vân
  9. P a g e | 6 BM 09TĐ. Thông tin kết quả nghiên cứu bằng tiếng Anh INFORMATION ON RESEARCH RESULTS 1. General information: Project title: LINUX VIRTUAL SERVER TECHNOLOGY (LVS) AND EXPERIMENT. Code number: Coordinator: Nguyễn Thị Thanh Vân Implementing institution: Duration: from 1/2013 to 12/2013 2. Objective(s): - Clustering in Linux with LVS - Reference in clustering with LVS 3. Creativeness and innovativeness: - Use open source LVS to implement clustering in Linux - Backup physical network connection in heartbeat 4. Research results: - Clustering system in Linux with 3 Three IP load balancing techniques in LVS: o Virtual Server via NAT o Virtual Server via IP Tunneling o Virtual Server via Direct Routing - High available LVS clustering system. 5. Products: - Clustering in Linux with LVS - Reference document about clustering with LVS - 01 article on website fit.hcmute.edu.vn 6. Effects, transfer alternatives of research results and applicability: - Experimental Implementation in organizations
  10. P a g e | 7 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.linux.com, sourceforge.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
  11. P a g e | 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
  12. P a g e | 9 NỘI DUNG I. Clustering 1. 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
  13. 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
  14. 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.
  15. 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.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. 3. 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.
  16. 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. 2. 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. Hệ điều hành không cần có sự thay đổi để chạy trên một node server, một node trong cluster bị sự cố không làm ảnh hưởng đến các nodes server còn lại trong hệ thống Một Linux Enterprise Cluster là một kiểu cluster có yêu cầu ít về phần cứng, người quản trị không cần phải có nhiều kỹ năng để cung cấp dịch vụ được yêu cầu như xác thực tài khoản người dùng, phân giải tên miền, thông báo phản hồi. c) Trong suốt với các ứng dụng chạy trên cluster Các ứng dụng đang chạy trên cluster không biết rằng mình đang chạy trên cluster. Nếu một ứng dụng đảm nhiệm công việc đặc biệt phải được thay đổi để chạy bên trong cluster thì ứng dụng không còn dùng cluster như một máy tính đơn duy nhất.
  17. P a g e | 14 Một số ứng dụng có thể được viết lại bằng việc dùng API có tính chất cluster, Message Passing Interface – MPI, hoặc đối tượng phân tán. Chúng sẽ giữ lại một phần lợi ích của việc dùng cluster như một máy tính đơn duy nhất. Tuy nhiên cũng có một số ứng dụng không phải viết lại để chạy trên cluster nếu cluster là một tài nguyên máy tính đơn duy nhất. d) Trong suốt với các server phục vụ cho cluster Các nodes trong Linux Enterprise Cluster có thể phải yêu cầu các server khác (không phải các cluster nodes) trong mạng để đáp ứng yêu cầu dịch vụ của clients. Các server đó có thể phục vụ các dịch vụ như: DNS, email, user authentication, chúng hỗ trợ cho các yêu cầu dịch vụ tới từ các cluster nodes. Các server này sẽ không biết nó đang phục vụ cho cluster node. 3. Kiến trúc của Linux Enterprise Cluster Hình 4: Simplified architecture of an enterprise cluster Kiến trúc của Linux Enterprise Cluster đơn giản gồm các thành phần sau: (Hình 4) - Load Balancer: nằm giữa người dùng với các máy tính – chính là các nodes tạo nên cluster. Load balacer quyết định cách tốt nhất để phân phối các công việc cho các nodes. - Shared Storage Device: hoạt động như một kho lưu trữ dữ liệu cho cluster. Nó có đặc tính quan trọng là khả năng phân xử các truy cập dữ liệu, không
  18. P a g e | 15 cho phép hai hay nhiều chương trình đang chạy trên các nodes khác nhau thay đổi cùng vùng dữ liệu tại cùng một thời điểm. - Print Server: Thiết bị xuất của cluster 4. The Cluster Node Manager Các server nằm ngoài cluster có thể làm các việc quan trọng như: - Hoạt động như các server chứng nhận cho các ứng dụng chạy bên trong cluster - Hoạt động như một cơ sở dữ liệu trung tâm quản trị tài khoản người dùng - Cung cấp các dịch vụ khác như DNS, email cho các cluster nodes - Kiểm soát hoạt động của cluster 5. Single Point of Failure -SPOF SPOF có thể được miêu tả như một chuỗi các hành động nối tiếp nhau, trong đó sự gián đoạn của một hành động sẽ kéo theo sự gián đoạn của toàn hệ thống. Một hệ thống cluster doanh nghiệp có các server thực hiện các nhiệm vụ quan trọng cần giảm thiểu số lượng các điểm SPOF để đảm bảo độ sẵn sàng cao. Do đó các điểm SPOF cần phải được đảm bảo an toàn bởi các kỹ thuật redundancy nhằm loại trừ sự gián đoạn hoạt động của hệ thống từ trước khi nó xảy ra. (Hình 5) Hình 5: Enterprise cluster with no single point of failure
  19. P a g e | 16 III. Giới thiệu Linux Virtual Server - LVS 1. Lịch sử phát triển Bắt đầu từ năm 1998, dự án Linux Virtual Server thực hiện việc kết hợp nhiều máy chủ vật lý thành một máy chủ ảo, nhằm xây dựng hệ thống máy chủ có khả năng đáp ứng và sẵn sàng cao [9]. Công việc chính của dự án là phát triển một phần mềm cân bằng tải dựa trên IP (với tên gọi IPVS), một phần mềm cân bằng tải ở mức ứng dụng (KTCPVS - Kernel TCP Virtual Server), và các thành phần quản lý hệ thống cluster (ipvsadm, ) - IPVS: chương trình thực hiện cân bằng tải ở layer 4 của mô hình OSI, có mã nguồn nhúng trực tiếp trong nhân linux. Phiên bản ổn định nhất đến thời điểm hiện tại (tháng 6 năm 2012) là ipvs 1.2.1 được kèm mặc định trong nhân linux phiên bản 2.6.10 phát hành tháng 12 năm 2004. Khả năng hỗ trợ IPv6 được thêm vào kể từ phiên bản 2.6.28-rc3 của nhân linux, phát hành tháng 11 năm 2008. - KTCPVS: Chương trình thực nhiện cân bằng tải ở mức ứng dụng (layer 7 trong mô hình OSI), cũng có mã nguồn được thiết kế để nhúng trực tiếp vào nhân linux, tuy nhiên hiện vẫn đang trong quá trình phát triển nên chưa được sử dụng rộng rãi (Hình vẽ) Hình vẽ: System implementation of KTCPVS cluster Trong KTCPVS, các kernel threads được dùng để phân tích nội dung yêu cầu và chuyển tiếp chúng tới Server cuối theo thuật toán lập lịch và cho phép relay dữ
  20. P a g e | 17 liệu giữa client và server. Chương trình tcpvsadm được dùng để quản trị KTCPVS, nó có thể viết các luật điều khiển Virtual Server bên trong kernel thông qua setsockopt, và đọc các KTCPVS rules thông qua getsockopt hoặc hệ thống file /proc. Các thành phần của LVS chủ yếu hoạt động dựa trên framework Netfilter của Linux cùng với mã nguồn đặt ở thư mục net/netfilter/ipvs/ trong bộ mã nguồn nhân linux. IPVS được cấu hình thông qua công cụ ipvsadm. 2. Đặc điểm Linux Virtual Server là một giải pháp chạy trên hệ điều hành linux để triển khai hệ thống cluster nhằm cân bằng tải với tính sẵn sàng cao, khả năng mở rộng, linh hoạt. LVS bao gồm các công cụ phần mềm thực hiện việc điều phối các kết nối mạng tới nhiều máy chủ cùng chia sẻ một khối lượng công việc. LVS đã và đang được sử dụng để xây dựng các hệ thống có mức độ tải nặng như www.linux.com, sourceforge.net, Wikipedia, UK National JANET Web Cache Services, v.v [10] LVS điều phối các kết nối tới các máy chủ khác nhau dựa trên một số thuật toán lập lịch. Người dùng cuối hoàn toàn không biết về kiến trúc bên trong của hệ thống cluster mà chỉ tương tác với toàn bộ hệ thống như một máy chủ riêng biệt thông qua một địa chỉ IP cố định. Việc thêm bớt các máy con không làm ảnh hưởng đến khả năng cung cấp dịch vụ của hệ thống, nhờ đó mà ta đạt được khả năng mở rộng linh hoạt. Khi một máy con bị phát hiện xảy ra sự cố, hệ thống có thể được điều chỉnh lại một cách dễ dàng và nhanh chóng cung cấp tính sẵn sàng cao cho các dịch vụ quan trọng. LVS cài đặt cơ chế chuyển mạch layer 4 trong nhân Linux, cho phép phân phối kết nối TCP hay UDP giữa nhiều máy chủ vật lý, do đó ta có thể xây dựng một hệ thống cluster cung cấp nhiều dịch vụ khác nhau như dns, web, mail, ftp, v.v LVS có hiệu năng rất cao. Nó có thể đáp ứng tới gần 100,000 kết nối đồng thời bằng cách cân bằng tải giữa các đường truyền 100Mbit thông thường sử dụng thiết bị phần cứng phổ biến với giá thành rẻ. [8]
  21. P a g e | 18 3. Thành phần kiến trúc LVS Hình 6: Kiến trúc LVS Kiến trúc LVS gồm các thành phần cơ bản sau (Hình 6): + Load Balancer: là thành phần được user sử dụng trực tiếp (front-end) đối với dịch vụ và được thấy bởi bên ngoài. Là server được cài đặt LVS, nó tiếp nhận request từ client và phân phối đến các server bên trong hệ thống, điểu khiển các kết nối mạng từ những client đến những Real Server trong Cluster. Để đảm bảo tính sẵn sàng, LVS có thành phần Backup. + Server cluster: Tập hợp những server trong cluster mà đang thực thi những dịch vụ như web, ftp, dns, mail , gọi là các Real Server. + Storage: Cung cấp việc lưu trữ chia sẽ cho server để mà các server có thể dễ dàng theo dõi cùng một nội dung và cung cấp các dịch vụ giống nhau. + Virtual server: Tập hợp các server lại để tạo thành một hệ thống duy nhất được xem như là một virtual server.
  22. S K L 0 0 2 1 5 4