Download doc - Baocao-luanvan final

Transcript
Page 1: Baocao-luanvan final

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

LỜI CAM ĐOAN

Chúng em xin cam đoan rằng ngoài các tham khảo đã được ghi rõ, các kết quả đã thực hiện được trong luận văn này là do chính chúng em thực hiện. Có một số phần trong báo cáo luận văn chúng em có lấy ý tưởng từ các tài liệu tham khảo để có thêm ý tưởng cho việc phát triển đề tài nhưng chúng em đảm bảo rằng đã thấu hiểu hoàn toàn các nội dung đó. Tuyệt đối không có việc sao chép hoàn toàn từ một tài liệu nào đó mà chúng em không hiểu được nội dung đã sao chép.

LỜI CẢM ƠNSVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong ii

Page 2: Baocao-luanvan final

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Sau một thời gian dài làm việc miệt mài và căng thẳng, chúng em đã hoàn thành được đề tài của mình. Trong suốt quá trình làm việc chúng em nhận được sự giúp đỡ rất nhiều từ gia đình, thầy cô và bạn bè, những người đã luôn ủng hộ chúng em khi chúng em cảm thấy khó khăn và chán nản nhất, những người đã đưa ra những đóng góp thiết thực và bổ ích để giúp chúng em định hướng và có cách giải quyết tốt nhất cho đề tài của mình trong suốt quá trình làm Luận Văn Tốt Nghiệp.

Chúng em xin cảm ơn gia đình, bạn bè những người đã luôn ủng hộ chúng em trong suốt quá trình làm luận văn.

Chúng em vô cùng biết ơn thầy Phạm Trần Vũ, thầy hướng dẫn của chúng em, người thầy kính yêu, người đã luôn đưa ra những lời khuyên chân thành và bổ ích cho đề tài của chúng em, nếu không có sự hướng dẫn tận tình của thầy thì chúng em không thể hoàn thành được đề tài này.

Chúng em cũng xin chân thành cảm ơn Thầy Nguyễn Quang Hùng cùng với các thầy và các anh trong phòng hệ thống mạng và máy tính, những người đã hướng dẫn cho chúng em rất nhiều trong Luận Văn Tốt Nghiệp này.

Một lần nữa chúng em xin cảm ơn tất cả mọi người, Sự tin tưởng của mọi người chính là động lực để chúng em hoàn thành tốt luận văn này.

TÓM TẮT LUẬN VĂN

Luận văn xây dựng một cơ chế Single-Sign-On từ Sakai vào môi trường Vn-Grid.

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong iii

Page 3: Baocao-luanvan final

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Công việc chính của Luận Văn là tích hợp các Grid-portlet theo chuẩn JSR 168 vào Sakai để có thể từ Sakai truy cập vào hệ thống Vn-Grid.

MỤC LỤC

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong iv

Page 4: Baocao-luanvan final

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

LỜI CAM ĐOAN...........................................................................................................................ii

LỜI CẢM ƠN................................................................................................................................iii

TÓM TẮT LUẬN VĂN................................................................................................................iv

MỤC LỤC…...................................................................................................................................v

Chương 1: Tổng Quan Về Đề Tài Luận Văn............................................................................1

1.1 Giới thiệu đề tài.......................................................................................................11.2 Mục tiêu của đề tài..................................................................................................21.3 Hướng tiếp cận của đề tài:......................................................................................21.4 Phương pháp triển khai đề tài.................................................................................21.5 Cấu trúc luận văn....................................................................................................3

Chương 2: Các kiến thức nền tảng trong đề tài luận văn........................................................4

2.1 Tổng quan về hệ thống tính toán lưới.....................................................................42.2 Globus Toolkit 4.0..................................................................................................52.3 Single Sign On......................................................................................................132.4 Tổng quan về sakai...............................................................................................172.5 Tổng quan về OGCE portal:.................................................................................222.6 Tổng quan về Axis Service...................................................................................242.7 Chuẩn portlet JSR 168..........................................................................................26

Chương 3: Phân tích và hiện thực hệ thống đề tài luận văn..................................................32

3.1 Phân tích hệ thống.................................................................................................323.2 Đề xuất cơ chế tích hợp portlet JSR 168 vào Sakai..............................................37

3.2.1 Xây dựng các tool tương ứng.........................................................................373.2.2 Tích hợp Grid portlet dựa vào chuẩn WSRP................................................393.2.3 Tích hợp portlet JSR 168 vào Sakai...............................................................39

Chương 4: Kết luận...................................................................................................................46

4.1 Những thành quả đạt được của luận văn:..............................................................464.2 Những hạn chế của luận văn.................................................................................464.3 Những khó khăn khi thực hiện đề tài....................................................................464.4 Hướng phát triển của luận văn:.............................................................................47

Chương 5: Phụ lục và tài liệu tham khảo................................................................................48

5.1 Cài đặt Globus Toolkit 4.0....................................................................................485.2 Cài đặt OGCE portal.............................................................................................595.3 Cài đặt sakai phiên bản 2.5.4................................................................................61Tài liệu tham khảo...........................................................................................................68

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong v

Page 5: Baocao-luanvan final

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

DANH MỤC HÌNH

Hình 2. 1: Mô hình kiến trúc hệ thống lưới.................................................................................5

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong vi

Page 6: Baocao-luanvan final

Xây dựng cơ chế Single Sign On từ môi trường Sakai vào VN-GRID GVHD: TS. Phạm Trần Vũ

Hình 2. 2: Kiến trúc của Globus Toolkit......................................................................................6Hình 2. 3: Mô hình tổng quát của Myproxy service....................................................................8Hình 2. 4: Myproxy CA..................................................................................................................9Hình 2. 5: Myproxy trong Grid-portal.........................................................................................9Hình 2. 6: Cơ chế hoạt động của Myproxy................................................................................10

Hình 2. 7: Cấu trúc cài đặt của GRAM ..............................................................................12Hình 2. 8: Dịch vụ Single Sign On...............................................................................................14Hình 2. 9: Mô hình Single Domain SSO.....................................................................................15Hình 2. 10:Mô hình Multi Domain SSO.....................................................................................16Hình 2. 11: Sakai Portal...............................................................................................................17Hình 2. 12:Một số tính năng của Sakai.......................................................................................18Hình 2. 13: Mô hình trừu tượng Sakai.......................................................................................20Hình 2. 14: Sakai Framework.....................................................................................................20Hình 2. 15: Lớp Presentation của Sakai.....................................................................................21Hình 2. 16: Các portlet đặc trưng của OGCE portal................................................................22Hình 2. 17: Portlet Myproxy Manager của OGCE portal........................................................23Hình 2. 18: Portlet Comp-file-management của OGCE portal...................................................23Hình 2. 19: Kiến Trúc của OGCE portal...................................................................................24Hình 2. 20: Kiến trúc của Axis Services.....................................................................................25Hình 2. 21: Mô hình chuẩn của JSR 168....................................................................................26

Hình 3. 1: Mô hình tổng quát hệ thống ban đầu.......................................................................32Hình 3. 2:Mô hình tổng quát hệ thống cần xây dựng................................................................33Hình 3. 3:Sơ đồ hoạt động của hệ thống mong muốn...............................................................34Hình 3. 4:Portlet MyproxyManager của OGCE portal............................................................35Hình 3. 5: Lấy Proxy của người dùng qua OGCE portal.........................................................36Hình 3. 6:Portlet JobSubmission của OGCE portal.................................................................36Hình 3. 7:Sơ đồ hoạt động hệ thống đã hiện thực.....................................................................37Hình 3. 8: Sakai Tool Registration..............................................................................................39Hình 3. 9: Cấu hình file web.xml cho portlet Proxy Manager.................................................41Hình 3. 10: Portlet Proxy Manager trong Sakai........................................................................41Hình 3. 11: Công cụ tìm kiếm trong GNOME...........................................................................43Hình 3. 12: Myproxy tích hợp thành công vào Sakai và có thể lấy proxy..............................43Hình 3. 13: Portlet Job Submit trong Sakai...........................................................................................44

Hình 4. 1: OGCE portal...............................................................................................................60Hình 4. 2: Sakai sau khi cài đặt thành công...............................................................................65Hình 4. 3:Sakai có tích hợp Proxymanager portlet và có thể lấy proxy..................................66Hình 4. 4:Sakai có tích hợp JobSubmit portlet và có thể submit một job..............................67Hình 4. 5:Kết quả của việc thực thi............................................................................................67

SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong vii

Page 7: Baocao-luanvan final

Chương 1: Tổng Quan Về Đề Tài Luận Văn1.1 Giới thiệu đề tài

Trong thời gian gần đây với sự phát triển như vũ bão của nghành công nghệ thông tin. Các hệ thống mạng ngày càng phát triển và nâng cấp cả về tài nguyên phần cứng, tốc độ, băng tần. Cùng với đó là sự phát triển của nền công nghiệp, dịch vụ bắt buộc các doanh nghiệp và người dùng phải tiếp cận và ứng dụng công nghệ thông tin một cách mạnh mẽ. Nhưng đi kèm với đó đòi hỏi một nguồn lực về tài chính và con người. Ra đời trong hoàn cảnh đó, tại thời điểm hiện tại của luận văn một thế hệ công nghệ thông tin mới dần ra đời. Đó là điện toán đám mây (Cloud Computing). Có thể nói các ông lớn như: IBM, Google, Microsoft… đang tập trung phát triển nhằm cung cấp các dịch vụ số cho các doanh nghiệp giải quyết các vấn đề về chi phí cơ sở hạ tầng và con người của doanh nghiệp trong việc ứng dụng công nghệ thông tin.

Trong khi đó năm 2010 là một năm thành công ngoài sức mong đợi của mạng xã hội facebook. Mark Zuckerberg, nhà sáng lập mạng xã hội facebook, đã tạo ra một thế hệ công nghệ kế nối mới trên internet, sau web, forum, blog. Thì giờ hơn nữa tỉ người dùng facebook. Điều đó chứng tỏ rằng khả năng tương tác, kết nối giữa người với người ngày càng được cải thiện. Con người ngày càng có nhu cầu phải kết nối,nhanh, dễ dàng, và hiệu quả.

Trong bối cảnh này thì trong cộng đồng nghiên cứu khoa học cũng đang cần xây dựng và thiết lập một hệ thống. Trong hệ thống đó phải kết hợp được những tính năng kết nối giống như facebook, các nhà hóa học, vật lý học, địa chất học, có thể tìm thấy nhau, chia sẽ, thảo luận một cách dễ dàng. Đồng thời đối với các nhà khoa học phải đối diện với ngày càng nhiều bài toán phức tạp và đòi hỏi một lượng tính toán, phân tích lớn. Bởi vậy hệ thống trên phải đáp ứng được sức mạnh tính toán, khả năng đáp ứng nhanh với một chi phí chấp nhận được thì Tính Toán Lưới[1](grid computing) là một lựa chọn đáp ứng được. Một hệ thống kết hợp hai yêu cầu trên mà các nước phương Tây đã phát triển rất sớm từ năm 2003 là Sakai VRE Demonstrator[2] tại các trường đại học ở Anh và Mỹ. Còn ở Việt Nam thì chưa có một hệ thống nào tương tự như thế. Do đó đề tài luận văn của nhóm góp phần nghiên cứu và xây dựng một hệ thống như trên.

Tại trường đại học Bách Khoa thành phố Hồ Chí Minh hiện đang xây dựng hệ thống tính Toán Lưới (Vn-Grid)[3]. Hệ thống tính toán lưới này được xây dựng trên bộ Globus Toolkit 4.0[4][5][6] và Sakai [7][8] 2.5.4 hoặc 2.7.1. Đề tài luận văn sẽ giải quyết bài toán truy cập hệ thống tính toán lưới thông qua Sakai. Câu hỏi được đặt ra là tại sao phải phát triển theo hướng phải truy cập hệ thống tính toán lưới hay GlobusTookit 4.0 thông qua Sakai mà không dùng một hệ thống khác? Bởi vì Sakai có thể đáp ứng được yêu cầu trên một cách tốt nhất. Hiện nay có trên 350 tổ chức giáo dục sử dụng Sakai như một hệ thống quản lý giáo dục và khoa học, tạo ra một môi trường liên kết hợp tác giữa các nhà khoa học. Từ đó ta có thể tạo ra một mạng lưới mà trên đó các nhà khoa học có thể chia sẻ tài

Page 8: Baocao-luanvan final

nguyên, dữ liệu nghiên cứu của mình cho người khác, có thể sử dụng sức mạnh của các thành viên trong cùng mạng lưới để giải quyết những bài toán có độ phức tạp cao. Đó chính là lợi ích của việc xây dựng mạng lưới tính toán này.

1.2 Mục tiêu của đề tài

Mục tiêu của đề tài là làm sao tạo ra môi trường truy cập hệ thống tính toán lưới thông qua Sakai portal. Người dùng sau khi đăng nhập vào Sakai thì có thể lấy proxy để truy cập vào hệ thống tính toán lưới và thực hiện các công việc trên hệ thống tính toán lưới.

1.3 Hướng tiếp cận của đề tài

Từ quá trình tìm hiểu lúc thực tập đến lúc bắt tay vào việc làm luận văn, nhóm đã tham khảo nhiều tài liệu trên mạng và có thể đưa ra ba hướng tiếp cận để hoàn thành đề tài này:

Xây dựng các tool mới hoàn toàn cho Sakai để truy cập vào hệ thống tính toán lưới. Hướng tiếp cận này thuận lợi ở chỗ ta là người chủ động trong việc xây dựng các tool này và có thể tùy biến các tool theo ý của ta. Tuy nhiên để làm theo hướng này thì cần thời gian để tìm hiểu kiến trúc Sakai các công cụ xây dựng tool cho Sakai… Vì thời gian luận văn có hạn nên nhóm không thể đi theo hướng này.

Tích hợp các Grid-portlet vào Sakai dựa trên chuẩn WSRP[9] (Web Service for Remote Portlet), hướng này có ưu điểm là khá đơn giản chỉ cần cài đặt Sakai Portal và OGCE(Open Grid Computing Enviroments)[10] portal sau đó tích hợp cơ chế WSRP lên Sakai và OGCE để Sakai có thể truy cập đến các portlet của OGCE và thực hiện các tác vụ để truy cập đến hệ thống tính toán lưới. Lúc này Sakai portal chỉ đóng vai trò cầu nối cho OGCE portal truy cập đến hệ thống tính toán lưới. Hướng này không phù hợp với yêu cầu của đề tài đó là tạo môi trường truy cập hệ thống tính toán lưới trực tiếp từ Sakai.

Tích hợp các grid-portlet có sẵn từ OGCE portal vào Sakai. Các grid-portlet của OGCE portal được viết theo chuẩn JSR 168[11][12][13] trong khi từ phiên bản Sakai 2.4 thì Sakai đã bắt đầu hỗ trợ cho chuẩn portlet JSR 168 nên hướng này là hướng khả thi nhất và tốn ít thời gian để thực hiện đề tài. Và nhóm quyết định thực hiện đề tài theo hướng tích hợp các portlet có sẵn từ OGCE portal vào Sakai.

1.4 Phương pháp triển khai đề tài

Nhóm quyết định lựa chọn phương án tích hợp các portlet có sẵn từ OGCE sang Sakai và triển khai trên 2 portlet đó chính là proxymanager portlet và jobsubmit portlet để xây dựng hệ thống mẫu cho luận văn. Sau khi tích hợp thành công hai portlet này vào Sakai thì các grid-portlet khác có thể được tích hợp tương tự vào Sakai.

Page 9: Baocao-luanvan final

1.5 Cấu trúc luận văn

Chương 1: Giới thiệu đề tàiTrong chương này nhóm sẽ giới thiệu tổng quan đề tài, tầm quan trọng của đề tài, nhiệm vụ của đề tài, hướng tiếp cận đề tài, phương pháp triển khai đề tai và cấu trúc của luận văn.

Chương 2: Những kiến thức nền tảng của đề tài luận vănTrong chương này nhóm trình bày gần như toàn bộ các vấn đề tìm hiểu trong quá trình luận văn bao gồm:

Tổng quan về Grid Computing.Globus Toolkit 4.0.Dịch vụ Myproxy.Dịch vụ GRAM.Cơ chế Single Sign On (SSO).Sakai và kiến trúc của Sakai.OGCE và kiến trúc của OGCE.Giới thiệu về Axis ServiceChuẩn portlet JSR168

Chương 3: Quá trình hiện thực đề tài luận vănPhân tích đưa ra mô hình thiết kế của hệ thống, Lựa chọn cách tiếp cận đề tài.Cách thức tích hợp lần lượt hai portlet Myproxy manager và Jobsubmit của OGCE Portal vào Sakai.

