Professional Documents
Culture Documents
Baocao-Luanvan Final
Baocao-Luanvan Final
Phạm Trần Vũ
LỜI CẢM ƠN
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.
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.
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
Chương 2: Các kiến thức nền tảng trong đề tài luận văn.........................................................ix
2.1 Tổng quan về hệ thống tính toán lưới.......................................................................ix
2.2 Globus Toolkit 4.0....................................................................................................xi
2.3 Single Sign On........................................................................................................xix
2.4 Tổng quan về sakai...............................................................................................xxiii
2.5 Tổng quan về OGCE portal................................................................................xxviii
2.6 Tổng quan về Axis Service....................................................................................xxx
2.7 Chuẩn portlet JSR 168.........................................................................................xxxii
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
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.
Trong 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ăn
Trong 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 Service
• Chuẩn portlet JSR168
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
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong ix
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ủ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
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.
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ưới
• Tầ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.
Kiến trúc
Cấ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.
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
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)
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ó.
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ó:
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.
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ỉ…),
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xv
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ũ
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ề.
• 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
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:
Trong hình trên, các thành phần chính của GRAM gồm:
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.
• 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.
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.
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ọ.
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
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.
• 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.
Cookie Path được cấu hình để dùng chung cho mọi subdomain: .domain.com (bao gồm
dấu . ở đầu)
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.
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
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxii
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ũ
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.
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).
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ếu
• Drop 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.
• Chat Room - chat thời gian thực cho mọi thành viên đang đăng nhập vào site
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxiv
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ũ
• 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.
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:
External
Aggregator
Client
Internal
Aggregator
Tool Code
Tools
Application
Services
Services
Framework
Services
System
System
Sakai JSF
Widget Set
The Sakai Framework
Java Server
Faces in JSP
Sakai Application
Services
Sakai/OKI
APIs
Lớp Aggregation
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:instruction_message
value="#{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_item
action="#{MyTool.processActionDoIt}
value="#{msgs.sample_one_cmd_go}" />
</sakai:button_bar>
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.
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.
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.
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.
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…
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.
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 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.
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.
Portlet
Portlet 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.
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 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.
Để 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
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxiii
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ũ
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.
• 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.
• 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.
• 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>
• 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.
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xxxv
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ũ
• 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 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.
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.
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.
Đặ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:
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í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 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.
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ì?
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ỉ đó.
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 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.
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:
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.
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.
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.
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á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.
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.
RequestFilter PortletServlet
Sakai JSR-168
Tool Tool
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:
<registration>
<tool
id=" proxymanager-portlet.ProxyManagerPortlet"
title=”ProxyManager"
description="Proxy Manager Portlet”
>
<category name="course" />
<category name="project" />
</tool>
</registration>
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.
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.
• 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.
Trước hết là chỉnh file cấu hình web.xml như hình ở dưới.
portlet-jsr-api-2.1.jar
proxymanager-api-4.3.jar
log4j-1.2.8.jar
cog-jglobus-1.4-dev-071030.jar
Hình 3. 10: Portlet Proxy Manager trong Sakai.
jgss-OGCE.jar
Đế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 commons-logging-1.1.jar
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ả
commons-io-1.0.jar
SVTH:jce-jdk13-131.jar
Huỳnh Quang Trung – Đặng Hoàng Thiên Phong xlvii
jarpc-OGCE.jar
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á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ụ
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
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:
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 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.
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.subm
it(SandboxingTaskHandler
at
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 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ư
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ư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.
• Đề 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
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lii
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ũ
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
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.
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.
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:
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.
[root@phongcnttbk gridserver]$ ls
Bạn Comment dòng script cuối cùng của file install.sh rồi lưu file lại.
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.
[globus@phongcnttbk gridserver]$ cd
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à:
cn=Globus Simple CA, ou=simpleCA-phongcnttbk, ou=GlobusTest, o=Grid
trong đó:
- 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.
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.
Enter PEM pass phrase:<MyPEMpassPharse>
Đế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
/home/globus/.globus/simpleCA//private/cakey.pem
/home/globus/.globus/simpleCA//cacert.pem
Để 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
/home/globus/.globus/simpleCA/globus_simple_ca_e25b0701_setup-0.19.tar.gz
SVTH: Huỳnh Quang Trung – Đặng Hoàng Thiên Phong lv
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ũ
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:
[root@phongcnttbk globus]#
$GLOBUS_LOCATION/setup/globus_simple_ca_e25b0701_setup/setup-gsi –default
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:
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:
[globus@phongcnttbk ~]$ grid-ca-sign -in /etc/grid-security/hostcert_request.pem
-out hostsigned.pem
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.
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:
[root@phongcnttbk grid-security]# cp hostcert.pem containercert.pem
Kiểm tra quyền sở hữu của các chứng chỉ vừa được tao ra:
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:
[globus@phongcnttbk ~]$ grid-ca-sign -in usercert_request.pem -out usercert.pem
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
[phongcnttbk@phongcnttbk .globus]$ ll
total 12
/O=Grid/OU=GlobusTest/OU=simpleCA-phongcnttbk/CN=host/phongcnttbk
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.
Như vây là ta đã xác thực cho user và map user phongcnttbk với proxy của nó.
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.
#
# 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
và sau đó lưu lại. "none"
Tiếp theo là thêm dịch vụ myproxy-server vào hệ thống bằng lệnh sau:
[root@phongcnttbk ~]#cat
$GLOBUS_LOCATION/share/myproxy/etc.services.modifications >> /etc/services
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:
Sau đó ta cần cho cấu hình để myproxy-server khởi động cùng với hệ thống
root@choate:~# cp $GLOBUS_LOCATION/share/myproxy/etc.xinetd.myproxy
/etc/xinetd.d/myproxy
root@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
}
Tiếp theo là khởi động dịch vụ myproxy-server lên.
Reloading configuration: [ OK ]
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
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 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-logon -s ‘Hostname’ -l ‘Username.
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 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:
Submitting job...Done.
Một số lỗi thường gặp trong quá trình cài đặt và cấu hình Globus
• 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:
[root@phongcnttbk]# myproxy-server
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:
ERROR: Couldn't verify the authenticity of the user's credential to generate a proxy
from.
Use -debug for further information.
grid-proxy-init
Nguyên nhân: failed
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.
Submitting job...Failed.
• 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.
Thiết lập đường dẫn path đến thư mục maven 2.2.0-2
export $PATH=$PATH:$HOME/maven2.2.0-2/bin
export $CATALINA_HOME=$HOME/ogce-portal-only/portal-deploy/apach-
tomcat-5.5.27/bin
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:
Quá trình cài đặt thành công. Để chạy OGCE portal thì ta phải chạy tomcat trước:
http://phongcnttbk:8080/gridsphere/
Ở đâ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.
JDK:
Link : http://java.sun.com/javase/downloads/5u22/jdk
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:
http://subversion.apache.org/packages.html
Maven 2.2.1:
Link: http://maven.apache.org/download.html
Tả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:
export MAVEN_HOME=/your/maven/dir
export PATH=$PATH:$MAVEN_HOME/bin
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.26
Link: http://tomcat.apache.org/download-55.cgi
Tải xuống và giải nén gói apache-tomcat-5.5.26.tar.gz
Thiế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
MySQL
flush privileges;
Biên dịch và khởi động 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
sakaisrc/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/defa
ult.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.
#vendor@org.sakaiproject.service.framework.sql.SqlService=hsqldb
#driverClassName@javax.sql.BaseDataSource=org.hsqldb.jdbcDriver
#hibernate.dialect=org.hibernate.dialect.HSQLDialect
vendor@org.sakaiproject.db.api.SqlService=mysql
driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLDialect
set username@javax.sql.BaseDataSource=sakai
set password@javax.sql.BaseDataSource=ironchef
cd master
cd ../
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.
Đầ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
<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>
ở đâ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.
Hình 4. 4:Sakai có tích hợp JobSubmit portlet và có thể submit một job
[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
[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.
[15]GRAM,http://globus.org/toolkit/docs/4.0/execution/wsgram/WS_GRAM_Approach.ht
ml