Chương 4: Kết LuậnTrình bày những nhận xét, đánh giá của nhóm về những khó khăn khi thực hiện đề tài, những kết quả được, những hạn chế của luận văn, và đề xuất hướng phát triển.

Page 10: Baocao-luanvan final

Chương 2: Các kiến thức nền tảng trong đề tài luận văn

2.1 Tổng quan về hệ thống tính toán lưới

Mở đầu

Khái niệm hệ thống tính toán lưới[1] ra đời cùng với sự hình thành và phát triển của mạng Internet thế hệ thứ hai (Internet-II). Cũng giống như lịch sử hình thành và phát triển của mạng Internet hiện nay bắt đầu từ những năm 70 của thế kỷ trước, xuất phát điểm ban đầu của Internet là để phục vụ trao đổi thông tin khoa học - giáo dục giữa các trường đại học, viện nghiên cứu trên toàn thế giới. Nhưng sau đó, vào giữa những năm 1990, Internet đã được thương mại hoá bởi các Công ty Viễn thông và dịch vụ giá trị gia tăng. Hiện nay, các công nghệ mạng lưới (Grid Technologies) mới chỉ được giới khoa học – công nghệ biết đến qua các hoạt động nghiên cứu – phát triển và các thông tin từ các Hội nghị, Hội thảo điễn ra khá sôi động trong một thập kỷ trở lại đây. Tuy nhiên, các công nghệ mạng lưới mà trong đó tính toán lưới, cùng với mạng Internet thế hệ thứ hai đã được đông đảo giới khoa học – công nghệ và đặc biệt là các công ty CNTT-VT đa quốc gia lớn trên thế giới đánh giá rất cao.

Tính toán lưới hiện đang trên đà phát triển để trở thành nền tảng công nghệ chủ đạo của mạng Internet thế hệ mới, giữ vai trò giống như nghi thức TCP/IP đối với mạng Internet hiện nay. Các sản phẩm công nghệ trên nền mạng lưới đang được thương mại hoá để đưa ra ứng dụng rộng rãi trong tương lai gần. Công nghệ mạng lưới sẽ đưa mạng máy tính Internet ngày nay đến gần hơn với kiến trúc mạng lưới điện, nơi mà việc khai thác, sử dụng và cung cấp các tài nguyên tính toán cũng đơn giản như gắn thêm một thiết bị cung cấp/sửdụng điện mới vào mạng

Định nghĩa về tính toán lưới - Grid Computing

Tính toán lưới là một công nghệ cho phép các tổ chức ảo (Virtual organization) chia sẻ tài nguyên phân tán theo một mục đích chung mà không yêu cầu phải có 1 trung tâm điều khiển tập trung.

Tổ chức ảo có thể mở rộng từ những bộ phận nhỏ trong cùng 1 viện cho đến tổ chức gồm nhiều thành viên nằm rải rác khắp địa cầu. Một số tổ chức ảo như:

Đội thiết kế Blended Wing Body của hãng BoeingBộ phận quản lý sản phẩm Global VPN của hãng Worldcom có mặt trên 28 quốc gia.Phòng kế toán tài vụ của 1 công ty

Tài nguyên có thể là một tài nguyên tính toán như máy tính cá nhân, máy tính xách tay, trạm làm việc, máy chủ, nhóm máy tính (cluster), siêu máy tính hoặc có thể là tài nguyên lưu trữ như ổ đĩa cứng trong máy PC, các thiết bị lưu trữ chuyên dụng như RAID. Các thiết bị đo lường, bộ dò (sensor) cũng là 1 dạng tài nguyên cần chia sẻ. Thậm chí băng thông mạng, phần mềm cũng là tài nguyên của một tổ chức ảo.

Page 11: Baocao-luanvan final

Tổng Quan về Mô Hình Mạng Lưới

Hệ thống tính toán lưới là hệ thống phần cứng và phần mềm kết nối mạng máy tính thế hệ sau, cho phép chia sẻ các tài nguyên tính toán (conputing resources) của các máy tính nối mạng, làm tăng gấp nhiều lần hiệu năng và tốc độ xử lý thông tin. Tính toán lưới (Grid Computing) là công nghệ nền trong việc hình thành mạng lưới, là nền tảng phần mềm chạy trên nền các thiết bị phần cứng kết nối mạng truyền thống giúp xây dựng những ứng dụng mạng lưới có năng lực năng lực tính toán rất mạnh mẽ, có khả năng chuyển tải những khối lượng dữ liệu khổng lồ, khả năng lưu trữ và truy cập thông tin trên mạng mà bằng những giải pháp phần mềm và công nghệ mạng Internet truyền thống chỉ dựa trên nghi thức TCP/IP không thể đạt tới.

Hình 2. 1: Mô hình kiến trúc hệ thống lưới

Mạng lưới được xây dựng trên nền tảng kiến trúc mở và phân tầng (có thể so sánh với cấu trúc phân tầng của họ giao thức nền tảng trao đổi thông tin trên mạng Internet là TCP/IP). Trong mỗi tầng của mạng lưới, các thành phần được chia sẻ các thuộc tính chung và có thể được bổ sung những tính năng mới mà không ảnh hưởng đến các tầng khác:

Tầng tác chế (Fabric): giúp định vị các tài nguyên mạng lướiTầng kết nối (Connectivity): giúp kết nối mạng lưới trên các mạng

Tầng tài nguyên (Resource): giúp chia sẻ các tài nguyên mạng lưới

Tầng kết hợp (Collective): giúp kết hợp và định vị nhiều kiểu tài nguyên.

Tầng ứng dụng (Application): giúp kết nối các ứng dụng hướng người dùng để truy cập và sử dụng tài nguyên mạng lưới.

Page 12: Baocao-luanvan final

2.2 Globus Toolkit 4.0

Globus Toolkit 4.0 [4][5][6] như là một hiện thực của tính toán lưới.

Giới thiệu

Globus là phần mềm mã nguồn mở được dùng để xây dựng các hệ thống lưới và các ứng dụng trên nền tảng lưới. Bộ công cụ này cung cấp các dịch vụ và thư viện điểu khiển, khám phá và quản lý tài nguyên, quản lý tập tin, cung cấp các cơ chế bảo mật dữ liệu cho người dùng trong hệ thống lưới. Các dịch vụ, giao tiếp và giao thức của nó cho phép người dùng có thể dễ dàng truy xuất tới các tài nguyên ở xa ngay trên máy cục bộ của mình.

Globus được phát triển bởi tổ chức Globus Alliance, phiên bản 1.0 ra đời vào năm 1998, phiên bản gần đây nhất là phiên bản 5.0 ra đời vào tháng 1 năm 2010.

Kiến trúcCấu trúc của Globus gồm 3 nhóm dịch vụ chính, các dịch vụ này được truy xuất thông qua một tầng bảo mật GSI (security layer). Ba nhóm dịch vụ đó là: dịch vụ quản lý tài nguyên (Resource Management), dịch vụ quản lý thông tin (Information Service), dịch vụ quản lý dữ liệu (Data Management). Globus đóng gói các dịch vụ này lại với nhau, chúng có thể được sử dụng một cách độc lập hoặc kết hợp chung với nhau để phát triển ứng dụng.

Hình 2. 2: Kiến trúc của Globus Toolkit

Tầng local-service chứa các dịch vụ của hệ điều hành, dịch vụ mạng như TCP/IP… Tầng chính chứa các công cụ để xây dựng các cơ chế bảo mật, gửi các công việc để thực

Page 13: Baocao-luanvan final

thi (job submission), quản lý tài nguyên, quản lý thông tin tài nguyên. Tầng cao hơn cung cấp các dịch vụ và công cụ để tương tác với các dịch vụ bên dưới và hiện thực các chức năng còn thiếu.

Tầng bảo mật GSI

Tầng này cung cấp các phương thức xác thực của người dùng trong môi trường lưới và cơ chế bảo một trong trao đổi dữ liệu. Nó dựa trên nền tảng SSL, PKI và chuẩn X.509. Tầng GSI cung cấp các dịch vụ, giao thức và thư viện để thực thi các vấn đề bảo mật trong môi trường lưới như:

Xác thực một lần (single sign-on) trong việc sử dụng các dịch vụ của hệ thống lưới thông qua chứng nhận (certificate) của người dùng.Xác thực việc sử dụng tài nguyên thông qua certificate của host

Mã hóa dữ liệu

Ủy quyền

Người dùng muốn truy cập vào các tài nguyên của hệ thống lưới cần phải có một certificate subject ánh xạ với một tài khoản trên máy ở xa được cung cấp bởi người quản trị của hệ thống. Chứng thực này cần phải được ký bởi một tổ chức (CA) mà hệ thống tin tưởng. Hầu hết các dịch vụ đòi hỏi người dùng phải được xác thực trước khi sử dụng các chức năng của nó. Điều này đảm bảo việc chống thoái thác trách nhiệm và bảo mật dữ liệu cho cả người sử dụng lẫn hệ thống.

Quản lý tài nguyên (resource management)

Globus resource allocation manager (GRAM): GRAM cung cấp khả năng thực thi các công việc trên các máy ở xa, và trả kết quả thực hiện lại cho trình khách. Khi người dùng gửi một công việc lên gatekeeper deamon trên máy ở xa, thì gatekeeper deamon sẽ kiểm tra xem người dùng này đã được xác thực hay chưa. Nếu người dùng này đã được xác thực thì nó sẽ tạo một job manager để quản lý và điều khiển việc thực thi công việc này. Tùy thuộc vào biểu thời gian (scheduler) của hệ thống mà job manager có được tao ra ngay lập tức hay không. Có nhiều loại biểu thời gian như: Portable batch system (PBS), Load sharing facility (LSF), và Load Leveler. Trong GRAM chứa Globus resource specification language (RSL) dùng để chứa các thông tin về tài nguyên mà một công việc cần để thực thi như số lượng CPU, kích thước tối thiểu của bộ nhớ,…

Globus access to secondary storage (GASS): GASS là cơ chế truy cập tới các tập tin trong hệ thống, nó cho phép ứng dụng có thể đọc, ghi các tập tin trên hệ thống từ xa. GASS sử dụng GSI để đảm bảo đúng quyền hạn khi đọc ghi dữ liệu trên hệ thống.

Dịch vụ cung cấp thông tin của tài nguyên (Information services)

Page 14: Baocao-luanvan final

Gói này cung cấp thuộc tính của các nút (node) tham gia vào hệ thống lưới. Monitoring and discovery service (MDS) cung cấp các hổ trợ để thông báo và truy vấn các thông tin tài nguyên của hệ thống. MDS gồm ba tầng: tầng dưới cùng là Information providers (IPs), nó chịu trách nhiệm tập hợp dữ liệu về thông tin, trạng thái của tài nguyên; tầng thứ hai là Grid resource information service (GRIS), nó chịu trách nhiệm trả lời các truy vấn về thông tin của tài nguyên và cập nhật vào cache; tầng trên cùng là Grid information index service (GIIS), nó làm đề mục (index) cho thông tin tài nguyên được cung cấp bởi GRIS và GIIS khác mà đăng ký với nó.

Quản lý dữ liệu (Data management)

Gói này cung cấp các tiện ích và thư viện để truyền tải, lưu trữ và quản lý các tập dữ liệu lớn. Nó gồm 2 thành phần chính:

GridFTP: Đây là giao thức mở rộng của giao thức FTP nhằm đảm bảo dữ liệu được chuyển đổi trong môi trường lưới được bảo mật, đáng tin cậy và hiệu quả. Ngoài ra, nó được chạy trên tầng GSI nhằm đảm bảo quá trình truyền nhận được xác thực đúng người, đúng quyền.Replica location and management: thành phần này hỗ trợ một file có thể được lưu trữ nhiều nơi trong môi trường lưới. Replica location service (RLS) chịu trách nhiệm tạo và xóa các bản sao (replica)

Dịch vụ Myproxy

Dự án về MyProxy[14] bắt đầu từ năm 2000 nhằm cung cấp một kho chứng chỉ trực tuyến dùng cho các grid-portal và Globus Toolkit. Trước đây khi truy cập vào mỗi hệ thống tính toán lưới chúng ta phải có chứng chỉ lưu trên máy tính mà chúng ta đang sử dụng. Điều này nghĩa là trên nếu chúng ta ngồi trên một máy tính mà không có chứng chỉ để truy xuất vào hệ thống lưới thì chúng ta sẽ không truy cập được vào hệ thống lưới đó. Myproxy giúp chúng ta giải quyết đượcvấn đề này bằng cách sẽ lưu các chứng chỉ lên một kho chứng chỉ trực tuyến được gọi là Myproxy Server, từ đó khi chúng ta ở bất kì máy tính nào thì chúng ta đều có thể truy cập vào Myproxy Server để lấy chứng chỉ đó về và truy cập vào hệ thống bình thường.

Myproxy có thể được dùng bằng nhiều cách khác nhau. Sau đây là một số cách dùng của nó:

Page 15: Baocao-luanvan final

Hình 2. 3: Mô hình tổng quát của Myproxy service

Sau khi nhận được một chứng chỉ từ một cơ quan chứng thực (CA) ta có thể lưu chứng chỉ đó lên một kho chứng chỉ online được gọi là Myproxy server bằng lệnh myproxy-init. Về mặc định lệnh myproxy-init lưu một chứng chỉ có thời hạn 7 ngày nhưng bạn có thể gia tăng thời gian hiệu lực của chứng chỉ đó. Sau đó khi ta cần truy cập vào hệ thống lưới thì ta có thể lấy một chứng chỉ tạm thời từ myproxy server bằng lệnh myproxy-logon. Với giải pháp myproxy server chúng ta không cần phải sao chép chứng chỉ truy cập hệ thống lưới từ máy này qua máy khác vì việc này rất dễ gây ra lỗi và sẽ không đảm bảo an toàn cho việc truy xuất hệ thống lưới của chúng ta.

Hình 2. 4: Myproxy CA

Dùng MyProxy CA giúp chúng làm cho vấn đề lưu trữ chứng chỉ trở nên đơn giản hơn. Trong trường hợp này Myproxy CA vừa là nơi cấp các chứng chỉ cho người dùng vừa là nơi lưu các chứng chỉ đó tức là ta không cần phải lấy chứng chỉ người dùng được cấp từ CA rồi dùng lệnh myproxy-init để lưu chứng chỉ đó lên Myproxy Server rồi khi cần dùng thì ta phải gọi lệnh myproxy-logon để lấy một chứng chỉ tạm thời về máy của mình, mà ở đây với MyProxy CA ta chỉ cần một lệnh myproxy-logon là có thể lấy một chứng chỉ tạm thời từ Myproxy CA để phục vụ cho việc truy cập hệ thống lưới.

Hình 2. 5: Myproxy trong Grid-portal

Page 16: Baocao-luanvan final

Một grid-portal là một trang web cung cấp một giao diện cho nhiều dịch vụ khác nhau, cho phép người dùng truy cập vào hệ thống lưới để thực hiện các tác vụ tính toán từ xa, truyền tải file và truy vấn thông tin về các dịch vụ thông qua một trình duyệt web chuẩn. Có nhiều cách để Myproxy có thể được dùng với các grid-portal. Trường hợp tổng quát nhất để thông qua grid-portal truy cập đến hệ thống lưới đó là bạn đăng nhập vào portal và portal sẽ liên hệ với Myproxy Server để lấy một chứng chỉ để nó có thể truy cập đến hệ thống lưới với danh nghĩa của ta. Portal cần phải xác thực với Myproxy server để chứng minh rằng nó đang thay mặt ta để lấy chứng chỉ của ta về. Một phương thức có thể dùng đó chính là người dùng nhập thông tin của mình gồm username và password để đăng nhập vào portal, và sau đó portal sẽ dùng username và password này để xác thực bạn với Myproxy Server và lấy chứng chỉ của bạn về. Một cách khác đó chính là sau khi bạn đăng nhập vào portal thì portal sẽ cung cấp một giao diện để bạn cung cấp thông tin về chứng chỉ của bạn (hostname của Myproxy Server, username và password của chứng chỉ…), portal sẽ sử dụng những thông tin đó để xác thực với Myproxy Server để lấy chứng chỉ của bạn về.

Cơ chế hoạt động của Myproxy

Hình 2. 6: Cơ chế hoạt động của Myproxy

Client A muốn xác thực một username sử dụng một password. Thì client A gửi một request gồm username/password tới MyProxy server.

MyProxy Server sử dụng nhiều cơ chế khác để xác thực Username/Password trên. Có thể MyProxy Server sẽ kiểm tra các chứng chỉ của user này trên cơ sở dữ liệu của mình. Hoặc có thể xác thực user này thông qua các cơ sở dử liệu bên ngoài theo cơ chế Pluggable Authentication Module[7] hay Simple Authentication and Security Layer(SASL)[8].

Nếu việc xác thực thành công, MyProxy Server trả về một chứng chỉ mới cho user.

Client A sẽ tạo ra một Session Password P' để sử dụng trong lần kế tiếp nếu một ứng dụng nào đó đòi hỏi phải xác nhận Username.

Client sẽ lưu lại chứng chỉ lên MyProxy Server dưới tên là Username và password P'. Client A chỉ định thời gian tồn tại của chứng chỉ này. Đó cũng chính là thời gia hữu dụng của Sesion password P’. MyProxy Server tự động kiểm soát thời gian này.

Sau khi kết thúc quá trình trên Client A có một password P' dùng để truy cập vào các máy khác hoặc các dịch vụ khác trên hệ thống.Các dịch vụ này sẽ sử dụng

Page 17: Baocao-luanvan final

Username và password P' để xác thực user thông qua MyProxy server. Nếu sử dụng java API thì phương thưc này được cung cấp trong file SSOUtils.java.

Tổng quan về GRAM

Để người dùng ở xa thực thi một chương trình thông qua một dịch vụ web ta cần phải định nghĩa và cài đặt một dịch vụ web gồm một phương thức gọi thực thi chương trình từ xa, tuy nhiên để cài đặt được ta phải giải quyết các vấn đề sau:

State. Công việc tính toán có thể thực hiện các thao tác nhập/xuất trong khi chạy làm ảnh hưởng tới trạng thái của tài nguyên tính toán và/hoặc tới hệ thống tập tin gằn với công việc này. Do đó cần phải đảm bảo chỉ thực thi 1 lần: người dùng chỉ có thể gửi lại yêu cầu sau khi nhận được kết quả phản hồi.User executables. Người dùng có thể cung cấp chương trình của riêng họ để gửi thực thi từ xa.

Staging of input and output. Chương trình thực thi, dữ liệu vào/ra có thể lớn, ở xa, và/hoặc được chia sẻ với các lời gọi thực thi khác. Vì thế yêu cầu bố trí dữ liệu vào/ra là cần thiết.

Streaming output. Một số chương trình thực thi cần được cung cấp khả năng cung cấp kết quả kịp thời cho người dùng khi đang chạy. Vì vậy người dùng phải được thông báo thường xuyên về dữ liệu ra của chương trình đang chạy.

Control. Người dùng đôi khi cần ngưng 1 công việc đang thực thi vì 1 lý do nào đó.

Scheduler. Các tài nguyên tính toán lớn thường chịu sự điều khiển của 1 bộ lập lịch để cấp phát tài nguyên theo các chính sách ưu tiên một cách tối ưu về hiệu năng.

Monitoring. Đối với 1 số công việc (job/task) phức tạp cần được theo dõi quá trình thực thi và các thao tác can thiệp kịp thời như pending, suspending, staging…

GT4 cung cấp một dịch vụ dùng để quản lý và cấp phát tài nguyên - Grid Resource Allocation and Management[10] (GRAM) nhằm đáp ứng các yêu cầu này. Thông thường GRAM được triển khai cùng với các gói MyProxy và RFT để đáp ứng thêm được yêu cầu về bảo mật, xác thực và trao đổi dữ liệu grid

Hệ thống GRAM kết hợp với các công cụ quản lý đã có được phát triển nhằm giải quyết các yêu cầu trên. GRAM cho phép:

Thực thi 1 chương trình bất kỳ, Hoàn thành các thao tác tin cậy,

Page 18: Baocao-luanvan final

Thực hiện theo dõi các trạng thái,

Quản lý ủy nhiệm thư,

Bố trí tập tin và

Tương tác với các bộ lập lịch đã có.

Cách thức hoạt động của GRAM

Hình 2. 7: Cấu trúc cài đặt của GRAM

Trong hình trên, các thành phần chính của GRAM gồm:

Tập các dịch vụ chạy trên GT4 Java container:Dịch vụ tạo, theo dõi và quản lý công việc

Dịch vụ đại diện nhằm quản lý các uỷ nhiệm thư

Dịch vụ chuyển tập tin tin cậy (RFT) quản lý dữ liệu vào/ra của công việc.

Một bộ tương thích lập lịch (GRAM adapter) để ánh xạ yêu cầu GRAM thành yêu cầu tương ứng tới bộ lập lịch địa phương (đã có sẵn).

Page 19: Baocao-luanvan final

GridFTP server dùng để thực thi các lệnh bố trí dữ liệu vào/ra của công việc.

Sử dụng cơ chế WS-Resource[11]

Các dịch vụ Web trong GT4 container dùng WS-Resource để biểu diễn trạng thái gắn công việc (“ManagedJobs”), uỷ nhiệm thư, và quá trình trao đổi dữ liệu đang diễn ra.

Vấn đề bảo mật

GRAM hỗ trợ các mức độ kiểm tra an toàn bảo mật:

Cơ chế WS-Sercurity nhằm xác nhận những uỷ quyền gắn với yêu cầu và cũng để xác thực người yêu cầu.Phân quyền được thực hiện bằng 1 callout cấp quyền. Callout này sẽ truy vấn file gridmap, SAML server, hay 1 cơ chế cấp quyền khác.

Nếu có đủ quyền, công việc sẽ được thực thi và trả về 1 số hiệu ID cục bộ. Lệnh tiện ích sudo sẽ được dùng để quản lý tài nguyên cục bộ.

Các dịch vụ chạy trong GT4 container không yêu cầu 1 quyền đặc biệt: các thao tác cần quyền cao sẽ được thực hiện qua hàm “sudo”.Để tránh sự can thiệp của người dùng khác, công việc (job) được gửi đi thường được thực thi trong 1 bối cảnh an toàn tách biệt: ví dụ như dưới quyền của người dùng UNIX cụ thể dựa vào yêu cầu của công việc và chính sách cấp quyền. Để hỗ trợ việc tính tiền, theo dõi và ngăn chặn tấn công từ bên ngoài, GRAM cung cấp các kỹ thuật thanh toán (audit), và ghi chép (logging) nhằm lưu trữ quá trình hoạt động của hệ thống đặc biệt là các thao tác quan trọng.

Thao tác liên quan tới dữ liệu

Các thao tác liên quan tới việc bố trí dữ liệu vào/ra của công việc được GRAM giao cho dịch vụ RFT đảm nhiệm. Tuỳ theo yêu cầu, dịch vụ RFT khởi tạo kết nối GridFTP giữa máy nguồn và đích.

Ngoài các thao tác bố trí dữ liệu chuẩn, GRAM còn hỗ trợ cơ chế cập nhật dữ liệu ra (standard output) 1 cách liên tục khi công việc đang tiến hành.

2.3 Single Sign On

Khái niệm

Page 20: Baocao-luanvan final

Single Sign-On[12] (SSO) là giải pháp phần mềm chứng thực tập trung đối với các ứng dụng chạy trên các platform khác nhau. Khi đó, người dùng chỉ sử dụng 1 tài khoản (ID) để được chứng thực và xác nhận quyền sử dụng tài nguyên của hệ thống.

Với hệ thống có nhiều website và application thì việc sử dụng Single Sign On (SSO) là khá cần thiết nhằm đem lại nhiều thuận tiện cho người dùng và tăng tính năng bảo mật.

Lợi ích

Tránh việc nhớ nhiều thông tin đăng nhập (username & password) khi dùng nhiều dịch vụ.Tiết kiệm thời gian khi tái lập lại mật khẩu cho một người dùng (identity user).

Bảo mật tất cả các cấp độ của việc thoát hay truy xuất vào hệ thống.

Người phát triển ứng dụng không cần phải hiểu và thực hiện nhận dạng bảo mật trong ứng dụng của họ.

Hình 2. 8: Dịch vụ Single Sign On

Ví dụ: Trong trường học, người dùng sử dụng nhiều dịch vụ Đăng ký môn học, xem điểm, xem thời khóa biểu được phát triển và lưu trử trên các ứng dụng khác nhau,ứng mỗi dịch vụ ta có một tài khoản riêng. Nếu không sử dụng SSO thì với mỗi dịch vụ ta đều phải nhập thông tin để xác thực. Khi một tổ chức đã thống nhất sử dụng SSO cho tất cả các

Page 21: Baocao-luanvan final

dịch vụ của họ thì người dùng chỉ cần đăng nhập một lần duy nhất trên bất kỳ dịch vụ nào trong tổ chức, thì khi truy xuất những dịch vụ khác, người dùng không cần phải đăng nhập lại.

SSO có thể được sử dụng dưới các dạng:

Single Domain: Khi xác thực thành công vào domain.com, người dùng đồng thời được xác thực vào các sub-domain.domain.com tồn tại.Multi Domain: Khi xác thực thành công vào facebook.com, người dùng đồng thời được xác thực vào example.com

SSO thường sử dụng Cookie để nhận diện, webserver (hay webgate) gửi cookie đã được mã hóa cho browser đã xác thực thành công, cookie này sẽ là chìa khóa sử dụng cho các xác thực tới các tài nguyên khác hoặc cho các xác thực có cùng cấp.

Phần Cookie được mã hóa có thể bao gồm các thông tin: session, distinguished name của người dùng đã xác thực thành công, IP của client đã yêu cầu, thời điểm khởi tạo cookie, thời điểm sửa đổi cookie.. các thành phần không mã hóa của cookie có thể bao gồm: thời gian expired, domain hoạt động, SSL/ Httponly…

Thuật toán mã hóa được recommend hiện nay là AES,  bên cạnh là các thuật toán kém bền vững hơn nhưng thông dụng như MD5-salt, RC4, RC6 vẫn được sử dụng phổ biến trong các mã hóa cookie/ session.

Single Domain SSO

Cookie Path được cấu hình để dùng chung cho mọi subdomain: .domain.com (bao gồm dấu . ở đầu)

Hình 2. 9: Mô hình Single Domain SSO

Page 22: Baocao-luanvan final

Multi Domain SSO

Multi Domain SSO cho phép người dùng truy cập vào nhiều domains/hosts sau 1 lần đăng nhập. Một ứng dụng xác thực chính sẽ cung cấp các cookie hợp lệ cho mỗi domain.Chẳng hạn người dùng truy cập vào gmail.com, khi đó toàn bộ services của Google, như Google.com, Picasa, Blogspot… đều nhận diện tính xác thực cho người dùng đó.

Tuy nhiên cùng một cookie không thể được thiết đặt cho các domain khác nhau do chính sách bảo mật của hầu hết browser, do đó một domain chính sẽ được chọn để xác thực ở mọi quy trình, gọi chung là master domain. Với mỗi domain khác mà người dùng thực hiện quá trình xác thực, mỗi webgate của hệ thống đó sẽ chuyển yêu cầu tới master domain để xem đã yêu cầu đến từ user đó đã được xác thực chưa trước khi cho truy cập vào hệ thống.

Master domain sẽ hoạt động như quy trình của Single Domain SSO, nó chính là “proxy” để truyền tải cookie hợp lệ về cho mỗi domain có yêu cầu xác thực.

Hình 2. 10:Mô hình Multi Domain SSO

Các bước hoạt động:

Ta thiết đặt master domain, login-service.domain.com.Mỗi một domain nằm trong group SSO đều có script login riêng.

Mọi hệ thống trên mỗi domain đều sử dụng chung Session Database.

Page 23: Baocao-luanvan final

Khi mỗi Client yêu cầu người dùng xác thực, Webgate của nó sẽ redirects tới master domain có chứa login service. Nếu người dùng chưa đăng nhập, master domain sẽ triệu gọi script login của webgate mà user vừa mới gởi yêu cầu để thực hiện việc login vào master domain. Khi người dùng đã xác thực, một session sẽ được tạo trong database và master domain sẽ cung cấp session id cho client yêu cầu để có thể tạo cookie theo session đó.

Ta có thể mô tả hoạt động của Multi Domain SSO ở hình 2 như sau:

Bước 1: User gởi yêu cầu truy cập tới WebGate1 có domain là host1.domain1.com.Bước 2: WebGate1 trả lại địa chỉ của Master Domain chính là WebGate2 có domain là host2.domain2.com.

Bước 3: Yêu cầu đăng nhập tự động chuyển từ Browser đến WebGate2 và WebGate 2 yêu cầu user xác thực, tạo ra SSOcookie và được lưu ở WebGate2.

Bước 4: WebGate2 trả về cho Browser SSO cookie.

Bước 5: Browser tự động sử dụng SSOcokie đó để truy cập vào WebGate1.

Bước 6: Nội dung cần truy cập được trả về cho Browser.

Bước 7: Nếu vẫn là User’s Browser đó yêu cầu truy cập vào Webgate 3 thì nó sẽ gởi đi yêu cầu truy cập cùng SSOcookie đã được tạo ra ở bước 4, yêu cầu và SSOcookie vẫn được chuyển tới WebGate2 nhưng lúc này SSOcookie được gởi tới trùng với SSOcookie được lưu ở WebGate2 nghĩa là User đó đã được xác thực nên lúc này sẽ không yêu cầu xác thực lại mà sẽ tự động chuyển yêu cầu truy cập đễn WebGate3 để truy cập vào hệ thống WebGate3.

2.4 Tổng quan về sakai

Năm 2004, Quỹ tài trợ Mellon Foundation quyết định tài trợ cho bốn trường đại học hàng đầu ở Mỹ, Đại học Michigan, Indiana University,Viện Công nghệ Massachusetts và Đại học Stanford để hợp tác phát triển một hệ thống nền mã nguồn mở như một môi trường phần mền để phát triển các công cụ hổ trợ cho việc giảng dạy, học tập, và nghiên cứu khoa học. Sau đó thì đại học California tại Berkeley cũng tham gia phát triển. Từ đó dự án Sakai[5] chính thức được ra đời. Ngày nay có tới cả triệu cá nhân thuộc các trường đại học và các tổ chức tham gia hợp tác xây dựng hệ thống Sakai. Cùng với đó là một lượng rất lớn người dùng sử dụng Sakai như một phần trong công việc giảng dạy, học tập, nghiên cứu trên khắp thế giới.

Page 24: Baocao-luanvan final

Hình 2. 11: Sakai Portal

Sakai CLE (Collaboration and Learning Environment - CLE). là một phần mềm giáo dục miễn phí, mã nguồn mở được phân phối theo Giấy phép Giáo dục Cộng đồng (Educational Community License - một kiểu của giấy phép mã nguồn mở). Sakai CLE được dùng để dạy học, để nghiên cứu và để cộng tác nhiều người với nhau. Hệ thống này là một dạng của Hệ quản trị đào tạo (Learning Management System - LMS).

Tính năng của sakai

Page 25: Baocao-luanvan final

Hình 2. 12:Một số tính năng của Sakai

Sakai bao gồm nhiều tính năng chung của các Hệ quản trị đào tạo(tham khao), bao gồm đưa lên các tài liệu hướng dẫn, sách giáo trình, mục thảo luận, chat trực tuyến, bài tập lớn, và các bài kiểm tra online…

Thêm vào đó, Sakai còn cung cấp một bộ công cụ làm việc nhóm dùng cho nghiên cứu và các dự án nhóm. Để hỗ trợ các tính năng này, Sakai đã thêm vào khả năng thay đổi thiết lập của tất cả mọi công cụ dựa trên vai trò, thay đổi quyền hệ thống tùy theo người dùng. Nó cũng tích hợp một wiki, mailing list và lưu trữ, và bộ đọc RSS. Chính các chức năng này mà dự án Vn-Grid muốn tạo một cộng đồng nghiên cứu khoa học dựa vào Sakai ở đó ngoài những tính năng trên người dùng có thể truy cập vào hệ thống tính toán lưới để tận dụng sức mạnh tính toán phục vụ cho nhu cầu nghiên cứu khoa học.

Bộ công cụ làm việc nhóm tích hợp trong nhân của Sakai:

Announcements - để thông báo cho người dùng về những vấn đề chính yếuDrop Box - cho phép giảng viên và học viên trao đổi tài liệu với những thư mục riêng biệt cho mỗi sinh viên

Email Archive - tất cả tin nhắn gửi đến địa chỉ email của trang web sẽ được lưu trữ tại đây

Resources - chia sẻ nhiều loại thông tin yêu cầu độ bảo mật với các thành viên trong trang, hoặc cho phép nó được nhìn thấy bởi mọi người.

Page 26: Baocao-luanvan final

Chat Room - chat thời gian thực cho mọi thành viên đang đăng nhập vào site

Forums - công cụ để cho giảng viên và thành viên được cấp quyền có thể tạo ra các mục thảo luận

Threaded Discussion

Message Center - công cụ giao tiếp cho phép các thành viên sử dụng mail nội bộ

Message Of The Day

News/RSS - công cụ đọc RSS

Poll tool - cho phép người dùng bình chọn trực tuyến

Preferences

Presentation - cho phép thực hiện thuyết trình trực tuyến

Profile / Roster - hồ sơ người dùng, bao gồm hình ảnh, tên tuổi và các thông tin khác

Repository Search - tìm kiếm thông tin được lưu trữ trên site

Schedule - cho phép giảng viên đưa thông tin dưới dạng thông tin trên lịch

Ngoài những công cụ trên Sakai còn rất nhiều các bộ công cụ khác phục vụ cho việc giảng dạy và bổ trợ giảng dạy.

Kiến trúc của Sakai[13]:

Sakai không chỉ mà một môi trường hợp tác trong giáo dục mà còn là một framework cho việc phát triển các tool như Wiki, chat tool…một cách đơn giản nhất có thể. Sakai được xây dựng trên nền như một ứng dụng java bằng tất cả các framework và kiến trúc hiện đại nhất như Spring, Hibernate, Servlets, Java Server Faces …. Về mặt vật lý, Sakai được đặt trong Tomat server giữ vai trò reponse và request cho ứng dụng chạy trên Sakai. Hình dưới là một số hình tổng quan về kiến trúc của Sakai:

Page 27: Baocao-luanvan final

Aggregator

Presentation

Tools

Services

Client

System

The

Abs

trac

t Sak

ai E

nviro

nmen

t

Th

e S

aka

i Fra

me

wor

k

InternalAggregator

ToolPresentation

Tool Code

ApplicationServices

FrameworkServices

PresentationSupport

Th

e S

aka

i Too

l En

viro

nmen

t

ExternalAggregator

System

Hình 2. 13: Mô hình trừu tượng Sakai

Th

e S

aka

i Fra

mew

ork

Servlet/HTMLRenderer

Java ServerFaces in JSP

Java Tool LogicJava Beans

Sakai ApplicationServices

Sakai JSFWidget Set

Th

e S

aka

i To

ol E

nvi

ronm

ent

Portals viaiFrame

Sakai/OKIAPIs

SakaiStand-Alone

JSR-168Renderer

WSRPRenderer

uPortal viaJSR-168

uPortal viaWSRP

?????Renderer

????? via????

Hình 2. 14: Sakai Framework

Lớp Aggregation

Page 28: Baocao-luanvan final

Mở Sakai lên trong mỗi user như hình dưới cho thấy rằng mỗi user phải làm việc với nhiều Sites.(hình)

Trong mỗi site đó lại có nhiều trang và tool khác nhau (hình nhỏ). Do đó lớp Aggregation này có chức năng tổng hợp các mảnh giao diện từ các trang và tool khác nhau để cho ra một trang web tổng thể cho user. Ngoài ra lớp Aggregation này còn cho phép user tùy chọn cách trình diễn của các mảnh giao diện trên theo ý người dùng.

Lớp Presentation

Bên dưới lớp Aggregation là lớp Presentation chứa một bộ các thành phần cấu thành một trang của Sakai. Tham khảo hình dưới là một ví dụ các thành phần giao diện trong lớp Presentation tập hợp trong một file JSP.

<sakai:view_container title="#{msgs.sample_title}">

<sakai:tool_bar> <sakai:tool_bar_item/> </sakai:tool_bar>

<sakai:instruction_messagevalue="#{msgs.sample_one_instructions}" />

<sakai:group_box title="#{msgs.sample_one_groupbox}">

<h:inputText value="#{MyTool.userName}" />

<sakai:date_input value="#{MyTool.date}" />

<sakai:button_bar><sakai:button_bar_itemaction="#{MyTool.processActionDoIt}value="#{msgs.sample_one_cmd_go}" /></sakai:button_bar>

Hình 2. 15: Lớp Presentation của Sakai

Các công nghệ hiện sử dụng ở lớp Presentation là JSF, JSP, Velocity,và Struts, RSF.

Lớp Tool

Tool là một đơn vị chức năng rời rạc trong Sakai ví dụ như tool announcement, wiki…Mỗi tool giúp đáp ứng một chức năng nào đó của người dùng. Các tool thao tác trên dữ liệu của mình bằng các dịch vụ cơ bản cung cấp ở lớp service. Chức năng của Sakai kernel là quản lí các dịch vụ và các tool. Sakai cho phép các nhà phát triển có thể tự xây dựng các dich vụ riêng của mình. Do đó khi một dịch vụ mới hay một tool mới được xây dựng thì phải đăng kí với Sakai Kernel. Ví dụ ta đang chạy Sakai mà copy vào thư mục wedapp/toolApp thì ngay lập tức toolApp sẽ được đăng ki với Sakai Kernel. Các tool này được xây dựng dựa trên các dịch vụ bên dưới của lớp Service.

Page 29: Baocao-luanvan final

Lớp services

Việc thiết kế lớp dich vụ nhằm giúp đơn giản hóa quá trình phát triển Sakai che dấu đi các hiện thực chi tiết bên dưới của Sakai. Nhà phát triển ứng dụng trên Sakai chỉ cần dựa trên các dich vụ được cung cấp. Ví dụ như một tool không cần biết kiểu cơ sở dử liệu bên dưới là MySQL hay Oracle… hay hệ thống file nào được các dịch vụ sử dụng và đặt ở đâu. Các service cơ bản của Sakai như dịch vụ lấy, xóa, thêm một user hay thông tin về các môn học. Hoặc ví dụ người phát triển có thể phát triển một dịch vụ thêm, điều chỉnh, xóa trên sổ lớp. Từ đó các tool khác có thể sử dụng các dịch vụ này để thay đổi sổ lớp hay chẳng hạn viết một công cụ in sổ lớp dưới những định dạng khác nhau dựa trên dịch vụ đã có. Còn làm thế nào để xây dựng các dịch vụ này người đọc có thể tham khảo chương 11 của tài liệu tham khảo[Sakai-Courseware-Management-the Official-Guide].

Nhìn một các tổng quát thì Sakai như một bó khổng lồ các ứng dụng web chạy cùng một servlet container, cùng chia sẽ các dịch vụ trung tâm. Khi một trình duyệt gửi một request; một ứng dụng sẽ nhận request đó, làm một vài công việc, xong trả về một respone chứa những thông tin mà request yêu cầu. Quá trình này nhìn chung là khá phưt tạp trước hết request từ web browser sẽ đi qua một bột Aggregator ở lớp Aggregator sau đó sẽ chia request thành nhiều request nhỏ để chỉ định cho các tool, sau đó các tool này sử dụng các dịch bên dưới và trả về các kết quả mong muốn. Cuối cùng bộ Aggregator sẽ thu thập các kết quả trả về của các tool đó để trả về một response cho người dùng ở web Browser ,thông thường là một trang web.

2.5 Tổng quan về OGCE portal

OGCE portal là một portal cung cấp các portlet và tool dùng để truy cập vào hệ thống Grid Computing thông qua môi trường web. OGCE portal được phát triển dựa trên bột thư viện Java Cog Kit. Nó bao gồm nhiều portlet như ProxyManager, JobSubmission, FileManager, Grid Information, Comp-file Manager… và các tool khác axis2, balancer, applets…

Hình 2. 16: Các portlet đặc trưng của OGCE portal

Page 30: Baocao-luanvan final

Hình 2. 17: Portlet Myproxy Manager của OGCE portal

Portlet proxymanager dùng để quản lý các chứng chỉ proxy của user. Chỉ khi chứng chỉ của user được load lên trong proxymanager portlet thì các portlet khác sẽ sử dụng chứng chỉ này đề xác thực và trở nên sẵn sàng để sử dụng.

Hình 2. 18: Portlet Comp-file-management của OGCE portal

Page 31: Baocao-luanvan final

Portlet Comp-file-management dùng để truyền file giữa các tài nguyên Grid, upload file lên một tài nguyên Grid, download file từ tài nguyên Grid về máy.

Kiến trúc OGCE portal

OGCE portal sử dụng Gridsphere container như một portlet container để quản lý tất cả các Grid portlet trong OGCE portal. Do đó các portlet đều phát triển trên nền Gridsphere, ngoài tuân thủ chuẩn JSR 168, còn portlet còn phải tương thích với Gridsphere và sử dụng một vài gói thư viện để chạy như gridsphere-tag.jar…

Hình 2. 19: Kiến Trúc của OGCE portal

Như hình ở trên tất cả các các portlet khác của portal đều phải sử dụng MyProxy Manager để lấy chứng chỉ trước khi sẵn sàng. Các portlet này sẽ giao tiếp với Globus Tool Kit 4.0 bằng bộ thư viện interface cung cấp cho client là java CoG API. Vì tất cả các portlet JSR 168 này đều khả chuẩn từ Gridsphere framework sang uPortal. Do đó để chạy các portlet JSR 168 này trong pluto container ở trong Sakai là hoàn toàn có cơ sở. Vì pluto về bản chất là một bản thu gọn của uPortal.

2.6 Tổng quan về Axis Service

Trước hết tại sao nhóm phải giới thiệu gói dịch vụ Axis[14] ở đây là vì trong quá trình thực hiện đề tài thì nhóm gặp lỗi liên quan đến gói dịch vụ này của apache tomcat. Cũng chính lỗi đó mà nhóm đã tốn rất nhiều thời gian để debug.

Page 32: Baocao-luanvan final

Apache Axis là một gói dịch vụ dùng để điều khiển luồn dữ liệu vào và ra portal. Vì các dữ liệu lưu thông trên portal đều đưa về dạng một file XML,ví dụ như các giá trị, thuộc tính của các Java Object, theo một giao thức nào đó cùng với thông tin phụ đi kèm để truyền đi đến các dịch vụ. Do đó để điều khiển các luồn vào ra này thì bên dưới Apache cung cấp một gói gọi là Axis ở cả client và server để điều phối dữ liệu.

Trước hết xin gới thiệu hình mô tả cấu trúc bên trong của Axis

Hình 2. 20: Kiến trúc của Axis Services

Hình trên là quá trình hoạt động của Axis Engine bên phía server. Một message đến tại Transport Listener. Trong trường hợp này ta xem nó là một HTTP servlet . Công việc của Listener là sẽ đóng gói request đó thành một Message rồi đặt Message này vào một class gọi là MessageContext. Trong MessageContext chứa Message còn chứa nhiều thuộc tính khác được Listener thiết lập. Khi MessageContext đã được xây dựng thành công thì nó được truyền qua bộ AxisEngine. Công việc của AxisEngine là xác định được service bên dưới mà request cần và trả về một reponse cho Listener. Thông tin chi tiết về cấu tạo các class bên trong xin xem thêm tài liệu tham khảo, mô tả chi tiết các quá trinh tạo Message và truyền message.

Page 33: Baocao-luanvan final

2.7 Chuẩn portlet JSR 168

Chuẩn portlet JSR 168[15] dùng để định nghĩa portlet và cách thức giao tiếp giữa portlet và portal.

Hình 2. 21: Mô hình chuẩn của JSR 168

Hình trên mô tả sự giao tiếp giữa portal và các portlet. Sự giao tiếp này được thực hiện thông qua các API được cung cấp bởi chuẩn JSR 168.Một số khái niệm chính:

Portal Portal là một ứng dụng web dùng để tích hợp các nội dung từ các nguồn khác nhau vào cùng một trang web. Các nội dung có thể được cấu hình tùy thuộc vào người sử dụng khác nhau mà Portal cho phép. Một Portal có thể chứanhiều Portlet.

PortletPortlet là một thành phần dựa trên nền Web sử dụng các công nghệ của Java. Portlet được quản lý bởi một Portlet Container. Portlet dùng để xử lý các yêu cầu và tạo ra các thành phần dữ liệu động để phản hồi các yêu cầu.

Portlet có thể tích hợp vào Portal và Portal sẽ cung cấp tầng trình diễn cho các thành phần của Portlet.

Page 34: Baocao-luanvan final

Nội dung được tạo ra bởi các Portlet được gọi là Fragment. Một Fragment là một mảnh dữ liệu được tạo ra bởi các ngôn ngữ như: HTML, XML… theo một định dạng được quy định. Các Fragment này có thể được kết hợp với các Fragment của các Portlet khác để hình thành trang Web của portal.

Người sử dụng tương tác với Portlet thông qua cơ chế yêu cầu/phản hồi được cung cấp bởi Portlet. Nội dung phản hồi yêu cầu được Portlet tạo ra và nội dung này cũng tùy thuộc vào cấu hình ứng với từng người sử dụng.

Portlet Container

Portlet Container cung cấp một môi trường để chứa đựng và quản lý chu kỳ sống của một Portlet.

Portlet Container nhận yêu cầu từ Portal và chuyển yêu cầu này đến Portlet tương ứng để Portlet xử lý yêu cầu và tạo nội dung phản hồi.

Giao diện Portlet

Giao diện Portlet khai báo các API cơ bản nhất của một Portlet. Mọi Portlet được xây dựng đều phải hiện thực hóa trực tiếp hoặc gián tiếp giao diện Portlet.Lớp GenericPortlet hiện thực hóa giao diện Portlet và định nghĩa các chức năng cơ bản nhất mà một Portlet cần có. Do đó khi xây dựng Portlet, lập trình viên nên mở rộng trực tiếp hoặc gián tiếp lớp GenericPortlet này.

Một Portlet được quản lý thông qua chu trình sống của nó bắt đầu từ lúc Portlet được tải lên, tạo thể hiện của nó và khởi tạo, hoạt động để phản hồi yêu cầu của người sử dụng đến lúc nó được loại bỏ. Các phương thức được gọi đến trong chu trình sống của Portlet là:

Gọi Phương thức init trong quá trình khởi tạo Portlet.Nêu yêu cầu do máy khách gởi tới là yêu cầu hành động( Action Request) thì phương thức processAction được gọi. Nếu yêu cầu do máy khách gởi tới là yêu cầu biểu hiện ( Render Request) thì phương thức render được gọi

Khi Portlet Container xác định một Portlet không còn sử dụng nữa thì gọi đến phương thức destroy của Portlet đó. Khi phương thức destroy được gọi thì Portlet sẽ giải phóng tài nguyên mà nó đang sử dụng và lưu lại trạng thái hiện thời của nó.

Portlet URL

Một Portlet có thể tạo ra URL tham chiếu đến chính Portlet đó. Khi đó các URL này được gọi là Portlet URL.

Page 35: Baocao-luanvan final

Để tạo ra một Portlet URL thì Portlet cần phải sử dụng đối tượng PortletURL. Nếu phương thức createActionURL được gọi thì sẽ tạo ra một Action URL và nếu phương thức createRenderURL được gọi thì sẽ tạo ra một render URL.Portlet Mode

Kiểu portlet xác định chức năng mà Portlet đó đang thực hiện. Thông thường Portlet thực hiện các tác vụ và tạo ra nội dung tùy thuộc vào chức năng hiện thời. Kiểu Portlet cho ta biết những tác vụ nào một Portlet cần thực hiện và những nội dung nào Portet cần phải tạo ra.

Có 3 kiểu Portlet được quy đinh là:

VIEW:

Chức năng chính của Portlet khi sử dụng kiểu VIEW là tạo ra nội dung cho biết trạng thái của Portlet.

Lập trình viên sẽ hiện thực hóa kiểu VIEW bằng cách định nghĩa lại phương thức doView của lớp GenericPortlet.Mọi Portlet đều phải hỗ trợ mode VIEW .

EDIT:

Trong kiểu EDIT, một Portlet sẽ cung cấp nội dung và cấu hình các thành phần của nó để người sử dụng có thể tối ưu hóa hoạt động của Portlet.

Lập trình viên sẽ hiện thực hóa kiểu EDIT bằng cách định nghĩa lại phương thức doEdit của lớp GenericPortlet.

Mọi Portlet không nhất thiết phải hỗ trợ kiểu EDIT.

HELP

Trong kiểu HELP, Portlet cung cấp những tin về Portlet. Những thông tin này thường là những thông tin chung về toàn bộ Portlet.

Portlet Request

Một yêu cầu gởi đến Portlet chứa các thông tin về yêu cầu từ phía máy khách, các tham số của yêu cầu, nội dung dữ liệu yêu cầu, kiểu Portlet, trạng thái cửa sổ…Yêu cầu được đại diện bởi một đối tượng và đối tượng này được truyền vào như là đối số của phương thức procesAction hay render.

Mỗi đối tượng yêu cầu chỉ có thể hoạt động trong phạm vi của một phương thức processAction hay render.

Page 36: Baocao-luanvan final

Các chức năng cần thiết của đối tượng PortletRequest được khai báo trong giao diện PortletRequest.

Portlet Respone

Một phản hồi của Portlet bao gồm những thông tin được tạo ra bởi Portlet gởi trả về cho Portlet Container dựa trên yêu cầu được gởi đến như: sự thay đổi kiểu Portlet, tiêu đề, nội dung… Portlet Container sẽ sử dụng những thông tin này để tạo ra phản hồi đến người sử dụng, thông thường là một trang Web Portal.Mỗi đối tượng phản hồi chỉ có thể hoạt động trong phạm vi của một phương thức procesAction hay render.

Các chức năng cần thiết của đối tượng Portlet Respone được khai báo trong giao diện PortletRespone.

Portlet Preferences

Portlet thông thường được cấu hình cho phù hợp với từng người sử dụng. Các thông tin về cấu hình của Portlet được gọi là Portlet Preference. Portlet Container sẽ chịu trách nhiệm lưu giữ những thông tin cấu hình này.Portlet có thể truy cập vào các thông tin cấu hình của nó thông qua giao diện PortletPreferences và Portlet chỉ có thể thay đổi các thônt tinh về cấu hình của nó bên trong phương thức processAction.

Định nghĩa Portlet xác định các thuộc tính preference mà một Portlet sử dụng. Định nghĩa này bao gồm các giá trị khởi tạo và xác định xem thuộc tính này có phải là thuộc tính chỉ đọc hay không.

Caching

Việc lưu các nội dung cần sử dụng vào vùng nhớ tạm thời được thực hiện nhằm mục đích rút ngắn thừoi gian xử lý của Portlet, đồng thời cũng rút ngắn thời gian xử lý của Server.Đặc tả Portlet xác định cơ chế hết hạn việc lưu trữ nội dung lưu tạm thời này. Cơ chế này hoạt động tùy thuộc vào từng Portlet và từng người sử dụng Portlet. Nội dung được lưu trữ tạm thời không được chia sẻ giữa các người sử dụng khác nhau đang sử dụng đồng thời cùng một Portlet.

Một Portlet muốn tăng thời gian xử lý bằng cách sử dụng cơ chế lưu trữ tạm thời nội dung cần phải định nghĩa thời gian hết hạn của nội dung lưu tạm thời ( tính bằng đơn vị giây) trong đặc tả triển khai của nó. Ví dụ sau đây cho biết một Portlet muốn nội dung của nó được lưu trữ tạm thời và có thời gian hết hạn là 300 giây.…

<portlet>…<expiration-cache>300</expiration-cache>…

</portlet>…

Page 37: Baocao-luanvan final

Một Portlet nếu đã định nghĩa thời gian hết hạn lưu trữ dữ liệu tạm thời của nó trong đặc tả triển khai của nó vẫn có thể thay đổi được.Thời gian hết hạn của việc lưu trữ tạm thời này có thể được thay đổi bằng cách thay đổi thuộc tính của đối tượng RenderResponse.

Nếu thời gian hết hạn này được gán bằng 0 thì việc lưu trữ dữ liệu tạm thời bị bỏ qua đối với Portlet. Nếu giá trị này được gán bằng -1 thì các nội dung lưu trữ tạm thời của Portlet sẽ không bao giờ bị hết hạn.

Nêu một Portlet không định nghĩa thời gian hết hạn của dữ liệu lưu trữ tạm thời trong đặc tả triển khai của nó thì việc thay đổi giá trị thời gian này trong đối tượng RenderResponse sẽ không có tác dụng do sẽ bị Portlet Container bỏ qua.

Nếu nội dung của Portlet được lưu trữ tạm thời và chưa hết hạn, đồng thời không có một yêu cầu nào đến Portlet từ phía người sử dụng thì Portlet Container sẽ sử dụng nội dung được lưu trữ tạm thời khi cần thiết.

Ứng dụng Portlet

Ứng dụng Portlet là một ứng dụng Web nên ngoài việc bảo gồm Portlet và đặc tả triển khai Portlet, nó còn có thể chứa các thành phần khác như: Servlet, trang JSP, các class… Do đó, bên cạnh các thông tinh về ứng dụng Portlet, nó còn chứa đựng thông tin về các thành phần được đưa vào ứng dụng Portlet.

Cấu trúc cây thư mục

Một ứng dụng Portlet cũng có cấu trúc cây thư mục được tổ chức giống như một ứng dụng Web. Tuy nhiên có một số khác biệt sau:

Có thêm tập tin /WEB_INF/portlet.xml là tập tin đặc tả triển khai của Portlet.Các lớp được sủ dụng cho ứng dụng Portlet và các tài nguyên khác được truy cập bởi ứng dụng Portlet cần phải được lưu trong thưmục /WEB-INF/classes hoặc trong các tập tin JAR được lưu trong thư mục /WEB-INF/lib.

Tập tin lưu trữ của ứng dụng Portlet

Một ứng dụng Portlet cũng được đóng gói như một ứng dụng Web. Nghĩa là sử dụng dạng WAR (Web Application Archive) khi triển khai ứng dụng.

Page 38: Baocao-luanvan final

Các đặc tả đóng gói và triển khai

Đặc tả triển khai của ứng dụng Web và ứng dụng Portlet

Trong các ứng dụng Portlet, luôn tồn tại 2 tập tin đặc tả là:

Tập tin web.xml dung để đặc tả các tài nguyên của ứng dụng Web.Tập tin portlet.xml dung để đặc tả các tài nguyên của ứng dụng Portlet.

Các tài nguyên nào không liên quan đến Portlet thì được khai báo trong tập tin đặc tả web.xml. Còn các tài nguyên nào liên quan đến Portlet thì được khai báo trong tập tin portlet.xml. Ngoài ra, một số thông tin của Portlet cần phải được khai báo trong tập tin web.xml như sau:

Mô tả về ứng dụng Portlet được khai báo bằng thẻ <description>.Tên của ứng dụng Portlet được khai báo bằng thẻ <display-name>.

Việc ánh xạ các vai trò bảo mật( Security Role Mapping) của ứng dụng Portlet được khai báo bằng thẻ <security-role>.

Triển khai ứng dụng Portlet và ứng dụng Web

Các Portlet, đặc tả triển khai và mọi tài nguyên phải được đóng gói trong cùng một tập tin WAR. Trong đó, thư mục WEB-INF bao gồm các thành phần:

- Tập tin đặc tả triển khai /WEB-INF/portlet.xml- Các lớp của Portlet nằm trong thư mục /WEB-INF/classes

- Các tập tin JAR được lưu trong thư mục /WEB-INF/lib

Page 39: Baocao-luanvan final

Chương 3: Phân tích và hiện thực hệ thống đề tài luận văn

3.1 Phân tích hệ thống

Dựa trên mục tiêu của đề tài là phải kết nối hệ thống Sakai với hệ thống Tính Toán Lưới của trường. Hệ thống Sakai của trường đang dùng là phiên bản Sakai 2.5.4 và hệ thống Tính Toán Lưới được hiện thực bởi Globus Toolkit 4.0.x. Và để truy cập vào hệ thống Tính Toán Lưới này bằng một môi trường web thì có nhiều portal hổ trợ công việc đó. Hiện tại OGCE(Open Grid Computing Environments) là một trong những portal hỗ trợ gần như đầy đủ các chức năng tương tác với hệ thống Tính Toán Lưới qua Globus Toolkit 4.0. Trong portal OGCE gồm các portlet: iframe-portlet, jobsubmission, proxymanager-portlet, gp-browser-2, gp-job-submission, condor-job-submission… thông qua những portlet này người dùng sử dụng và quản lý hệ thống Grid Computing.

Hình 3. 1: Mô hình tổng quát hệ thống ban đầu

Page 40: Baocao-luanvan final

Hình trên mô tả tổng quát hệ thống OGCE portal kết nối với Globus Toolkit 4.0. Trong đó người dùng sử dụng các portlet JSR 168 để tương tác với hệ thống Tính Toán lưới. Trong đó ta thấy có ba portlet mà tiêu biểu thể hiện trên hình là ProxyManager Portlet, JobSubmit Portlet, Comp-file-Manager portlet. OGCE đáp ứng được khả năng truy cập hệ thống Tính Toán Lưới nhưng lại không được phát triển nhằm tạo ra một cộng đồng những người sử dụng hệ thống Tính Toán Lưới. Quay lại mô hình ban đầu, kế bên portal OGCE lúc này là hệ thống Sakai của trường mà ở đây người dùng độc lập với hệ thống Tính Toán Lưới. Mục đích của đề tài lúc này là làm sao kết nối hệ thống Sakai này với hệ thống Tính Toán Lưới của trường.

Hình sau thể hiện mô hình mà nhóm đã quyết định xây dựng. Sau khi ta hoàn thành xong thì người dùng có thể kết nối với hệ thống Tính Toán Lưới bên dưới thông qua Globus Toolkit 4.0 sử dụng cơ chế xác thực bằng chứng chỉ khóa công cộng.

Hình 3. 2:Mô hình tổng quát hệ thống cần xây dựng.

Từ hình trên cho thấy là nhóm phải bằng cách nào đó đưa các chức năng hiện có ở OGCE portal vào Sakai..

Trước hết để kết nối hệ thống Sakai và hệ thống Grid Computing hiện nay chúng ta phải làm gì?

Page 41: Baocao-luanvan final

Rõ ràng là phải giải quyết được vấn đề truy cập, cấp phát quyền người dùng , sao cho người dùng của Sakai có thể truy cập vào hệ thống tính toán lưới thông qua Globus. Cơ chế xác thực và cách quản lý user của Sakai và Globus Toolkit 4.0 là hoàn toàn khác nhau. Một bên Sakai sẽ sử dụng cơ chế xác thực User Directory Service. Một bên Globus Toolkit 4.0 sử dụng chứng chỉ khóa công cộng để quản lý người dùng. Qua quá trình khảo sát và nghiên cứu thì nhóm thực hiện đề tài chưa đi sâu giải quyết vấn đề mâu thuẫn trên. Tức là trên hệ thống Sakai có nhiều nhóm người dùng khác nhau, có nhóm sử dụng hệ thống Tính Toán Lưới, có nhóm không sử dụng tại một thời điểm nào đó. Do đó phải cần can thiệp bên dưới sao cho những nhóm người dùng sử dụng các portlet chức năng của Globus Toolkit 4.0, có khả năng đăng nhập Globus một cách tự động. Còn những nhóm người dùng không được cấp quyền sử dụng Globus thì không có bất kỳ một chứng chỉ nào để truy cập Globus.

Từ những đánh giá ở trên ta sẽ có được mô hình hoạt động chi tiết của hệ thống mong muốn như hình dưới. Trong mô hình đó cần có một dịch vụ getProxyService( username, passphrase). Dịch vụ này có chức năng tự động lấy các chứng chỉ proxy mà người dùng username trên sakai có về sakai.

1 .Là quá trình dịch vụ getProxyService() lưu tất cả các chứng chỉ proxy vào một bảng chứng chỉ proxy.

2. Là quá trình từ phía người sẽ có một portlet ProxyManager tự động cập nhật tất cả các chứng chỉ proxy và liệt kê ra cho người dùng username sử dùng một trong các chứng chỉ đó.

Hình 3. 3:Sơ đồ hoạt động của hệ thống mong muốn

Page 42: Baocao-luanvan final

Dưới đây là các hình ảnh của hai portlet ProxyManager và JobSubmission trên portal OGCE trong mô hình hệ thống ban đầu.

Hình 3. 4:Portlet MyproxyManager của OGCE portal

Hình trên là hình ảnh của proxymanager-portlet, portlet này sẽ tương tác với MyProxy server để lấy các chứng chỉ Proxy của user. Mục đích của nhóm là rút gọn giai đoạn này người dùng Sakai sẽ không còn phải nhập username và passphrase một lần nữa. Mà sẽ có một dịch cụ GetProxyservice(username, passphrase) bên dưới trong Sakai đảm nhận vai trò này. Giao diện người dùng sẽ chuyển sang giao diện của hình tiếp theo. Giữ lại cac chức nay còn lại của ProxyManager Portlet.

Page 43: Baocao-luanvan final

Hình 3. 5: Lấy Proxy của người dùng qua OGCE portal

Hình trên là hình ảnh proxymanager-portlet của OGCE portal đã lấy về chứng chỉ Proxy của user. Proxymanager-portlet còn hỗ trợ sử dụng nhiều chứng chỉ cùng thời, ở đó cho phép user chuyển quyền sử dụng từ Proxy cộng đồng và Proxy cá nhân bằng chức năng Set as default. Các portlet khác sẽ sử dụng Proxy được thiết lập mặc định là default proxy. Còn bên dưới là hình của portlet OGCE jobsubmission:

Hình 3. 6:Portlet JobSubmission của OGCE portal

Page 44: Baocao-luanvan final

Trong quá trình tìm hiểu và thực hiện đề tài thì nhóm đã hiện thực được hệ thống, có thể nói là chấp nhận được hoạt động như hình bên dưới, bằng cách thực hiện tích hợp các portlet JSR 168 của OGCE vào Sakai Portal.

Hình 3. 7:Sơ đồ hoạt động hệ thống đã hiện thực

Trong hệ thống Sakai của nhóm thì người dùng login vào Sakai ở bước 1,trong bước 2 sau đó sử dụng Portlet ProxyManger của OGCE portal để lấy các chứng chỉ từ Myproxy Server. Tiếp theo tại bước 3 là lưu lại các chứng chỉ này vào Proxy Table trên portlet.

3.2 Đề xuất cơ chế tích hợp portlet JSR 168 vào Sakai

Từ yêu cầu của đề tài thì đòi hỏi phải có một cơ chế nào đó mà user đăng nhập vào Sakai phải truy cập được hệ thống lưới thông qua Globus tookit 4.0. Dưới đây là ba phương án mà nhóm đã tìm hiểu được.

3.2.1 Xây dựng các tool tương ứng

Sakai có thể chia ra làm hai phần một là Sakai container và Sakai tool. Để khai thác các ứng dụng web người phát triển phải viết các tool cho Sakai.

Nhóm cũng đã tìm hiểu viết một tool cho Sakai sử dụng công cụ Sakai App Builder.

Quay lại vấn đề là chúng ta cần truy cập Grid thông qua Sakai do đó nhóm sẽ phải phát triển các tool như proxymanager-tool hay jobsubmision-tool... các tool tương ứng với các portlet của Sakai.

Page 45: Baocao-luanvan final

Do đó người viết các tool này phải đảm bảo hiểu được hoạt động của code từng portlet và các thư viện hỗ trở cho việc giao tiếp với globus và myproxy bên dưới.

Sakai App Builder là một công cụ khá mạnh nhằm hỗ trợ hoạt động viết tool của Sakai theo các chuẩn như RSF( Reasonable Server Face), JSF( Java Server Face) và Wicket Face.

Cài đặt Sakai App Builder như sau:

Download cài đặt phiên bản Sakai mới nhất.Chạy Eclipse

Chọn tab Windown -> Preferences

Click double Java

Click double Build Path

Chọn Classpath Variables

Click mục New

Nhập M2_REPO cho mục Name

Click vào folder dẫn đến thư mục .m2/respository

click ok -> ok.

Chọn tab Help chọn Install New Software

Chọn New Remote Site

Nhập AppBuilderSite vào mục Name

Nhập http://source.Sakaiproject.org/appbuilder/update/

Click finish

click Next

Click Install

Để sử dụng được SakaiAppBuilder:

Chọn File->New-> Project->SakaiProject->SakaiAppBuilder

Page 46: Baocao-luanvan final

Nhập tên project

Lựa chọn các tuỳ chọn như key project( kí tự đầu viết hoa)

Sau đó lựa chọn hiện thực RSF, JSF hay Wicket ...

Các kĩ thuật dàng trang hỗ trợ phát triển tool Sakai rất phong phú như Java Servlets, Velocity, JSP, JSF, RSF, Wicket. Lựa chọn kĩ thuật phụ thuộc và chủ quan của người phát triển. Nhóm thực tập cũng đã thử phát triển một tool-proxymanager bằng Wicket. Qua quá trình tìm hiểu và tiến hành code thử, thì Wicket khá là dễ sử dụng để thiết kế giao diện cho người dùng. Nhưng về mặt toàn thể thì để phát triển hết tất các tool cần thiết tương ứng với OGCE thì đòi hỏi nhiều đầu tư về mặt thời gian và công sức để tìm hiểu các công cụ xây dựng tool cho Sakai và phải hiểu sâu sắc kiến trúc của Sakai, vì thời gian luận văn có hạn nên nhóm không đi theo hướng này.

3.2.2 Tích hợp Grid portlet dựa vào chuẩn WSRP

WSRP[17] (Web Services for Remote Portlet) định nghĩa một chuẩn tương tác, sử dụng Web Services để tương tác với những portlet JSR 168. Các portlet thuộc chuẩn WSRP này được gắn với một portal. Các portlet này sẽ thực thi bên ngoài máy chủ portal, bên trong máy chủ một tổ chức khác ở một vị trí xa. Khi một portal cần một đoạn trang nào đó của WSRP portlet nó sẽ gọi portlet từ xa thông qua giao thức SOAP.

Hiện tại đây là một hướng giải quyết khá tốt. Sakai hỗ trợ WSRP. Nhưng hiện tại OGCE portal lại không hỗ trợ. Để thực hiện chuyển các truy cập vào Grid thông qua Sakai bằng OGCE portal là không khả thi mấy!. Mặc dù WSRP hỗ trợ API để phát triển portlet chuẩn này. Mục đích của đề tài là yêu cầu các dịch vụ Grid phải được đáp ứng trực tiếp từ Sakai portal.

3.2.3 Tích hợp portlet JSR 168 vào Sakai

Thông qua tìm hiểu các bài viết của Charles Serverance[18] thì cách tiếp cận này là khả thi. Các phiên bản Sakai từ 2.4.x trở về sau đã bắt đầu hỗ trợ portlet JSR 168. Hiện tại phiên bản Sakai mà nhóm dùng là 2.7.1 nên Sakai đã hỗ trợ sẵn portlet JSR 168 thông qua pluto 1.1

Page 47: Baocao-luanvan final

SakaiTool

RequestFilter

JSR-168Tool

PortletServlet

Sakai ToolRegistration

Pluto PortletRegistration

CharonPortal

SakaiSite Setup

Pluto Container

Sakai ToolDispatch

Hình 3. 8: Sakai Tool Registration

Portlet JSR 168 được deploy trong một servlet container như một ứng dụng web. Do đó Sakai cũng có một servlet gọi là PortletServlet dùng để điều khiển các request và đáp ứng các resquest đó giữa portal và JSR-168 tool. Portlet servlet này tự động nhận dạng và đăng kí trong Pluto[20] Portlet Register.

Sau khi JSR-168 được đăng kí trong Pluto Portlet Register thì portlet cũng được đăng kí như một tool với Sakai Tool Registration của portal vì vậy portlet sẽ xuất hiện trong Sakai Sites tool và Site Setup tool khi người dùng thiết lập. Điều này thể hiện rỏ trong quá trình ta khởi động Sakai Portal.

Mỗi khi tìm thấy một portlet thì portlet đó sẽ tự động đăng kí với Sakai và Pluto. Sau khi đăng kí xong thì trong bảng Sakai Tool Registration sẽ có thêm một entry như sau:

Trong quá trình thực thi Charon portal trong Sakai sẽ tìm kiếm trong Sakai Tool Registration của portal, khi thấy một portlet tool nó sẽ sử dụng Pluto container để chuyển các request tới portlet và trả về các response cho portal.

Mô tả các bước tích hợp

<registration> <tool id=" proxymanager-portlet.ProxyManagerPortlet" title=”ProxyManager" description="Proxy Manager Portlet” > <category name="course" /> <category name="project" /> </tool></registration>

Page 48: Baocao-luanvan final

Hiện tại nhóm luận văn có một gói deploy Sakai-Ogce[19], đã tích hợp sẵn các portlet của OGCE vào Sakai. Nhưng gói này không có source code để build cho Sakai 2.5.4 và chưa chạy được. Do đo nhóm luận văn phải tiến hành build và tích hợp các portlet từ OGCE vào Sakai.

Các bước tiến hành

Bước 1: Build các portlet của OGCE Portal chung với OGCE Portal hoặc dùng NetBean IDE, hoặc dùng Eclispse IDE để build từng portlet. Kinh nghiệm của nhóm cho thấy với phiên bản mới nhất của NetBean IDE dễ dàng build portlet hơn là dùng Eclipse IDE.Bước 2:Chỉnh file cấu hình web.xml và project.xml

Bước 3: Copy các gói jar cần thiết bên OGCE Portal vào Sakai Portal.

Ở bước một nhóm chọn phương án dễ nhất là build nguyên cả OGCE Portal sau đó sử dụng các deployment đó để đem sang Sakai Portal. Về cách build OGCE portal thì xin tham khảo chi tiết chương 2.

Cấu hình ProxyManager Portlet

Trước hết là chỉnh file cấu hình web.xml như hình ở dưới.

Hình 3. 9: Cấu hình file web.xml cho portlet Proxy Manager.

Page 49: Baocao-luanvan final

Trên hình trên chỉ ra những lớp cần phải chỉnh sửa. Hình bên trái là file web.xml lúc ta chưa cấu hình. Hình bên phải là file web.xml ta đã cấu hình. Trong tất cả các portlet trong Sakai Portal chúng ta đều phải chỉnh ở hai lớp listener class và Servlet class và tag <url-pattern> khi đem từ OGCE Portal sang Sakai Portal. Sau bước này ta khởi động Sakai Portal lên. Vào WorkSite setup chúng ta sẽ thấy portlet lúc này đã được đăng kí trong sakai.

Hình 3. 10: Portlet Proxy Manager trong Sakai.

Đến bước copy các gói jar từ OGCE Portal và Sakai Portal thì điều này còn phụ thuộc vào từng portlet. Thứ nhất là xem code của các portlet cần tích hợp, xem phần import, tất cả

các gói import phải được đem qua và đặt đúng cấu trúc thư mục như bên OGCE Portal. Đối với ProxyManager Portlet thì cần các gói sau:

Tất nhiên ngoài những gói jar cần thiết trong file source code thì còn nhiều gói phụ thuộc khác. Cần phải căn cứ vào dòng báo lỗi của Apache Tomcat để xác định gói còn thiếu. Ví dụ

portlet-jsr-api-2.1.jar

proxymanager-api-4.3.jar

log4j-1.2.8.jar

cog-jglobus-1.4-dev-071030.jar

jgss-OGCE.jar

commons-logging-1.1.jar

commons-io-1.0.jar

jce-jdk13-131.jar

jarpc-OGCE.jar

Caused by: java.lang.NoClassDefFoundError: org/globus/wsrf/impl/security/authorization/SelfAuthorization at org.globus.cog.abstraction.impl.execution.gt4_0_0.DelegatedTaskHandlerFactory.newTaskHandler(DelegatedTaskHandlerFactory.java:21) at org.globus.cog.abstraction.impl.execution.gt4_0_0.TaskHandlerImpl.submit(TaskHandlerImpl.java:77) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585)

Page 50: Baocao-luanvan final

Nhìn dòng đầu của dòng lỗi cho ta biết portlet thiếu class và không tìm thấy class org/globus/wsrf/impl/security/authorization/SelfAuthorization này. Vậy việc cuối cùng là tìm ra class SeftAuthorization nằm trong gói jar nào của OGCE portal. Sau đó copy sang Sakai Portal. Để nhanh chóng thì có thể dùng các công cụ tìm kiếm trong linux. Nhóm sử dụng ngay chính công cụ tìm kiếm của GNOME có sẵn trong CentOS 5.4

Hình 3. 11: Công cụ tìm kiếm trong GNOME

Vấn đề gặp phải lúc tích hợp nhìn chung nằm ở từng portlet cụ thể. Mỗi khi tích hợp bất kỳ một portlet nào đòi hỏi người làm phải hiểu được nội dung, chức năng của portlet đó, các dịch vụ mà portlet đó sử dụng để kết nối với GLOBUS TOOLKIT 4.0 từng đó nắm được các gói jar cụ thể. Sau khi các file thư viện cần thiết đã được copy đầy đủ ta sẽ được portlet như hình sau:

Page 51: Baocao-luanvan final

Hình 3. 12: Myproxy tích hợp thành công vào Sakai và có thể lấy proxy

Cấu hình Job Submit Portlet

Cấu hình tương tự ProxyManager Portlet ta sẽ chạy được Portlet này như hình. Đến khi cài đặt JobSubmission portlet ta phải copy thư mục coglibs từ OGCE portal vào Sakai Portal. Sau đó sẽ có nhiều thông báo lỗi thiếu gói jar cần thiết, thì tiếp tục copy các gói trong /ogce-portal-home/shared sang /sakai-portal-home/shared.

Hình dưới là kết quả trước khi chạy Job Submit portlet.

Hình 3. 13: Portlet Job Submit trong Sakai

Nhưng khi chạy portlet này thì bị lỗi

WARN: Factory org.apache.axis.configuration.EngineConfigurationFactoryServlet Ignored: missing required method: public static EngineConfigurationFactory newFactory(Object). (2010-11-16 13:55:17,750 http-8080-Processor22_org.apache.axis.configuration.EngineConfigurationFactoryFinder)WARN: Factory org.apache.axis.configuration.EngineConfigurationFactoryDefault Ignored: missing required method: public static EngineConfigurationFactory newFactory(Object). (2010-11-16 13:55:17,752 http-8080-Processor22_org.apache.axis.configuration.EngineConfigurationFactoryFinder).java:60) at xportlets.jobsubmit.JobSubmitAction.submitJob(JobSubmitAction.java:571)

Page 52: Baocao-luanvan final

Sau khi debug trên chính gói Jar đã gây ra lỗi thì nhóm xác định được lỗi do chính gói Apache Axis.

Khi Sakai Portal khởi động nhưng không thể cấu hình được EngineConfigurationFactory. Nguyên nhân chính là nhóm đã đặt gói Axis-OGCE.jar trong Sakai Portal không đúng thư mục giống như bên OGCE Portal. Như vậy có thể là nói vô vàn nguyên nhân lỗi có thể xảy ra nhưng chung qui là do cấu hình chưa đúng hay thiếu các gói Jar cần thiết, hoặc vị trí đặt các gói Jar. Cấu trúc thư mục của Sakai hầu như

ERROR: Unable to locate a valid EngineConfigurationFactory (2010-11-16 13:55:17,752 http-8080-Processor22_org.apache.axis.configuration.EngineConfigurationFactoryFinder)

org.globus.cog.abstraction.impl.common.sandbox.SandboxException: Unexpected exception: org.globus.wsrf.encoding.SerializationException: Serialization failed [Caused by: java.lang.NullPointerException]

at org.globus.cog.abstraction.impl.common.sandbox.SandboxingTaskHandler.submit(SandboxingTaskHandler

Caused by: org.globus.wsrf.encoding.SerializationException: Serialization failed [Caused by: java.lang.NullPointerException]

at

Page 53: Baocao-luanvan final

không thay đổi gì ngoại trừ việc thêm một thư mục /apache-tomcat-5.5.30/coglibs/. Thư mục coglibs chứa hầu như tất cả các file Jar cần thiết cho GLOBUS TOOLKIT 4.0 .

Ngoài những việc trên, thì nhóm tinh chỉnh một vài thứ ở lớp giao diện như hostname, các cấu hình mặc định, thì nhóm đã đưa lên được ba portlet ProxyManager, JobSubmission, Comp-fileManager. Quá trình thử nghiệm trên một máy và mạng Lan là hoàn toàn thành công. Dưới là các hình ảnh trong lúc chạy thử nghiệm của ba portlet. Từ đó có thể rút ra được một kết luận là tích hợp portlet từ OGCE Portal sang Sakai Portal là hoàn toàn khả thi.

Chương 4: Kết luận

4.1 Những thành quả đạt được của luận văn:

Trong quá trình từ lúc bắt đầu đến lúc hoàn thành luận văn nhóm đã thu được những kết quả sau:

Bước đầu nắm bắt được công nghệ Grid-Computing.Nắm bắt được bộ công cụ Globus Toolkit 4.0 và vận dụng vào cài đặt thực tế.

Tìm hiểu được một số công nghệ được dùng để xây dựng Grid-portal như: Single Sign On(SSO), chuẩn portlet JSR 168 …

Triển khai thành công các portal như: OGCE, Sakai.

Tích hợp thành công các portlet JSR 168 vào Sakai trong đó có 2 portlet quan trọng nhất đó chính là Myproxy và Job-Submission. Chính sự tích hợp thành công này đã biến Sakai trở thành một Grid-Portal, từ đó người dùng khi đăng nhập vào Sakai có thể tham gia vào mạng lưới tính toán Grid-Computing.

Page 54: Baocao-luanvan final

4.2 Những hạn chế của luận văn

Mặc dù đạt được một số thành quả như đã kể trên nhưng vì thời gian gấp rút nên luận văn vẫn còn một số hạn chế nhất định:

Chưa thể chuyển toàn bộ các portlet từ OGCE portal sang Sakai portal.Chưa thiết lập được cơ chế Single Sign On (SSO) từ Sakai vào Globus nghĩa là khi một người dùng có quyền truy cập đến hệ thống tính toán lưới thì khi người dùng đó truy cập vào Sakai thì đồng thời cũng chính là truy cập vào hệ thống tính toán lưới. Yêu cầu này đòi hỏi phải am hiểu sâu kiến trúc của Sakai bởi vì cách quản lý user của Sakai và cách quản lý user của Myproxy là hoàn toàn khác nhau, để có thể mapping user của Sakai và Myproxy với nhau đòi hỏi nhiều thời gian để tìm hiểu, vì thời gian luận văn có hạn nên nhóm vẫn chưa hoàn thành được chức năng này.

4.3 Những khó khăn khi thực hiện đề tài

Thành thật thì khi thực hiện đề tài nhóm gặp rất nhiều khó khăn cả về chủ quan và khách quan.

Đề tài liên quan đến nhiều framework nhau. Trong đó nhóm hoàn toàn phụ thuộc vào các thư viện và OGCE portlet là một trở ngại lớn. Bên cạnh đó để nghiên cứu và phát triển portlet JSR168 độc lập cho Sakai đòi hỏi một lượng thời gian lớn. Mặt khác Sakai không hoàn toàn làm việc trực tiếp với các portlet JSR168 mà phải thông qua Pluto portal. Điều đó có nghĩa là nếu phát triển portlet lại từ đầu thì phải phát triển trên uPortal[], sau đó phải cấu hình lại cho Pluto[]. Như vậy phát triển lại từ đầu theo chuẩn JSR 168 là điều không cần thiết. Nhưng nếu chuyển toàn bộ code của các portlet JSR 168 sang kiểu tool trên sakai là một công việc quá sức đối với đề tài luận văn. Cấu trúc một tool của Sakai, các xử lý các request và reponse là hoàn toàn khác với portlet JSR 168. Do đó nếu phát triển chỉ kế thừa được giải thuật chung của portlet mà thôi. Như vậy là khá khó khăn và mạo hiểm đối với nhóm, trong khi thời gian làm luận văn không có nhiều. Từ nhận định đó nhóm chấp nhận sự ràng buộc các thư viện của OGCE, thay vì xây dựng lại, thì tiến hành tìm hiểu về các gói thư viện đó.Khó khăn thứ hai mà nhóm gặp phải là thiếu công cụ hỗ trợ cho việc phát triển và biên dịch portlet JSR168 cho Sakai. Vì mọi bộ phát triển portlet đều chuyên dụng cho một portlal nhất định. Trong khi đó Sakai lại hoàn toàn không hỗ trợ công cụ phát triển cho portlet mà Sakai chỉ hỗ trợ những công cụ phát triển tool. Do đó dường như nhóm phải debug cả apache tomcat, dùng công cụ decompile các gói jar của OGCE sau đó build lại các gói bị lỗi từ đó truy tìm nguyên nhân để sửa lỗi. Điều đó cũng có nghĩa tốn rất nhiều thời gian để debug mỗi lỗi.

Cuối cùng từ phía chủ quan của nhóm, do tiếp cận với lĩnh vực mới hoàn toàn, kiến thức liên quan đến đề tài của nhóm hầu như bắt đầu từ con số không. Dẫn đến

Page 55: Baocao-luanvan final

tiếp cận và làm chủ vấn đề, phân tích các vấn đề gặp phải là hết sức khó khăn và tốn nhiều thời gian. Để có thể thay đổi các mã nguồn của các OGCE portlet đòi hỏi phải có thời gian dài tiếp xúc và có nhiều kinh nghiệm trong việc phát triển portlet.

4.4 Hướng phát triển của luận văn:

Có thể nói càng ngày càng có nhiều nhu cầu về giải quyết các bài toán lớn mà các máy tính đơn không thể giải quyết nổi và Grid-Computing chính là giải pháp để giải quyết những bài toán như thế này. Hệ thống tính toán lưới là một công nghệ có triển vọng rất lớn trong tương lai khi mà cơ sở hạ tầng về mạng và tài nguyên mạng ngày càng phát triển. Grid- Computing có thể tận dụng nguồn tài nguyên mạng này để giải quyết các bài toán lớn trong khoa học, giáo dục…

Nếu có thể tiếp tục phát triển đề tài này nhóm sẽ tập trung vào giải quyết các vấn đề sau:

Chuyển toàn bộ các portlet từ OGCE portal sang Sakai để Sakai hoàn toàn mang đầy đủ chức năng của một Grid-portal.Thiết lập cơ chế Single Sign On (SSO) từ Sakai vào Globus để tạo nên sự thuận tiện cho người dùng khi muốn truy cập vào mạng lưới tính toán bằng Sakai portal.

Quảng bá việc truy cập đến các hệ thống tính toán lưới bằng Sakai portal đến với mọi người bởi Sakai portal được xây dựng để hướng tới cộng đồng và đang ngày càng phát triển mạnh mẽ. Nếu có thêm các tính năng để truy cập đến hệ thống tính toán lưới thì cộng đồng Sakai sẽ có thêm bước phát triển đột phá và có thể trở thành portal chủ đạo trong cộng đồng khoa học và giáo dục.

Chương 5: Phụ lục và tài liệu tham khảo

5.1 Cài đặt Globus Toolkit 4.0

Để cài đặt GT4.0.1 trước hết trong CentOs, cần phải cài đặt gói RPMforge. Đây là gói service hỗ trợ yum.

Thực hiện lệnh vim /etc/hosts để chỉnh lại domain localhost của bạn sẽ được sử dụng trong nhiều bước cài đặt sau. Thực ra không thay đổi domain localhost thì ta cài đặt vẫn bình thường. Nhưng việc thay đổi localost thành một tên dễ nhớ sẽ tốt hơn:

[root@phongcnttbk]$ vim /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 phongcnttbk localhost

Page 56: Baocao-luanvan final

Download gói gridserver đi kèm với bản báo cáo. Giải nén chuyển vào thư mục vừa giải nén.

Bạn Comment dòng script cuối cùng của file install.sh rồi lưu file lại.

Tiếp theo tiến hành cài GT4.0.8 bằng lệnh:

Giờ chúng ta cần một hostcert cho máy và một usercert cho chúng ta. Để làm được điều đó chúng ta cần phải cài đặt một SimpleCA. Ta thực hiện các lệnh sau:

Các lệnh này thực hiện trong user globus, lúc này có thể coi globus đóng vai trò là một CA.

Màn hình sẽ hiện ra thông báo, yêu cầu có giữ nguyên CA hay không ta nên chọn mặc định là có. Lúc đó subject name của CA là:

[root@phongcnttbk ~]$ cd gridserver/

[root@phongcnttbk gridserver]$ ls

certs config.env INSTALL packages pts uninstall.sh

config config_globus.sh install.sh README test

#su globus $GLOBUS_LOCATION/setup/globus/setup-simple-ca

[root@phongcnttbk gridserver]$ ./install.sh

[globus@phongcnttbk gridserver]$ cd

[globus@phongcnttbk ~]$ source $GLOBUS_LOCATION/etc/globus-user-env.sh

[globus@phongcnttbk ~]$ /usr/grid/globus/setup/globus/setup-simple-ca

cn=Globus Simple CA, ou=simpleCA-phongcnttbk, ou=GlobusTest, o=Grid

Page 57: Baocao-luanvan final

trong đó:

Tiếp theo là nhậpp email cho CA, email nà là nơi các yêu cầu chứng thực sẽ được gởi đến để ký được ký duyệt bởi CA.Tiếp theo là thời hạn hiệu lực của CA mặc định là 1825 ngày (5 năm).Tiếp theo sẽ là yêu cầu người dùng khởi tạo mật khẩu cho CA.

Đến đây một chứng thực tự ký duyệt được khởi tạo cho CA với subject của người dùng, người dùng ở đây là globus. Đồng thời cấp cho gloubs 2 khóa cho thiết lập bảo mật tin cậy là cakey.pem và cacert.pem cả 2 được lưu trữ trong thư mục home của globus

Để hoàn thành việc thiết lập CA thì gloubs phải cài đặt phần mềm GSI, sau khi cài đặt GSI chứng thực CA của globus sẽ được ký và do đó globus có thể tạo chứng thực đại diện cho bất kỳ người dùng nào khác. Gói cài đặt GSI được đặt trong thư mục home của globus, nó được tạo ra trong quá trình cài đặt simpleCA:

Lệnh cài đặt GSI phải được thực hiện trong root:

Quá trình cài đặt thành công lúc này CA đã có thể chứng thực cho người dùng khác.

Tiếp theo ta sẽ chứng thực cho host của ta. Đăng nhập vào root và gõ lệnh:

- cn: là tên gọi chung(common name)- Ou: là đơn vị tổ chức (organization unit), nó nhận biết CA này từ các - CA khác tạo bởi SimpleCA bởi người dùng khác nữa.- o: thể hiện tổ chức(organization).

Enter PEM pass phrase:<MyPEMpassPharse>

Verifying - Enter PEM pass phrase: <MyPEMpassPharse>

/home/globus/.globus/simpleCA//private/cakey.pem/home/globus/.globus/simpleCA//cacert.pem

/home/globus/.globus/simpleCA/globus_simple_ca_e25b0701_setup-0.19.tar.gz

[root@phongcnttbk globus]# $GLOBUS_LOCATION/setup/globus_simple_ca_e25b0701_setup/setup-gsi –default

[root@phongcnttbk globus]# source $GLOBUS_LOCATION/etc/globus-user-env.sh

Page 58: Baocao-luanvan final

Lệnh này để set biến môi trường và bắt đầu gõ lệnh:

Hostname ở đây chính là tên đầy đủ của host đã cài globus. Trong trường hợp này hostname là phongcnttbk

Lệnh này dùng để yêu cầu CA xác thực cho host có tên là phongcnttbk. Có hai file yêu cầu được sinh ra là /etc/grid-security/hostcert_request.pem và một khóa riêng kèm theo là /etc/grid-security/hostkey.pem.

Bây giờ để CA chứng thực yêu cầu vừa rồi của host ta phải đăng nhập vào globus và thực hiện lệnh sau:

Sau khi nhập password cho CA thì sẽ tạo ra file hostsigned.pem chứng tỏ host đã được CA xác thực và việc cuối cùng ta copy file hostsigned.pem này vào thư mục /etc/grid-security và đổi tên thành hostcert.pem. Lệnh copy này phải thực hiện trong root.

Vậy là ta đã hoàn tất việc xác thực cho host.

Hai chứng chỉ hostcert.pem và hostkey.pem thuộc quyền sở hữu của root và sẽ được dùng bởi gridFTP server. Trong khi các webservices container lại chạy trong non-root. Do đó chúng ta cần tạo ra một bản sao của hostcert.pem và hostkey.pem thuộc quyền sở hữu của globus. Quá trình tạo bảng sao như sau:

Kiểm tra quyền sở hữu của các chứng chỉ vừa được tao ra:

[root@phongcnttbk globus]# grid-cert-request –host ‘hostname’

[root@phongcnttbk globus]# grid-cert-request –host phongcnttbk

[globus@phongcnttbk ~]$ grid-ca-sign -in /etc/grid-security/hostcert_request.pem -out hostsigned.pem

root@phongcnttbk:~# cp ~globus/hostsigned.pem /etc/grid-security/hostcert.pem

[root@phongcnttbk grid-security]# cp hostcert.pem containercert.pem

[root@phongcnttbk grid-security]# cp hostkey.pem containerkey.pem

[root@phongcnttbk grid-security]# chown globus:globus container*.pem

[root@phongcnttbk grid-security]# ls -l *.pem

-rw-r--r-- 1 globus globus 0 Dec 29 01:51 containercert.pem

-r-------- 1 globus globus 887 Dec 29 01:51 containerkey.pem

-rw-r--r-- 1 root root 0 Dec 29 01:22 hostcert.pem

-rw-r--r-- 1 root root 1407 Dec 29 01:22 hostcert_request.pem

-r-------- 1 root root 887 Dec 29 01:22 hostkey.pem

Page 59: Baocao-luanvan final

Bây giờ chúng ta sẽ chứng thực cho user, ở đây user chúng ta sẽ là phongcnttbk đóng vai trò người dùng cần được xác thực.

Đăng nhập vào phongcnttbk và thiết lập các biến môi trường:

Tương tự như việc xác thực của host ta cũng tạo ra một yêu cầu xác thực với user phongcnttbk:

Nó sẽ yêu cầu nhập một passphrase dùng để xác thực cho user phongcnttbk sau này và xác nhận lại passphrase đó.

Quá trình yêu cầu thực hiện xong sẽ tạo ra một file private key là /home/phongcnttbk/.globus/userkey.pem và một file yêu cầu là /home/phongcnttbk/.globus/usercert_request.pem. Ta cần chuyển yêu cầu này đến CA để được chứng thực. Ta có thể dùng lệnh:

Để gởi mail tới CA hoặc có thể dùng lệnh cp để chuyển yêu cầu đến CA. Ở đây ta copy file usercert-request.pem vào thư mục home của globus(chính là CA) để tiến hành xác thực cho user phongcnttbk. Kiểm tra thư mục /home/globus có file usercert_request.pem thuộc quyền sở hữu của globus là được.

Sau đó ta tiến hành xác thực yêu cầu của user phongcnttbk bằng lệnh:

[phongcnttbk@phongcnttbk ~]$ source $GLOBUS_LOCATION/etc/globus-user-env.sh

[phongcnttbk@phongcnttbk ~]$ grid-cert-request

Enter PEM pass phrase:

Verifying - Enter PEM pass phrase:

[phongcnttbk@phongcnttbk ~]$ cat /home/bacon/.globus/usercert_request.pem | mail bachdienthusinh290489

[globus@phongcnttbk ~]$ grid-ca-sign -in usercert_request.pem -out usercert.pem

Page 60: Baocao-luanvan final

Sau đó trả lại file usercert.pem về cho user phongcnttbk bằng cách gởi mail hay copy. File usercert.pem trả về phải được lưu vô thư mục /home/phongcnttbk/.globus

Và ta sẽ có chứng chỉ hiển thị trên terminal như sau:

Như vậy quá trình xác thực cho phongcnttbk đã hoàn tất. Bây giờ chúng ta cần tạo ra file grid-mapfile để map user phongcnttbk với proxy của nó là dùng để chứng thực về sau.

Đăng nhập vào root và gõ lệnh:

để tạo ra file grid-mapfile. Nhớ lưu lại file này.Sau đó ta gõ lệnh:

Như vây là ta đã xác thực cho user và map user phongcnttbk với proxy của nó.

Cài đặt Myproxy-server

Myproxy server dùng để xác thực user trước khi cho phép user truy cập vào các dịch vụ globus. Để cấu hình Myproxy server ta phải sửa lại file myproxy-server.config được cung cấp tại $GLOBUS_LOCATION/share/myproxy/myproxy-server.config và copy nó đến /etc/myproxy-server. Nếu ta bỏ qua bước này thì myproxy-server không thể khởi động được.

Đầu tiên ta thực hiện lệnh:

[phongcnttbk@phongcnttbk .globus]$ ll

total 12

-rw-r--r-- 1 phongcnttbk phongcnttbk 2647 Dec 29 02:24 usercert.pem

-rw-r--r-- 1 phongcnttbk phongcnttbk 1400 Dec 29 02:00 usercert_request.pem

-r-------- 1 phongcnttbk phongcnttbk 963 Dec 29 02:

/O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=host/phongcnttbk

[root@phongcnttbk ~]# vim /etc/grid-security/grid-mapfile

[root@phongcnttbk~]#cat/etc/grid-security/grid-mapfile “/O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=PhongDang”

phongcnttbk

[root@phongcnttbk ~]# cp $GLOBUS_LOCATION/etc/myproxy-server.config /etc

Page 61: Baocao-luanvan final

để copy file myproxy-server.config đến /etc, sau đó thực hiện lệnh:

và sửa lại nội dung của nó như sau:

và sau đó lưu lại.

Tiếp theo là thêm dịch vụ myproxy-server vào hệ thống bằng lệnh sau:

Ta kiểm tra lại xem myproxy server đã được thêm vào hệ thống hay chưa bằng lệnh sau:

[root@phongcnttbk ~]# gedit /etc/myproxy-server.config

## Complete Sample Policy## The following lines define a sample policy that enables all# myproxy-server features. See below for more examples.accepted_credentials "*"authorized_retrievers "*"default_retrievers "*"authorized_renewers "*"default_renewers "none"authorized_key_retrievers "*"default_key_retrievers "none"trusted_retrievers "*"default_trusted_retrievers "none"

[root@phongcnttbk ~]#cat $GLOBUS_LOCATION/share/myproxy/etc.services.modifications >> /etc/services

[root@phongcnttbk ~]#tail /etc/services và xem kết quả:[root@phongcnttbk ~]tail /etc/services binkp 24554/tcp # binkp fidonet protocolasp 27374/tcp # Address Search Protocolasp 27374/udpdircproxy 57000/tcp # Detachable IRC Proxytfido 60177/tcp # fidonet EMSI over telnetfido 60179/tcp # fidonet EMSI over TCP# Local servicesgsiftp 2811/tcpmyproxy-server 7512/tcp # Myproxy server

Page 62: Baocao-luanvan final

Nếu thấy myproxy-server 7512/tcp ở dòng cuối là được.

Sau đó ta cần cho cấu hình để myproxy-server khởi động cùng với hệ thống

Tiếp theo là khởi động dịch vụ myproxy-server lên.

Kiểm tra myproxy-server đã được start lên chưa bằng lệnh:

Nếu thấy được dòng dưới đây:

Như vậy là ta đã cài đặt cấu hình thành công.

Một chú ý rất quan trọng trong việc cài đặt và cấu hình globus, myproxy server đó chính là lệnh nào thực hiện trong user nào phải rõ ràng không được lẫn lộn vì có một số lệnh chỉ chạy được trong root mà không chạy được trong các user khác hay trường hợp ta dùng

root@choate:~# cp $GLOBUS_LOCATION/share/myproxy/etc.xinetd.myproxy /etc/xinetd.d/myproxyroot@choate:~# vim /etc/xinetd.d/myproxy root@choate:~# cat /etc/xinetd.d/myproxy service myproxy-server{ socket_type = stream protocol = tcp wait = no user = root server = /usr/local/globus-4.0.1/sbin/myproxy-server env = GLOBUS_LOCATION=/usr/local/globus-4.0.1

LD_LIBRARY_PATH=/usr/local/globus-4.0.1/lib disable = no}

[root@phongcnttbk ~]# /etc/init.d/xinetd reload

Reloading configuration: [ OK ]

[root@phongcnttbk ~]# netstat -an | grep 7512

tcp 0 0 0.0.0.0:7512 0.0.0.0:* LISTEN

Page 63: Baocao-luanvan final

CA xác thực cho phongcnttbk mà lại chạy lệnh yêu cầu xác thực cho root thì ta sẽ gặp các vấn đề lỗi về sau này.

Myproxy-init, Myproxy-logon.

Để lưu trữ chứng chỉ vào trong kho myproxy thì ta sử dụng lệnh myproxy-init như sau:

Trong đó hostname chính là hostname của myproxy server

Username là tài khoản của myproxy.

Trong trường hợp của tôi thì tôi sẽ gõ lệnh là:

Trên màn hình Terminal sẽ hiện ra như sau:

Trong quá trình này sẽ có 3 lần đòi passphrase. Lần đầu tiên là chính là pass phrase của chứng chỉ của chúng ta 2 lần tiếp theo là passphrase dùng để truy cập vào myproxy server. Sau khi gõ đúng các pass phrase này thì chứng chỉ của ta sẽ được lưu trữ trên kho myproxy và khi ngồi ở các máy tính khác ta có thể vào kho myproxy này để lấy chứng chỉ đó về để truy cập vào các dịchvụ của globus.

Để lấy chứng chỉ được lưu trữ trên kho myproxy thì ta sử dụng lệnh myproxy-logon, có cấu trúc như sau:

Myproxy-init -s ‘hostname’ –l ‘username’

[phongcnttbk@phongcnttbk ~]$ myproxy-init -s phongcnttbk -l phong

Your identity: /O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=Phong DangEnter GRID pass phrase for this identity:Creating proxy ............................... DoneProxy Verify OKYour proxy is valid until: Thu Jan 6 02:10:54 2011Enter MyProxy pass phrase:Verifying - Enter MyProxy pass phrase:A proxy valid for 168 hours (7.0 days) for user phong now exists on phongcnttbk.

Myproxy-logon -s ‘Hostname’ -l ‘Username.

Page 64: Baocao-luanvan final

Hostname chính là Hostname của myproxy server.Username chính là username của proxy phải trùng với username được nhập trong lệnh myproxy-init trước đó.

Trong trường hợp của tôi tôi sẽ nhập là:

Sau lệnh này sẽ có yêu cầu đòi pass pharase của myproxy server ta nhập đúng vào thì chứng chỉ của username phongcnttbk sẽ được load về máy của chúng ta và dùng nó để truy cập các dịch vụ của globus.

Submit job trong gloubus

Để Submit một tác vụ chẳng hạn như in ra hostname của máy ra file ta làm như sau:

Nếu tác vụ thành công thì màn hình Terminal sẽ thông báo:

Tương tự cho một tác vụ khác chẳng hạn như in thời gian hiện hành trên máy ra màn hình terminal ta làm như sau:

Và nếu thành công thì kết quả sẽ trả về là:

[phongcnttbk@phongcnttbk ~]$ myproxy-logon -s phongcnttbk -l phong

[phongcnttbk@phongcnttbk ~]$ globusrun-ws -c -submit /bin/hostname

Submitting job...Done.

Job ID: uuid:fd99fcb2-1382-11e0-b294-000c29b9b001

Termination time: 12/30/2010 19:36 GMT

Current job state: CleanUp

Current job state: Done

[phongcnttbk@phongcnttbk ~]$ globusrun-ws -c -s -submit /bin/date

Delegating user credentials...Done.Submitting job...Done.Job ID: uuid:a859b110-1383-11e0-be17-000c29b9b001Termination time: 12/30/2010 19:41 GMTCurrent job state: CleanUp-HoldThu Dec 30 02:41:42 ICT 2010Current job state: CleanUpCurrent job state: DoneDestroying job...Done.

Cleaning up any delegated credentials...Done.

Page 65: Baocao-luanvan final

Các lỗi hay gặp khi cài đặt, cấu hình globus:

Lỗi connection refuse:

Một số lỗi thường gặp trong quá trình cài đặt và cấu hình Globus

a. Lỗi không kết nối được tới myproxy server

Nguyên nhân của lỗi này có thể là:

Do firewall đã chặn các traffic của dịch vụ myproxy, nếu như vậy thì chỉ cần đăng nhập vào quyền root tắt đi hoặc cho phép traffic của myproxy được đi qua.Do myproxy server chưa khởi động, nếu như vậy thì ta làm như sau:

Và kiểm tra lại bằng lệnh:

Nếu thấy được dòng bên dưới là:

thì tức là đã khởi động thành công, nếu không thấy được dòng này tức là trong quá trình cấu hình myproxy ta đã làm sai ở một chỗ nào đó và cần coi lại quá trình cấu hình đó.

b. Lỗi không thể lưu được chứng chỉ lên myproxy server:

[phongcnttbk@phongcnttbk ~]$ myproxy-init -s phongcnttbk -l phong

Unable to connect to 127.0.0.1:7512

[root@phongcnttbk]# myproxy-server

[root@phongcnttbk ~]# netstat -an | grep 7512

tcp 0 0 0.0.0.0:7512 0.0.0.0:* LISTEN

[phongcnttbk@phongcnttbk ~]$ myproxy-init -s phongcnttbkYour identity: /O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=Phong DangEnter GRID pass phrase for this identity:Creating proxy .................................................................................. Done

ERROR: Couldn't verify the authenticity of the user's credential to generate a proxy from.Use -debug for further information.

grid-proxy-init failed

Page 66: Baocao-luanvan final

Nguyên nhân:

Trong quá trình tạo proxy cần có 2 file hash.0 và hash.signing_policy để xác thực cho proxy nên việc tạo proxy đưa lên myproxy server thất bại, bình thường thì sau khi kí sẽ nằm đúng vị trí của nó là /home/phongcnttbk/.globus/certificates nhưng có một lý do gì đó làm mất hai file này đi thì sẽ gây ra lỗi trên. Để khắc phục được lỗi này ta chỉ cần vào thư mục /etc/grid-security/certificates/ và copy 2 file đó về đúng vị trí của nó là /home/phongcnttbk/.globus/certificates. Lỗi sẽ được giải quyết.

c. Lỗi không submit được Job:

Nguyên nhân: Có thể có 2 nguyên nhân

Do firewall chặn traffic của dịch vụ globusrun-ws, nếu như vậy ta chỉ cần đăng nhập vào quyền root và tắt firewall đi.

Do không biết Job sẽ được thực hiện ở host nào. Trong trường hợp này ta chỉ cần vào file /etc/hosts và thêm vào địa chỉ IP map với tên host đang được dùng để submit.

Trên đây là 3 lỗi ta hay gặp nhất trong quá trình sử dụng globus , ngoài ra còn một số lỗi khác ít gặp hơn không được nêu ở đây. Những lỗi tốn của ta rất nhiều thời gian để giải quyết chúng nhất là đối với những người mới bắt đầu sử dụng globus. Một lời khuyên cho những người mới sử dụng globus đó chính là trong lúc cài đặt và cấu hình các thành phần của globus chúng ta phải tuân thủ chặt chẽ từng bước 1 và làm đúng như theo hướng dẫn để tránh đi những lỗi không đáng có và đỡ tốn thời gian để giải quyết chúng.

[phongcnttbk@phongcnttbk ~]$ globusrun-ws -c -submit /bin/hostnameSubmitting job...Failed.globusrun-ws: Error submitting jobglobus_xio: Unable to connect to localhost:8443globus_xio: globus_libc_getaddrinfo failed.globus_common: Name or service not known

Page 67: Baocao-luanvan final

5.2 Cài đặt OGCE portal

Sau khi cài đặt globus thành công chúng ta chuyển sang user thường để cài đặt OGCE portal.Trước hết cần thiết lập các đường dẫn cần thiết:Thiết lập đường dẫn JAVA_HOME:

Thiết lập đường dẫn path đến thư mục maven 2.2.0-2

Thiết lập đường dẫn đến thư mục catalina home:

Chỉnh file pom.xml của OGCE như sau: ở đây domain localhost là phongcnttbk, lưu file lại sau đó chuyển vào thư mục ogce-portal chạy lệnh:

Lưu ý là install chứ không phải là install.sh

Quá trình cài đặt thành công. Để chạy OGCE portal thì ta phải chạy tomcat trước:

export $JAVA_HOME = /usr/grid/java

export $PATH=$PATH:$HOME/maven2.2.0-2/bin

export $CATALINA_HOME=$HOME/ogce-portal-only/portal-deploy/apach-tomcat-5.5.27/bin

mvn clean install

[phongcnttbk@phongcnttbk bin]$ /home/phongcnttbk/ogce-portal-only/portal_deploy/apache-tomcat-5.5.27/bin/startup.sh

Using CATALINA_BASE: /home/phongcnttbk/ogce-portal-only/portal_deploy/apache-tomcat-5.5.27

Using CATALINA_HOME: /home/phongcnttbk/ogce-portal-only/portal_deploy/apache-tomcat-5.5.27

Using CATALINA_TMPDIR: /home/phongcnttbk/ogce-portal-only/portal_deploy/apache-tomcat-5.5.27/temp

Page 68: Baocao-luanvan final

Mở trình duyệt firefox gõ:

Ở đây phongcnttbk là domain localhost mà ta đã chỉnh trong file /etc/host và file pom.xml

Hình 4. 1: OGCE portal

Tiếp bạn khởi tạo một tài khoản admin cho portal OGCE.

5.3 Cài đặt sakai phiên bản 2.5.4

Môi trường chuẩn bị:

http://phongcnttbk:8080/gridsphere/

Page 69: Baocao-luanvan final

JDK 1.5 update 18SVN

Maven 2.2.1

Tomcat 5.5.26

MySQL

JDK:

Link : http://java.sun.com/javase/downloads/5u22/jdk

Thiết lập biến môi trường:Chú ý: Tất cả biến môi trường nên được khai báo trong $USER_HOME/.bash_profile

export JAVA_HOME=your/java/dir

export PATH=$PATH:$JAVA_HOME/bin

Sakai không phù hợp với phiên bản 1.6 , chỉ có thể sử dụng JDK phiên bản 1.5 update 18 là tốt nhất.

SVN:

Cài đặt từ repository của CentOS

yum install subversion

Cài đặt từ gói binary

http://subversion.apache.org/packages.html

Maven 2.2.1:

Link: http://maven.apache.org/download.htmlTải xuống và giải nén gói apache-maven-2.x.x-bin.Thiết lập biến môi trường:

Page 70: Baocao-luanvan final

export MAVEN_HOME=/your/maven/dir

export PATH=$PATH:$MAVEN_HOME/bin

export MAVEN_OPTS='-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m'

Tạo thư mục repository cho maven:

mkdir –p ~/.m2/repository

Cấu hình Maven: Tạo tập tin settings.xml tại ~/.m2/ với nội dung như sau:

<settings xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/settings-1.0.0.xsd">

<profiles>

<profile>

<id>tomcat5x</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<properties>

<appserver.id>tomcat5x</appserver.id>

<appserver.home>/opt/tomcat</appserver.home>

<maven.tomcat.home>/opt/tomcat</maven.tomcat.home>

Tomcat 5.5.26Link: http://tomcat.apache.org/download-55.cgi

Page 71: Baocao-luanvan final

Tải xuống và giải nén gói apache-tomcat-5.5.26.tar.gzThiết lập biến môi trường:

export CATALINA_HOME=/your/tomcat/dir

export PATH=$PATH:$CATALINA_HOME/bin

Bộ nhớ mặc định của Tomcat không đủ cho việc khởi động Sakai, cho nên ta cần phải khai báo thêm biến JAVA_OPTS cho Tomcat bằng cách tạo tập tin setenv.sh tại $CATALINA_HOME/bin/ với nội dung như sau

export JAVA_OPTS="-server -XX:+UseParallelGC -Xmx768m -XX:MaxPermSize=160m -Djava.awt.headless=true"

Tomcat cần có JDBC driver để kết nối tới MySQLLink: http://dev.mysql.com/downloads/connector/j/Tải xuống và chứa tại thư mục $CATALINA_HOME/common/lib

MySQL

Cài đặt bằng yum

yum install mysql mysql-server mysql-devel

Cài đặt bằng gói binary hoặc gói source Link: http://dev.mysql.com/downloads/mysql/Tạo cơ sở dữ liệu cho Sakai:Đăng nhập vào Mysql với quyền root rồi gõ các lệnh sau.

create database sakai default character set utf8;

grant all privileges on sakai.* to 'sakai'@'localhost' identified by ironchef';

flush privileges;

Biên dịch và khởi động Sakai:

Cấu hình Sakai:

Sakai được cấu hình qua tập tin sakai.properties được đặt ở $CATALINA_HOME/sakai. Trong sakai source có cung cấp sẵn một tập tin mẫu để tham khảo tại

Page 72: Baocao-luanvan final

sakaisrc/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties

Mặc định Sakai sử dụng HSQLDB để làm cơ sở dữ liệu. HSQLDB chỉ thích hợp cho môi trường testing và sử dụng nội bộ với số lượng truy cập nhỏ. Để đáp ứng nhu cầu truy cập lớn, ta cần cấu hình cho Sakai hỗ trợ MySQL.

Chép tập tin default.sakai.properties trên sang $CATALINA_HOME/sakai và đổi tên thành sakai.properties. Sau đó mở ra và sửa lại như sau:

Thêm dấu comment vào phần HSQLDB settings

## HSQLDB settings - on by default

#[email protected]=hsqldb

#[email protected]=org.hsqldb.jdbcDriver

#hibernate.dialect=org.hibernate.dialect.HSQLDialect

Bỏ comment phần MySQL settings

## MySQL settings - make sure to alter as appropriate

[email protected]=mysql

[email protected]=com.mysql.jdbc.Driver

hibernate.dialect=org.hibernate.dialect.MySQLDialect

Khai báo username và password cho MySQL

set [email protected]=sakai

set [email protected]=ironchef

Biên dịch Sakai:Đứng tại thư mục sakai-src

Page 73: Baocao-luanvan final

cd master

mvn clean install

cd ../

Khởi động SakaiVào thư mục $CATALINA_HOME/bin

startup.sh

Lúc này quá trình cài đặt Sakai đã hoàn tất, mở trình duyệt và vào địa chỉ http://localhost:8080/portal để kiểm tra.

Hình 4. 2: Sakai sau khi cài đặt thành công

Để kết thúc sakai chạy shutdown.sh.Hướng dẫn sử dụng các kèm theo trong đề tài luận văn để xây dựng môi trường truy cập hệ thống tính toán lưới thông qua Sakai

Đầu tiên sử dụng gói gridserver để cài đặt GT4 ( Hướng dẫn cài đặt ở trên)

Tiếp theo bạn build OGCE portal cần chú ý đến việc cấu hình file pom.xml ở đây sẽ cấu hình cho server và cấu hình các host sử dụng các dịch vụ GRAM và GridFTP

Page 74: Baocao-luanvan final

ở đây bạn cần chú ý đến các việc cấu hình các host sử dụng các dịch vụ cho phù hợp với yêu cầu của bạn.

Sau đó cài đặt OGCE bình thường như hướng dẫn trên.

Cài đặt OGCE thành công bạn có thể copy các portlet của OGCE vào thư mục webapp của gói Sakai kèm theo luận văn, nhớ cấu hình cho các portlet của OGCE cho tương thích với Sakai như trong chương 3. Ở đây vì yêu cầu của luận văn nên nhóm chỉ tích hợp 3 portlet là Poroxymanager, Jobsubmit, và GridPortFileManagement. Sau đó bạn khởi động Sakai portal lên là có thể sử dụng được các dịch vụ của hệ thống tính toán lưới thông qua Sakai.

Sau đây là một số kết quả:

Hình 4. 3:Sakai có tích hợp Proxymanager portlet và có thể lấy proxy

<portal.server.ip>phongcnttbk</portal.server.ip>

<host.base.url>http://${portal.server.ip}:8080/</host.base.url>………….<gridftp.host.names>phongcnttbk</gridftp.host.names> <gram.host.names>phongcnttbk</gram.host.names>

Page 75: Baocao-luanvan final

Hình 4. 4:Sakai có tích hợp JobSubmit portlet và có thể submit một job

Page 76: Baocao-luanvan final

Hình 4. 5:Kết quả của việc thực thi

Tài liệu tham khảo

[1] Tiến sĩ Hoàng Lê Minh, Báo cáo trong hội thảo "Công nghệ tính toán mạng lưới và tính toán hiệu năng cao"

[2] XIAOBO YANG and ROB ALLANCCLRC e-Science CentreDaresbury LaboratoryWarrington WA4 4AD, Sakai VRE Demonstrator Project: Realise e-Research throughVirtual Research Environments.[3] Vngrid project, http://www.cse.hcmut.edu.vn/~vngrid/wiki/Main_Page

[4] Các bài báo nghiên cứu về Globus ,http://www.globus.org/alliance/publications/papers.php

[5] Các public chi tiết các phần của GT4,http://www.globus.org/toolkit/docs/4.0/

[6] An Early and Incomplete Draft, A Globus Primer Or Everything You Wanted to Know about Globus,but Were Afraid To Ask Describing Globus Toolkit Version 4

[7] Sakai_Courseware_Management_the Official _ Guide_2009.pdf

[8] Sakai Project,Sakai Java Framework,December 3, 2004,Version 1.0.

[9] Web Services for Remote Portlets Specification.pdf

[10] OGCE Portal, http://www.collab-ogce.org/ogce/index.php/Main_Page

[11] Khóa luận tốt nghiệp của Đặng Đình Vương, Bùi Vĩnh Phú, phần JSR 168, trang 44.

[12] Sakai JSR 168 Portlet Support, http://collab-ogce.blogspot.com/2007/03/sakai-jsr-168-portlet-support.html

[13] Charles Serverance, JSR-168 Portlet Support in Sakai,February 6, 2007, link: http://www.sfr-fresh.com/unix/www/sakai-src-2.5.4.tgz:a/sakai-src-2.5.4/reference/docs/architecture/sakai-168-portlet-tool.doc

[14] Myproxy, http://grid.ncsa.illinois.edu/myproxy/scenarios/

[15]GRAM,http://globus.org/toolkit/docs/4.0/execution/wsgram/WS_GRAM_Approach.html

[16] Single Sign-on, http://en.wikipedia.org/wiki/Single_sign-on

[17] Axis service, http://ws.apache.org/axis/java/architecture-guide.html

Page 77: Baocao-luanvan final

[18] Charles Serverance, JSR-168 Portlet Support in Sakai,February 6, 2007, link: http://www.sfr-fresh.com/unix/www/sakai-src-2.5.4.tgz:a/sakai-src-2.5.4/reference/docs/architecture/sakai-168-portlet-tool.doc

[19] Gói Sakai-Ogce: https://ogce.svn.sourceforge.net/svnroot/ogce/Sakai-ogce/

[20] Pluto 1.1, http://communitygrids.blogspot.com/2007/a03/Sakai-jsr-168-tests.html