SVnet.vn TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM SINH VIÊN THỰC HIỆN Nguyễn Mạnh Dũng 0112132 Nguyễn Đăng Thành 0112280 TÌM HIỂU CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG LUẬN VĂN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN Thầy Cao Đăng Tân TP. HỒ CHÍ MINH, 12/2005
231
Embed
Chương 1: Một số lời khuyên - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van-de-tai-cd-dh/... · đây không thiên về giới thiệu chi
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
SVnet.vn
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM
SINH VIÊN THỰC HIỆN
Nguyễn Mạnh Dũng 0112132 Nguyễn Đăng Thành 0112280
GIÁO VIÊN HƯỚNG DẪN TThhầầyy CCaaoo ĐĐăănngg TTâânn
TP. HỒ CHÍ MINH, 12/2005
SVnet.vn
Lời cảm ơn
- i -
LLờờii ccảảmm ơơnn Nhóm thực hiện xin bày tỏ lòng biết ơn và tri ân sâu sắc đến tất cả mọi người
đã giúp đỡ, hỗ trợ thực hiện luận văn này, một điểm mốc rất quan trọng trong cuộc
đời và sự nghiệp của chúng em.
Chúng em xin cảm ơn Khoa Công nghệ Thông tin trường Đại học Khoa học
Tự nhiên TP.HCM đã cho phép và tạo điều kiện để chúng em thực hiện luận văn
này.
Luận văn này sẽ không thể hoàn thành nếu không có sự giúp đỡ và chỉ bảo
tận tình của thầy Cao Đăng Tân, người thầy hướng dẫn của chúng em. Chúng em
xin chân thành biết ơn về những chỉ bảo, định hướng nghiên cứu thực hiện, hỗ trợ,
tạo những điều kiện tốt nhất cho chúng em trong suốt quá trình thực hiện đề tài.
Chúng con xin bày tỏ lòng biết ơn sâu sắc đến Bố, Mẹ, những bậc sinh thành
đã chịu thương, chịu khó nuôi dưỡng, hỗ trợ, động viên, ủng hộ chúng con trong
những lúc khó khăn để chúng con có được như ngày hôm nay.
Chúng em xin chân thành cảm ơn tất cả quý thầy cô trong khoa Công nghệ
Thông tin đã tận tình chỉ bảo, rèn luyện, truyền đạt những tri thức, kỹ năng, kinh
nghiệm quý báu cho chúng em trong suốt 4 năm ở giảng đường đại học. Đây là
những hành trang quý giá để chúng em vững bước vào đời.
Nhóm thực hiện xin chân thành cảm ơn tất cả các anh chị, bạn bè, đặc biệt là
các thầy cô Phòng máy Mạng, thầy Trần Minh Triết, thầy Lu Boun Vinh, đã nhiệt
tình động viên, ủng hộ, chia sẻ những kinh nghiệm, kiến thức quý báu, tài liệu, hỗ
trợ không những trong quá trình thực hiện luận văn mà còn trong suốt thời gian học
tập dưới mái trường này.
Mặc dù đã hết sức nỗ lực và cố gắng, nhưng luận văn chắc chắn không tránh
khỏi những thiếu sót. Chúng em kính mong nhận được sự cảm thông và tận tình chỉ
bảo, góp ý của quý Thầy Cô và các bạn. Một lần nữa xin gửi đến tất cả mọi người
lời cảm ơn chân thành nhất. Xin cảm ơn !.
Nhóm thực hiện Nguyễn Mạnh Dũng & Nguyễn Đăng Thành
SVnet.vn
Lời nói đầu
- ii -
LLờờii nnóóii đđầầuu Công nghệ Grid Computing ra đời đánh dấu một bước phát triển mới trong
lĩnh vực điện toán hiệu năng cao. Nó cho phép tận dụng năng lực xử lý, lưu trữ
cùng các tài nguyên nhàn rỗi khác để cung cấp một môi trường tính toán có năng
lực xử lý lớn, khả năng lưu trữ dồi dào để giải quyết các bài toán phức tạp - khó có
thể giải quyết được với các công nghệ hiện hành hoặc giải quyết được nhưng với
chi phí rất cao - trong khoa học, thương mại. Grid Computing giúp tận dụng tối đa
tài nguyên, tăng cường hợp tác, giảm chi phí đầu tư trong khi vẫn cung cấp năng lực
tính toán như mong muốn. Trong những năm vừa qua, nhiều tổ chức, tập đoàn công
nghệ thông tin lớn đã chọn công nghệ Grid Computing làm chiến lược phát triển
của mình, đã đầu tư nghiên cứu nhằm sớm đưa công nghệ Grid Computing vào thực
tế. Công nghệ này đang ngày càng thu hút được sự quan tâm chú ý từ khắp nơi trên
thế giới. Có thể nói công nghệ Grid Computing là một xu hướng phát triển mới
trong ngành công nghệ thông tin.
Hiện nay, đất nước ta đang thực hiện công cuộc công nghiệp hoá, hiện đại
hóa, trong đó việc rút ngắn sự tụt hậu, phát triển về khoa học công nghệ là yếu tố
then chốt quyết định đến thành công của công cuộc đổi mới. Song song với quá
trình phát triển, ngày càng có nhiều bài toán mới, đòi hỏi năng lực xử lý lớn xuất
hiện trong khoa học, thương mại và quản lý đất nước. Các công nghệ tính toán hiện
hành cũng được áp dụng nhưng không thể triển khai rộng rãi để có thể giải quyết
hết các nhu cầu do chi phí đầu tư quá lớn. Việc nghiên cứu, áp dụng công nghệ Grid
Computing là một giải pháp tốt để giải quyết các tình huống này. Hơn nữa, công
nghệ Grid Computing hiện nay còn khá mới mẻ, đang trong giai đoạn hoàn thiện,
việc cùng tham gia nghiên cứu với cộng đồng thế giới sẽ giúp chúng ta học hỏi kinh
nghiệm, tiến tới làm chủ công nghệ, từ đó có thể phát triển theo hướng đi của riêng
mình, đáp ứng nhu cầu tính toán hiệu năng cao ngày càng tăng của đất nước.
SVnet.vn
Lời nói đầu
- iii -
Với tinh thần tham gia nghiên cứu, học hỏi công nghệ, đề tài luận văn “Tìm
hiểu công nghệ Grid Computing và ứng dụng thử nghiệm trong bài toán quản
trị mạng” được thực hiện nhằm đi những bước đầu tiên trong quá trình nghiên cứu,
phát triển, ứng dụng Grid vào thực tế. Luận văn nghiên cứu các vấn đề chung của
công nghệ Grid Computing, bộ Globus Toolkit, tiến hành cài đặt một môi trường
Grid với bộ Globus Toolkit, đề xuất mô hình và cài đặt thử nghiệm ứng dụng hỗ trợ
quản trị mạng trên nền Grid.
Luận văn được trình bày gồm 8 chương với nội dung như sau:
Chương 1. Đặt vấn đề : Giới thiệu sơ lược về công nghệ Grid
Computing và lĩnh vực quản trị mạng, đồng thời xác định mục tiêu của đề tài.
Chương 2. Tổng quan về công nghệ Grid Computing : Giới thiệu các
vấn đề của công nghệ Grid Computing, tìm hiểu và so sánh các phần mềm nền
tảng Grid để có cái nhìn khá toàn diện về công nghệ Grid Computing hiện nay.
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2 : Giới thiệu mô
hình và các cơ chế hoạt động của các thành phần trong bộ Globus Toolkit 3.2. Ở
đây không thiên về giới thiệu chi tiết các triển khai cụ thể, điều này có thể tham
khảo từ các tài liệu hướng dẫn sử dụng.
Chương 4. Phát triển ứng dụng với Globus Toolkit 3.2 : Giới thiệu các
vấn đề cần quan tâm khi xây dựng một ứng dụng Grid với bộ Globus Toolkit
3.2.
Chương 5. Quản trị mạng và các hệ thống quản trị : Giới thiệu tổng
quan về lĩnh vực quản trị mạng cũng như các hệ thống quản trị mạng.
Chương 6. Hệ thống quản trị Grid NetManager : Giới thiệu mô hình
hệ thống quản trị mạng dựa trên nền công nghệ tính toán Grid Computing.
Chương 7. Phân tích, thiết kế, cài đặt thử nghiệm ứng dụng Grid
NetManager.
Chương 8. Kết luận : Là chương cuối cùng của luận văn, tóm lại các vấn
đề đã nghiên cứu tìm hiểu, đề ra hướng phát triển trong tương lai.
SVnet.vn
Mục lục
- iv -
MMụụcc llụụcc
Lời cảm ơn .........................................................................................................i Lời nói đầu ........................................................................................................ii Mục lục.............................................................................................................iv
Danh sách hình ...............................................................................................viii Danh sách bảng .................................................................................................x
Một số thuật ngữ ..............................................................................................xi Các chữ viết tắt................................................................................................xii Tóm tắt luận văn.............................................................................................xiii Chương 1. Mở đầu..........................................................................................1
1.1. Công nghệ Grid Computing (tính toán lưới) ..............................................................1 1.2. Vấn đề quản trị mạng..................................................................................................3 1.3. Mục tiêu đề tài ............................................................................................................4
Chương 2. Tổng quan về công nghệ Grid Computing ...................................5
2.1. Khái niệm Grid ...........................................................................................................5 2.1.1. Theo dòng lịch sử ................................................................................................5 2.1.2. Khái niệm.............................................................................................................6 2.1.3. Tài nguyên của Grid ............................................................................................7
2.2. Phân loại Grid & Grid Topology ................................................................................9 2.2.1. Các kiểu Grid .......................................................................................................9 2.2.2. Đồ hình Grid (Grid Topology)...........................................................................11
2.3. Các thách thức, yêu cầu của công nghệ Grid............................................................15 2.3.1. Quản lý tài nguyên (Resource Management) ....................................................15 2.3.2. Bảo mật (Security) .............................................................................................17 2.3.3. Quản lý thông tin ...............................................................................................19 2.3.4. Quản lý dữ liệu ..................................................................................................20 2.3.5. Phát triển ứng dụng............................................................................................20 2.3.6. Các vấn đề khác .................................................................................................20 2.3.7. Các việc cần làm................................................................................................21
2.4. Ích lợi & Ứng dụng...................................................................................................22 2.5. Các thành phần cơ bản của một hệ thống cơ sở hạ tầng Grid...................................24 2.6. Kiến trúc Grid ...........................................................................................................27
2.6.1. Bản chất Kiến trúc Grid .....................................................................................27 2.6.2. Chi tiết Kiến trúc Grid tổng quát .......................................................................28 2.6.3. Kiến trúc Grid trong thực tế...............................................................................35
2.7. Chuẩn hoá Grid.........................................................................................................36 2.8. Giới thiệu các dự án Grid middleware chính............................................................40
2.8.3. Legion ................................................................................................................43 2.8.4. GridBus..............................................................................................................45 2.8.5. So sánh...............................................................................................................48
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2...............................52
3.1. Giới thiệu ..................................................................................................................52 3.1.1. Giới thiệu ...........................................................................................................52 3.1.2. Lịch sử phát triển ...............................................................................................53
3.2. Các công nghệ, chuẩn liên quan ...............................................................................53 3.2.1. Service Oriented Architeture (SOA)..................................................................53 3.2.2. Web Service.......................................................................................................56 3.2.3. OGSA.................................................................................................................58 3.2.4. OGSI và Grid Service ........................................................................................65
3.3. Kiến trúc Globus Toolkit ..........................................................................................74 3.3.1. Mô hình kiến trúc GT2 ......................................................................................75 3.3.2. Mô hình kiến trúc GT3 ......................................................................................76
3.4. Các thành phần chính................................................................................................79 3.4.1. Sercurity Infrastructure ......................................................................................79 3.4.2. Resource Management.......................................................................................94 3.4.3. Information Service .........................................................................................107 3.4.4. Data Management ............................................................................................113 3.4.5. Thành phần mới trong GT3 .............................................................................114
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2........................115
4.1. Khởi đầu dự án........................................................................................................115 4.1.1. Định hướng phát triển hệ thống .......................................................................115 4.1.2. Đánh tính khả thi của ứng dụng khi chạy trên Grid.........................................117
4.2. Các yêu cầu cần quan tâm khi xây dựng ứng dụng ................................................118 4.2.1. Khả năng mở rộng (Scalability).......................................................................118 4.2.2. Bảo mật ............................................................................................................118 4.2.3. Tính mềm dẻo của ứng dụng (Flexibility) .......................................................119 4.2.4. Các kết nối với bên ngoài ................................................................................119 4.2.5. Hiệu suất ứng dụng(Performance) ...................................................................120 4.2.6. Độ tin cậy (Reliability) ....................................................................................121 4.2.7. Quản trị hệ thống (Management).....................................................................122 4.2.8. Đồ hình hệ thống (System Topology)..............................................................123 4.2.9. Môi trường đa nền tảng....................................................................................123 4.2.10. Định dạng file ................................................................................................124 4.2.11. Việc cài đặt hệ thống .....................................................................................124 4.2.12. Vấn đề thông tin Grid ....................................................................................124 4.2.13. Tính tiện dụng................................................................................................124
4.3. Thiết kế tổng quan ..................................................................................................125 4.4. Một số vấn đề cần quan tâm trong thiết kế chi tiết và viết mã ...............................126
4.4.1. Kiến trúc ứng dụng ..........................................................................................127 4.4.2. Xem xét sử dụng ngôn ngữ lập trình ...............................................................130 4.4.3. Vấn đề phụ thuộc của công việc vào môi trường hệ thống..............................131 4.4.4. Đồ hình công việc ............................................................................................132
4.5. Triển khai cài đặt các Grid Service.........................................................................133
SVnet.vn
Mục lục
- vi -
4.5.1. Các bước xây dựng và triển khai Grid Service................................................134 4.5.2. Xây dựng client................................................................................................140
Chương 5. Quản trị mạng và các hệ thống quản trị....................................142
5.1. Quản trị mạng .........................................................................................................142 5.1.1. Khái niệm.........................................................................................................142 5.1.2. Các lĩnh vực quản trị mạng..............................................................................142
5.2. Hệ thống quản trị mạng ..........................................................................................144 5.2.1. Mô hình và hoạt động ......................................................................................144 5.2.2. Một số chức năng cơ bản của một hệ thống quản trị mạng .............................146 5.2.3. Hệ thống quản trị mạng trong thực tế ..............................................................148
5.3. Hệ thống Intrusion Detection System (IDS)...........................................................149 5.3.1. Khái niệm.........................................................................................................149 5.3.2. Các hướng tiếp cận ..........................................................................................149
5.4. Giới thiệu một số công cụ hỗ trợ quản trị mạng .....................................................150 5.4.1. Ethereal ............................................................................................................150 5.4.2. Snort.................................................................................................................152
Chương 6. Hệ thống quản trị Grid NetManager.........................................153
6.1. Giới thiệu ý tưởng...................................................................................................153 6.2. Yêu cầu chức năng của một hệ thống quản trị mạng..............................................154 6.3. Mô hình thành phần và hoạt động của hệ thống .....................................................155
6.3.1. Mô hình thành phần .........................................................................................155 6.3.2. Cách thức hoạt động ........................................................................................157
6.4. Phân tích và định hướng phát triển ứng dụng.........................................................158 6.5. Giới hạn vấn đề thực hiện của luận văn..................................................................159
Chương 7. Phân tích, thiết kế và cài đặt thử nghiệm ứng dụng .................161
7.1. Phân tích .................................................................................................................161 7.1.1. Ngữ cảnh hệ thống...........................................................................................161 7.1.2. Lược đồ Use Case ............................................................................................162 7.1.3. Đặc tả Use Case ...............................................................................................163 7.1.4. Mô tả các dòng sự kiện ....................................................................................167
7.2. Thiết kế ...................................................................................................................179 7.2.1. Sơ đồ các đối tượng cài đặt..............................................................................179 7.2.2. Thiết kế giao diện ............................................................................................180
7.3. Cài đặt & Triển khai ...............................................................................................183 7.3.1. Công cụ và môi trường phát triển ứng dụng....................................................183 7.3.2. Mô hình cài đặt ................................................................................................184 7.3.3. Mô hình triển khai............................................................................................184 7.3.4. Thử nghiệm......................................................................................................185
Chương 8. Kết luận.....................................................................................186
8.1. Đánh giá..................................................................................................................186 8.1.1. Về luận văn ......................................................................................................186 8.1.2. Về ứng dụng.....................................................................................................186
8.2. Hướng phát triển, mở rộng của luận văn ................................................................187 8.2.1. Về luận văn ......................................................................................................187
SVnet.vn
Mục lục
- vii -
8.2.2. Về ứng dụng.....................................................................................................187 8.3. Lời kết .....................................................................................................................188
A. Các tiêu chí đánh giá tính khả khi của một dự án Grid.............................................189 B. Định dạng file GWSDL ............................................................................................191 C. Kỹ thuật cài đặt các chức năng cơ bản của Grid Service ..........................................193
C.1. Kỹ thuật cài đặt Operation Provider...................................................................193 C.2. Thêm thành phần dữ liệu (Service Data Element (SDE))..................................196 C.3. Cài đặt cơ chế Notification.................................................................................199 C.7. Cài đặt kỹ thuật tạo service động (Transient service) ........................................202 C.5. Kỹ thuật Logging (Ghi vết)................................................................................205 C.6. Kỹ thuật quản lý chu trình sống của service (Lifecycle Management)..............206
D. Các interface của một OGSI Service ........................................................................208 E. Cấu trúc một chứng chỉ điện tử .................................................................................211
Tài liệu tham khảo.........................................................................................213
Các Website...................................................................................................216
SVnet.vn
Danh sách hình
- viii -
DDaannhh ssáácchh hhììnnhh Hình 2-1 Tài nguyên Grid dưới quan điểm của người dùng, là một khối thống nhất có được
nhờ sự ảo hoá. ................................................................................................................9 Hình 2-2 Hình thức hoạt động của Grid Tính toán..............................................................10 Hình 2-3 Các đồ hình Grid. .................................................................................................11 Hình 2-4 Đồ hình SimpleGrid .............................................................................................12 Hình 2-5 Đồ hình IntraGrid .................................................................................................13 Hình 2-6 Đồ hình ExtraGrid ................................................................................................14 Hình 2-7 Các minh họa về đồ hình InterGrid. .....................................................................15 Hình 2-8 Kiến trúc Grid tổng quát.......................................................................................29 Hình 2-9 Quan điểm của các lập trình viên về kiến trúc Grid. ...........................................34 Hình 2-10 Kiến trúc Grid trong thực tế với các thành phần. ...............................................35 Hình 2-11 Các dự án Grid tương ứng với các tầng..............................................................36 Hình 2-12 Mối quan hệ giữa các chuẩn về Grid Service.....................................................39 Hình 2-13 Mô hình kiến trúc hoạt động của UNICORE .....................................................41 Hình 2-14 Kiến trúc của Legion. .........................................................................................44 Hình 2-15 Kiến trúc GridBus...............................................................................................46 Hình 2-16 So sánh giữa UNICORE, Globus, Legion và GridBus. .....................................49 Hình 3-1 Các thành phần của kiến trúc SOA.......................................................................54 Hình 3-2 Kiến trúc của bộ Globus Toolkit. .........................................................................75 Hình 3-3 Mô hình các thành phần của một hệ thống sử dụng GT2.....................................76 Hình 3-4 Mô hình tổ chức các thành phần GT3. .................................................................77 Hình 3-5 Các thành phần của GSI. ......................................................................................80 Hình 3-6 Quy trình khởi tạo để sử dụng GSI.......................................................................87 Hình 3-7 Thủ tục chứng thực và phân quyền với GSI.........................................................88 Hình 3-8 Cơ chế ủy quyền trong GSI. .................................................................................89 Hình 3-9 Thủ tục uỷ quyền của một proxy trong GSI. ........................................................90 Hình 3-10 Kiến trúc quản lý tài nguyên trong Globus Toolkit............................................95 Hình 3-11 Các trạng thái của một công việc. ......................................................................98 Hình 3-12 Các thành phần và cơ chế hoạt động của pre-WS GRAM .................................99 Hình 3-13 Cơ chế hoạt động có DUROC trong pre-WS GRAM. .....................................101 Hình 3-14 Các thành phần và cơ chế hoạt động của WS-GRAM. ...................................105 Hình 3-15 Mô hình quản lý thông tin trong Grid của Globus Toolkit...............................107 Hình 3-16 Ví dụ tổ chức dữ liệu của MDS2......................................................................109 Hình 3-17 Mô hình tổ chức dữ liệu phân cấp trong MDS2. ..............................................110 Hình 3-18 Các thành phần và cơ chế hoạt động của MDS2.............................................111 Hình 4-1 Luồng ứng dụng song song. ...............................................................................128 Hình 4-2 Luồng ứng dụng tuần tự. ....................................................................................128 Hình 4-3 Luồng ứng dụng mạng........................................................................................129 Hình 4-4 Các file cần thiết để triển khai Grid Service với Ant. ........................................139 Hình 5-1 Mô hình hệ thống quản trị mạng ........................................................................144 Hình 5-2 Màn hình giao diện Ethereal...............................................................................151 Hình 6-1 Mô hình thành phần ứng dụng Grid NetManager. .............................................155 Hình 6-2 Mô hình các thành phần của ứng dụng Grid NetManager thử nghiệm. .............160 Hình 7-1 Ngữ cảnh hệ thống..............................................................................................161 Hình 7-2 Sơ đồ Usecase ứng dụng Grid NetManager thử nghiệm....................................162
SVnet.vn
Danh sách hình
- ix -
Hình 7-3 Sơ đồ lớp cài đặt lớp đối tượng. .........................................................................179 Hình 7-4 Màn hình chính ứng dụng Grid NetManager thử nghiệm..................................181 Hình 7-5 Màn hình Packet Capture Configue ...................................................................182 Hình 7-6 Mô hình cài đặt. ..................................................................................................184 Hình 7-7 Sơ đồ triển khai ứng dụngGrid NetManager thử nghiệm...................................184 Hình 7-8 Mô hình cài đặt thử nghiệm................................................................................185 Hình 8-1 Lớp triển khai interface của Grid service bằng kỹ thuật kế thừa........................194 Hình 8-2 Cài đặt intrface củaGrid service bằng kỹ thuật Operation Provider...................194 Hình 8-3 Ví dụ về SDE của MathService..........................................................................196 Hình 8-4 Sơ đồ hoạt động của cơ chế Notification trong GT3..........................................200 Hình 8-5 Cấu trúc một chứng chỉ điện tử. .........................................................................211
SVnet.vn
Danh sách bảng
- x -
DDaannhh ssáácchh bbảảnngg Bảng 2-1 Các đặc tính của tài nguyên. ................................................................................16 Bảng 2-2 Bảng so sánh các đặc tính của các middleware ...................................................50 Bảng 3-1 Bảng các interface chuẩn quy định bởi OGSA. ...................................................61 Bảng 3-2 Các thuộc tính cơ bản của một service data. ........................................................72 Bảng 3-3 Các file cấu hình GSI của GT3. ...........................................................................92 Bảng 3-4 Bảng các công cụ cấu hình GSI. ..........................................................................93 Bảng 3-5 Bảng các hàm API về GSI của GT3 ....................................................................94 Bảng 3-6 Bảng các hàm API của pre-WS GRAM.............................................................102 Bảng 3-7 Các thành phần của GT Core .............................................................................114 Bảng 6-1 Các thành phần của ứng dụng Grid NetManager...............................................156 Bảng 7-1 Danh sách các actor............................................................................................162 Bảng 7-2 Danh sách các usecase .......................................................................................162 Bảng 7-3 Danh sách các đối tượng cài đặt. .......................................................................180 Bảng 7-4 Danh sách các giao diện.....................................................................................180 Bảng 7-5 Mô tả màn hình chính. .......................................................................................182 Bảng 7-6 Mô tả màn hình cấu hình bắt packet. .................................................................183 Bảng 7-7 Các thành phần triển khai...................................................................................184 Bảng 8-1 Các tiêu chí đánh giá tính khả thi của ứng dụng Grid........................................190 Bảng 8-2 Các hàm callback trong GT3. ............................................................................206 Bảng 8-3 Các interface của một OGSI Service .................................................................211
SVnet.vn
Một số thuật ngữ
- xi -
MMộộtt ssốố tthhuuậậtt nnggữữ
Capture filter Các tiêu chuẩn lọc packet. Client Máy khách, sử dụng dịch vụ. Factory Là một thành phần tạo lập và quản lý các Grid
service instance. Grid Là một hệ thống tính toán sử dụng công nghệ
Grid Computing Grid Computing Công nghệ tính toán lưới. Grid service instance Một thể hiện của Grid service. Hosting environment Môi trường mà trên đó các Grid Service có thể
thực thi. Interface (OGSA) Giao diện của một OGSA Service. Lifecyle Chu trình sống của Grid Service Middleware Là phần mềm cho phép tổ chức, tích hợp các tài
nguyên và các chức năng vào Grid Node, Host Là một nút của Grid, có thể là các máy tính hay
các thiết bị tính toán khác. Protocol Các giao thức quy định các thức liên lạc giữa các
thành phần thông qua hệ thống mạng. Proxy Là một thành phần đại diện cho người dùng Grid
thực thi các tác vụ. Server Máy chủ, cung cấp dịch vụ. Service, Grid service(OGSA),
Một dịch vụ Grid theo khái niệm đưa ra bởi OGSA.
Service data Thành phần dữ liệu của một Service Site Là một đơn vị tham gia đóng góp tài nguyên cho
Grid, có hệ thống quản trị riêng. User Người sử dụng dịch vụ Grid Virtual Organization Tổ chức ảo, là một liên minh tạm thời giữa các tổ
chức trong Grid dùng để chia sẽ tài nguyên.
SVnet.vn
Các chữ viết tắt
- xii -
CCáácc cchhữữ vviiếếtt ttắắtt CA Certificate Authority DN Distinguished Name EJB Enterprise JavaBeans GGF Global Grid Forum GSH Grid Service Handle GSI Grid Security Infrastructure GSR Grid Service Referance GT{x} Globus Toolkit Version x GWSDL Grid Web Services Description Language MDS Metacomputing Directory Service OGSA Open Grid Services Architecture OGSI Open Grid Services Infrastructure PKI Public Key Infrastructure RA Registrant Authority SDE Service Data Element SOA Service Oriented Architeture SSL Secure Sockets Layer URI Uniform Resource Indicator WSDL Web Services Description Language WSRF Web Services Resource Framework
SVnet.vn
Tóm tắt luận văn
- xiii -
TTóómm ttắắtt lluuậậnn vvăănn 1. Thông tin chung về đề tài:
Tên đề tài: “Tìm hiểu công nghệ Grid Computing và ứng dụng thử nghiệm
trong bài toán quản trị mạng” GVHD: Thầy CAO ĐĂNG TÂN. Sinh viên thực hiện:
1. MSSV : 0112132 Họ và tên : Nguyễn Mạnh Dũng. 2. MSSV : 0112280 Họ và tên : Nguyễn Đăng Thành.
2. Tóm tắt nội dung luận văn Luận văn thực hiện nghiên cứu tìm hiểu các vấn đề chung của công nghệ Grid
Computing như bản chất, các thách thức, yêu cầu, kiến trúc, ích lợi, các chuẩn liên
quan, cũng như các dự án chính về cơ sở hạ tầng Grid nhằm đưa ra một tầm nhìn
tổng quan về công nghệ Grid Computing hiện nay.
Tìm hiểu về mô hình, hoạt động các thành phần, chi tiết các chuẩn sử dụng, một
số vấn đề khi phát triển ứng dụng Grid với bộ Globus Toolkit phiên bản 3.2.
Nghiên cứu, tìm hiểu lĩnh vực quản trị mạng và các hệ thống quản trị, các hệ
thống phát hiện xâm nhập, từ đó đề xuất mô hình ứng dụng hệ thống quản trị mạng
sử dụng công nghệ Grid Computing làm nền tảng tính toán và tiến hành cài đặt thử
nghiệm một số chức năng của ứng dụng.
3. Một số từ khoá liên quan đến tài Grid, Grid computing, Globus, Grid sevice, network management, tính toán
lưới, …
4. Lĩnh vực áp dụng
Tính toán lưới.
Quản trị mạng.
5. Các thuật toán, phương pháp, quy trình chính được nghiên cứu, ứng dụng trong đề tài 6. Các công cụ, công nghệ chính được nghiên cứu, ứng dụng trong đề tài
SVnet.vn
Tóm tắt luận văn
- xiv -
• Hệ điều hành và môi trường mạng Linux Redhat 9.0 • Môi trường lập trình C/C++ trong Linux với thư viện giao diện đồ hoạ
GTK. • Bộ Globus Toolkit 3.2 và phát triển ứng dụng với nó.
SVnet.vn
Chương 1. Mở đầu
- 1 -
CChhưươơnngg 11.. MMởở đđầầuu
11..11.. CCôônngg nngghhệệ GGrriidd CCoommppuuttiinngg ((ttíínnhh ttooáánn llưướớii)) Với những tiến bộ trong nền công nghiệp sản xuất phần cứng máy tính, các thế
hệ máy tính ngày nay đã trở nên mạnh và rẻ hơn rất nhiều so với các thế hệ trước
đó. Cùng với sự hữu ích, máy tính đã trở nên phổ dụng khắp nơi trên thế giới, đi sâu
vào mọi công việc của con người, từ công việc hàng ngày, công sở, kinh doanh đến
sản xuất, nghiên cứu khoa học. Do đó số lượng máy tính hiện nay trên thế giới là rất
lớn với tổng cộng năng lực xử lý và lưu trữ khổng lồ.
Tuy nhiên, các ứng dụng ngày nay chỉ mới sử dụng được một phần rất nhỏ năng
lực xử lý và lưu trữ do các ứng dụng chỉ chạy trên các máy tính cục bộ, đơn lẻ, phân
tán khắp nơi theo địa lý. Từ đó dẫn đến lãng phí rất lớn. Một câu hỏi được đặt ra là
làm sao tận dụng tốt hơn năng lực của máy tính.
Mặt khác, theo đà phát triển, con người càng ngày càng đối mặt với nhiều vấn
đề lớn, phức tạp trong khoa học, thương mại đòi hỏi năng lực xử lý tính toán, lưu
trữ lớn :
- Trong khoa học :
Cách đây 10 năm các nhà sinh học đã rất vui mừng khi họ có thể giả
lập một đơn phân tử trên máy tính, ngày nay họ muốn giả lập hàng ngàn
phân tử thuốc, protein và tác dụng tương hỗ giữa chúng để tạo ra các loại
thuốc mới.
Để nghiên cứu các hạt cơ bản và tương tác giữa chúng, hàng năm
ngành Vật lý Năng lượng cao (High Energy Physics) tạo ra khoảng 10
Petabytes (dung lượng của khoảng 20 triệu đĩa CD-ROM) dữ liệu. Hay các
nhà vật lý địa cầu thực hiện theo dõi bầu khí quyển, tầng ozone, hàng ngày
phải lưu trữ và phân tích khoảng 100 Gigabytes dữ liệu ảnh chụp từ vệ tinh.
Ở đây cho thấy cần phải có năng lực lưu trữ rất lớn.
Việc phân tích, giải mã bộ gen người, các dự án nghiên cứu vũ trụ,…
cũng cần năng lực xử lý rất lớn.
SVnet.vn
Chương 1. Mở đầu
- 2 -
Vấn đề hợp tác giữa hàng ngàn nhà khoa học trên toàn thế giới, hỗ trợ
việc chia sẻ một lượng lớn dữ liệu, thực hiện các tính toán phức tạp trực
tuyến trên các dữ liệu đó.
- Trong thương mại:
Các bài toán phân tích xử lý số liệu kinh tế của các quốc gia, các công
ty đa quốc gia, …
Các công ty cung cấp dịch vụ mạng cho hàng triệu người dùng trên
toàn thế giới.
Các bài toán mô phỏng, giả lập trong thiết kế sản phẩm công
nghiệp…
Bài toán xử lý thông tin trong quản trị mạng, các hệ thống phát hiện
tấn công, xâm nhập mạng.
…..
Một máy tính đơn, một nhóm các máy tính(cluster) hay thậm chí một siêu máy
tính chuyên dụng cũng không thể đáp ứng được nhu cầu tính toán, lưu trữ ngày
càng lớn như vậy. Một số bài toán cũng có thể được giải quyết nhưng rất khó khăn,
với chi phí rất cao mà không phải quốc gia, tổ chức nào cũng thực hiện được (đặc
biệt là các nước đang phát triển), còn những bài toán khác có thể nói là không thể
giải quyết được với công nghệ tính toán hiện nay.
Thực tế khiến người ta nảy sinh ý tưởng phải kết hợp các máy tính phân tán
khắp nơi trên thế giới trở thành một siêu máy tính khổng lồ nhằm tận dụng năng lực
tính toán, lưu trữ hiện đang lãng phí để giải quyết các bài toán phức tạp trên đây với
chi phí thấp hơn.
Trước đây, khi các công nghệ mạng chưa phát triển thì ý tưởng trên hầu như
chưa thực hiện được. Nhưng hiện nay, các công nghệ mạng máy tính đã phát triển
vượt bậc, hiệu năng mạng tăng gấp đôi sau mỗi 9 tháng, ý tưởng về “siêu máy tính”
toàn cầu đã có cơ sở để trở thành hiện thực. Đến những năm cuối thế kỷ XX, các dự
án nghiên cứu đầu tiên về lĩnh vực này đã khai sinh ra công nghệ Grid Computing.
Công nghệ Grid Computing ra đời được dự đoán là công nghệ nền tảng của thế
kỷ XXI, làm thay đổi cách thức chúng ta tính toán, giống như Internet đã từng làm
SVnet.vn
Chương 1. Mở đầu
- 3 -
thay đổi cách thức trao đổi thông tin trong thế kỷ XX. Công nghệ Grid Computing
đã mở ra cơ hội mới cho các nước không có nền công nghiệp thiết kế, chế tạo phần
cứng máy tính mạnh, tạo ra các siêu máy tính để giải quyết các bài toán của riêng
mình với chi phí thấp và độ làm chủ cao. Ở Việt Nam, nhu cầu ứng dụng công nghệ
thông tin vào các hoạt động nghiên cứu Khoa học-Kỹ thuật, quản lý Kinh tế-Xã hội
ngày càng cao, đòi hỏi phải xử lý những khối lượng dữ liệu lớn, khối lượng tính
toán khổng lồ với chi phí thấp (vì chúng ta còn nghèo, kinh phí đầu tư cho ngành
Công nghệ thông tin chưa cao). Do đó, việc nghiên cứu, phát triển ứng dụng công
nghệ Grid Computing vào thực tế được xem là một giải pháp quan trọng để giải
quyết các bài toán trên. Hiện nay, chúng ta mới đang đi những bước đầu tiên…
11..22.. VVấấnn đđềề qquuảảnn ttrrịị mmạạnngg Ngày nay, mạng máy tính đã trở nên phổ biến khắp nơi với quy mô ngày càng
lớn. Do đó, công việc của bộ phận quản trị hệ thống mạng, đảm bảo cho hệ thống
hoạt động ổn định, hiệu năng cao, đáp ứng nhu cầu người dùng là một công việc hết
sức khó khăn. Để thực hiện tốt công việc của mình, bộ phận quản trị cần một hệ
thống theo dõi, giám sát các hoạt động trên mạng nhằm :
Xác định các lỗi thiết bị, cấu hình trong hệ thống mạng.
Tối ưu, quản lý hiệu quả tài nguyên mạng
Lập tài liệu về các mức độ đe doạ đối với hệ thống, để lập kế hoạch đối
phó, giảm thiểu nguy cơ hệ thống bị xâm hại.
Quản lý thông tin hoạt động của người dùng, phát hiện và ngăn chặn các
hoạt động xâm phạm hệ thống mạng.
Công việc quản lý trên đòi hỏi không những phải phân tích dữ liệu chạy trong hệ
thống mạng theo thời gian thực mà còn phải phân tích các dữ liệu ghi vết (log) về
các hoạt động trong hệ thống. Hiện nay, lượng dữ liệu lưu thông trong mạng máy
tính là rất lớn, nên 1 máy tính PC không thể thu thập và xử lý được mà cần một máy
lớn hoặc các thiết bị chuyên dụng hơn. Việc đưa vào sử dụng các thiết bị chuyên
dụng có chi phí rất cao, không thích hợp cho các hệ thống mạng vừa và nhỏ. Do đó,
hướng tiếp cận sử dụng công nghệ Grid Computing để tận dụng thời gian nhàn rỗi
SVnet.vn
Chương 1. Mở đầu
- 4 -
của các máy PC trong hệ thống mạng để xử lý thông tin, hỗ trợ các nhà quản trị
mạng được đưa ra.
11..33.. MMụụcc ttiiêêuu đđềề ttààii Nhằm tìm hiểu, góp phần vào việc phát triển và ứng dụng công nghệ Grid
Computing vào thực tiễn, đề tài:
“Tìm hiểu công nghệ Grid Computing và ứng dụng thử nghiệm trong
bài toán quản trị mạng”
được thực hiện với một số mục tiêu:
+ Tìm hiểu về công nghệ Grid Computing hiện nay để có một bức tranh tổng
quan về công nghệ, các vấn đề, các hướng giải quyết chủ yếu của nó nhằm làm tiền
đề tham khảo cho việc ứng dụng, phát triển công nghệ Grid trong tương lai.
+ Cài đặt, tìm hiểu mô hình, kiến trúc, môi trường, cách thức lập trình và
phát triển ứng dụng của bộ Globus Toolkit, một bộ công cụ xây dựng Grid hàng đầu
hiện nay.
+ Tìm hiểu về quản trị mạng và các hệ thống quản trị mạng.
+ Nghiên cứu và đề xuất mô hình hệ thống quản trị mạng trên nền tảng công
nghệ Grid Computing. Xây dựng thử nghiệm một số chức năng điển hình của hệ
thống quản trị để hiểu biết thêm về kỹ thuật xây dựng và phát triển ứng dụng Grid.
Hệ thống quản trị mạng chỉ là một công cụ hỗ trợ, việc sử dụng thông tin, thiết lập
các chiến lược, chính sách quản trị là nhiệm vụ của các nhà quản trị mạng.
Các chương tiếp theo trình bày những vấn đề đã nghiên cứu, tìm hiểu được.
Trong thực tế, kiến trúc Grid tổng quan đã được cài đặt và xây dựng như hình
2-10. Kiến trúc gồm 4 tầng tương ứng với các tầng của kiến trúc tổng quát như sau:
Hình 2-10 Kiến trúc Grid trong thực tế với các thành phần.
+ Tầng Fabric (tầng Fabric)
Giống như tầng Fabric trong kiến trúc tổng quát.
+ Tầng Core Middleware (Connectivity và Resource và nửa dưới của
Collective)
Cung cấp các dịch vụ như quản lý tiến trình ở xa, kết hợp, phân phối các tài
nguyên, quản lý truy cập không gian lưu trữ, đăng ký và tìm kiếm thông tin, bảo
mật và các khía cạnh của QoS như đặt trước, mua bán và trao đổi tài nguyên,… Các
dịch vụ này là sự trừu tượng hoá tính phức tạp và đa dạng của các tài nguyên bằng
cách cung cấp một phương pháp chung để truy cập tài nguyên.
+ Tầng User-level Middleware (Collective)
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 36 -
Tận dụng các giao diện ở tầng Core Middleware để cung cấp các dịch vụ có
mức độ trừu tượng cao hơn. Tầng này bao gồm các môi trường phát triển phần
mềm, công cụ lập trình, resource broker, bộ lập lịch,…
+ Tầng Application và Portal (Application)
Giống như tầng Fabric trong kiến trúc tổng quát.
Dưới đây là một số dự án Grid tương ứng với các tầng khác nhau.
Hình 2-11 Các dự án Grid tương ứng với các tầng.
22..77.. CChhuuẩẩnn hhooáá GGrriidd Một trong những vấn đề lớn của bất kỳ công nghệ tính toán nào là làm sao để
các thành phần khác nhau có thể “nói chuyện” được với nhau. Không có gì quan
trọng hơn việc làm cho các nền tảng khác nhau giao tiếp được với nhau. Đây cũng
là một trong những thách thức của công nghệ Grid Computing. Bởi vì công nghệ
Grid computing cần phải đáp ứng nhiều nhu cầu khác nhau, hỗ trợ nhiều loại công
nghệ, tài nguyên, trải rộng khắp thế giới, do nhiều tổ chức tham gia xây dựng, nên
để các thành phần Grid, ứng dụng Grid tương thích được với nhau cần phải có một
chuẩn chung, một ngôn ngữ chung thống nhất cho toàn bộ nền công nghệ.
Trong công nghệ Grid Computing, việc thiếu chuẩn hóa sẽ dẫn đến toàn bộ các
công ty, tổ chức, nhà phát triển xây dựng, phát triển công nghệ với các kỹ thuật và
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 37 -
giải pháp khác nhau. Trong thế giới riêng của mỗi nhóm phát triển Grid thì có thể
không là vấn đề lớn, nhưng khi mở rộng môi trường Grid, liên kết các nhóm vào thế
giới rộng hơn thì đây lại là vấn đề lớn, nó sẽ gây ra sự chia cắt, bất đồng và nhiều
hạn chế khác.
Việc xây dựng và áp dụng các chuẩn trong Grid mang lại lợi ích rất lớn, cơ bản
nhất là mang lại khả năng mở rộng các số lượng tài nguyên sẵn sàng cho Grid. Bên
cạnh đó, còn mang lại nhiều lợi ích khác như :
+ Liên kết hoạt động
Cho phép các hệ thống Grid có thể được thiết kế và phát triển theo nhiều
ngôn ngữ lập trình, nhiều môi trường, nhiều nền tảng khác nhau một cách dễ dàng
và hiệu quả.
+ Tăng tính mềm dẻo
Với sự chuẩn hóa, người dùng có thể chuyển đổi qua lại giữa các hệ thống
Grid, có nhiều lựa chọn hơn trong việc xây dựng các dự án.
+ Tăng năng lực của Grid
Khi có nhiều môi trường và nền tảng được hỗ trợ hơn, khả năng phát hành
các dịch vụ sẽ dễ dàng hơn, và từ đó sẽ làm tăng năng lực của hệ thống Grid.
+ Tăng tốc độ phát triển ứng dụng
Sử dụng các bộ toolkit được chuẩn hóa sẽ làm giảm thời xây dựng, phát
triển các hệ thống Grid. Thay vì dành nhiều thời gian cho việc xây dựng các chức
năng giao tiếp, các hệ thống quản lý, với việc sử dụng các hệ thống chuẩn hoá có
sẵn, các nhà phát triển ứng dụng sẽ có nhiều thời gian hơn để tối ưu các chức năng
xử lý dữ liệu.
Phân tích như trên cho thấy việc xây dựng các chuẩn là cần thiết. Để đáp ứng
nhu cầu đó, tổ chức Global Grid Forum(GGF) ra đời với thành viên là hầu hết các
nhà nghiên cứu, các tổ chức hàng đầu trong việc xây dựng công nghệ Grid
Computing. GGF đã và đang phát triển các chuẩn về Grid Computing như : Open
Grid Services Architecture (OGSA), Open Grid Services Infrastructure (OGSI),
Web Services Resource Framework (WSRF).
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 38 -
Các chuẩn trên đây cũng là chuẩn duy nhất hiện nay trong ngành công nghệ Grid
Computing. Các chuẩn này vẫn trong giai đoạn phát triển.
Mục tiêu của OGSA và OGSI nhằm xây dựng một nền tảng để hỗ trợ việc xây
dựng một tập các dịch vụ có thể được tìm thấy và được gọi bởi bất kỳ hệ thống nào
trong Grid. Mục tiêu chính là định nghĩa được các giao diện dịch vụ(service
interface) hoàn toàn độc lập với các cài đặt cụ thể bên dưới, điều đó sẽ giúp cung
cấp các dịch vụ OGSA trên bất kỳ thiết bị tính toán nào kết nối với Grid.
1. Open Grid Services Architecture (OGSA)
Chuẩn Open Grid Services Architecture (OGSA) xác định toàn bộ các kết
cấu, cấu trúc, dịch vụ cơ bản của một ứng dụng Grid và có thể được áp dụng trong
bất kỳ một hệ thống Grid nào. Về thực chất, OGSA định nghĩa các dịch vụ Grid
(Grid service) là gì, chúng cần có những khả năng gì, được xây dựng trên những
công nghệ nào. Nó cũng xác định mô hình lập trình cho Grid service. Tuy nhiên,
OGSA không đi sâu vào mặt kỹ thuật của vấn đề, nó chỉ giúp phân biệt cái gì là
Grid và cái gì không phải.
OGSA xác định Grid service phải được xây dựng dựa trên các chuẩn về Web
service hiện hành, xem Grid service như là các Web service được chỉnh sửa để đáp
ứng các yêu cầu mới. Ví dụ, bản thân các Grid service được định nghĩa bằng chuẩn
WSDL (Web Services Definition Language) với một số mở rộng. Điều này rất quan
trọng, vì nó cung cấp một loạt các công nghệ dựa theo một chuẩn chung và mở để
truy cập nhiều loại Grid service dựa trên các chuẩn hiện hành như SOAP, XML, và
WS-Security. Với điều kiện như vậy, có thể thêm và tích hợp các Grid service mới
một cách đơn giản, dễ dàng. Nó cung cấp một phương pháp chung nhất để tìm
kiếm, xác định, sử dụng các service mới khi chúng có mặt. Từ đó, giải quyết được
vấn đề liên kết hoạt động giữa các Grid và các tài nguyên.
2. Open Grid Services Infrastructure (OGSI) phiên bản 1.0
OGSI là một bản đặc tả chính thức các khái niệm được mô tả trong OGSA.
OGSI version 1.0 xác định một một tập các service cơ bản, xác định cách xây dựng
một Grid service, định nghĩa các hoạt động chung nhất của tất cả các Grid service,
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 39 -
vạch ra các cơ chế để tạo lập; quản lý các Grid service, cơ chế trao đổi thông tin
giữa các Grid service.
Chuẩn OGSI dựa trên các chuẩn khác như XML, Web service, WSDL, … do
đó, nó cũng là một chuẩn mở.
3.Web Services Resource Framework (WSRF)
Là một bước phát triển của OGSI, nó kết hợp kiến trúc Grid vào công nghệ
Web service hiện hành. Thay vì xây dựng một kiểu Grid service mới, những đặc tả
này cho phép các service xác định trong OGSI được xây dựng hoàn toàn dựa trên
Web service.
Tóm lại, các hệ thống Grid đều cần phải được xây dựng trên một chuẩn chung.
Hiện nay chỉ có một chuẩn chung đang được phát triển và được khuyến cáo là nên
sử dụng khi xây dựng các hệ thống Grid. Chuẩn đó là OGSA và bản đặc tả của nó,
OGSI. Theo chuẩn OGSA, các hệ thống Grid được xây dựng xung quanh khái niệm
Grid service. Grid service cần phải xây dựng dựa trên các công nghệ chuẩn hiện
hành, do đócông nghệ Web service được chọn trong hàng loạt các công nghệ như
CORBA, RMI, RPC,… Và hiện nay, toàn bộ bản đặc tả OGSI version 1.0 đã được
cài đặt cụ thể trong bộ Globus Toolkit từ version 3.0 trở đi, và UNICORE cũng bắt
đầu cài đặt lại theo OGSA, OGSI.
Hình 2-12 tóm tắt mối quan hệ giữa các chuẩn trên:
Hình 2-12 Mối quan hệ giữa các chuẩn về Grid Service.
Giải thích hình 2-12: OGSA định nghĩa và dựa trên Grid service, OGSI đặc tả Grid service
theo OGSA, Grid service lả một mở rộng của Web service, một công nghệ cho phép các thành
phần phân tán giao tiếp với nhau, GT là một bản cài đặt hoàn chỉnh OGSI với ngôn ngữ Java.
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 40 -
Chi tiết về các chuẩn sẽ được giới thiệu cụ thể hơn trong phần sau, khi giới thiệu
về bộ Globus Toolkit.
22..88.. GGiiớớii tthhiiệệuu ccáácc ddựự áánn GGrriidd mmiiddddlleewwaarree cchhíínnhh Ứng với từng tầng trong kiến trúc Grid, có rất nhiều dự án phát triển bởi nhiều
nhà nghiên cứu, tổ chức, tập đoàn thương mại lớn nhằm đưa Grid trở thành hiện
thực. Để hoàn thành được các mục tiêu của Grid, các phần mềm Grid middleware
cần phải giải quyết được các vấn đề cơ bản của Grid. Grid middleware là phần mềm
cho phép tổ chức, tích hợp các tài nguyên và các chức năng vào Grid, nhiệm vụ
chính của là thực hiện tự động hóa các “thỏa thuận giữa máy với máy”(machine-to-
machine negotiation) để ghép mọi thứ lại với nhau. Đã có rất nhiều nỗ lực từ khắp
nơi trong việc thiết kế và cài đặt các phần mềm middleware để xây dựng Grid. Hiện
nay đã có nhiều gói phần mềm triển khai thành công, có thể xây dựng được các
Grid vượt ra khỏi giới hạn mạng cục bộ.
Phần này sẽ giới thiệu 4 dự án Grid middleware phổ biến hiện nay là
UNICORE, Globus, Legion và Gridbus.
22..88..11.. UUNNIICCOORREE
UNICORE là một môi trường Grid tích hợp theo chiều thẳng đứng nhằm hỗ trợ:
+ Khả năng truy cập tài nguyên một cách đơn giản, an toàn, bảo mật, trực
quan trong môi trường phân tán cho người dùng.
+ Tích hợp các cơ chế chứng thực trong các thủ tục quản trị, nhằm giảm chi
phí đào tạo và hỗ trợ cho các Grid site.
+ Phân phối dễ dàng các công việc trên nhiều nền tảng khác nhau.
1. Kiến trúc của UNICORE
Là kiến trúc 3 tầng (three-tier) như hình 2-13. Bao gồm một client chạy trên
một máy trạm hoặc PC có hỗ trợ Java; nhiều thể hiện của Network Job Supervisors
(NJS) chạy trên các server dành riêng; và nhiều thể hiện của Target System
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 41 -
Interfaces (TSI) chạy trên các node để cung cấp giao diện sử dụng các hệ quản trị
tài nguyên cục bộ như các hệ điều hành, các hệ xử lý theo lô,…
Hình 2-13 Mô hình kiến trúc hoạt động của UNICORE
Theo quan điểm của người dùng, UNICORE là một hệ thống dựa trên mô hình
client-server có 3 lớp.
+ Lớp người dùng : Người dùng chạy UNICORE Client trên máy trạm cục
bộ hoặc PC.
Giao diện của UNICORE Client gồm 2 thành phần : JPA (Job Preparation
Agent) và JMC (Job Monitor Component). Các công việc được xây dựng bằng JPA,
trạng thái và kết quả các công việc được lấy từ JMC. Các công việc và các truy vấn
về trạng thái, kết quả của chúng được định dạng bằng Abstract Job Object (AJO).
+ Lớp server : Ở mức cao nhất, mỗi trung tâm máy tính thành viên phải xác
định một hoặc nhiều UNICORE Grid site (USite) để người dùng kết nối vào.
+ Lớp Target System : Một Usite cho phép truy cập đến các tài nguyên tính
toán và lưu trữ. Chúng được tổ chức thành các site ảo (Vsite) đại diện cho các hệ
thống thực thi và/hoặc lưu trữ trong trung tâm máy tính. Một UNICORE VSite cũng
gồm 2 thành phần: NJS (Network Job Supervisor) and TSI (Target System
Interface). NJS Server quản lý tất cả các công việc UNICORE và thực hiện phân
quyền bằng cách tìm ánh xạ tương ứng giữa chứng chỉ người dùng và tài khoản
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 42 -
đăng nhập trong UUDB (UNICORE User Data Base). NJS chuyển đổi các định
nghĩa AJO thành các lệnh tương ứng cho hệ thống thực thi được chọn dựa trên các
đặc tả trong Incarnation Data Base (IDB). UNICORE TSI chấp nhận các công việc
xây dựng bởi NJS và chuyển chúng cho hệ thống thực thi cục bộ để xử lý.
Client kết nối đến UNICORE USite gateway, đây là điểm vào duy nhất cho tất
cả các kết nối UNICORE đến USite. Nó cung cấp một địa chỉ IP và số hiệu cổng để
người dùng có thể kết nối vào thông qua protocol SSL.
2. Các chức năng và đặc tính chính của UNICORE:
+ Tạo lập và đệ trình các công việc hướng người dùng.
Cung cấp giao diện GUI hỗ trợ người dùng tạo những công việc phức tạp
có thể chạy trên bất kỳ UNICORE Site nào mà không cần thay đổi đặc tả công
việc.
+ Có hệ thống quản lý công việc
Cho phép người dùng toàn quyền điều khiển công việc và dữ liệu.
+ Có hệ thống quản lý dữ liệu
Trong quá trình tạo lập các công việc, người dùng có thể xác định các tập
dữ liệu đầu vào và đầu ra từ USpace (USpace là tập các file sẵn sàng cho một
công việc UNICORE) và các tập dữ liệu nào cần phải truyền qua lại giữa các
USpace. UNICORE sẽ thực hiện các việc di chuyển dữ liệu trong thời gian thi
hành mà không cần sự can thiệp của người dùng.
+ Hỗ trợ ứng dụng
Để hỗ trợ các ứng dụng khoa học đặc biệt của các nhà khoa học, giao
diện người của UNICORE được xây dựng dưới dạng mở để có thể thêm các
thành phần mới cho phép nhập liệu hướng ứng dụng.
+ Điều khiển luồng
Một công việc của người dùng có thể được mô tả dưới dạng một tập các
đồ thị có hướng không vòng.
+ Cho phép đăng nhập một lần
UNICORE cho phép đăng nhập một lần thông qua các chứng chỉ
X.509V3.
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 43 -
+ Hỗ trợ các công việc kế thừa lại
UNICORE hỗ trợ công nghệ xử lý theo lô truyền thống bằng cách cho
phép người dùng đính kèm các công việc trước đó vào công việc hiện hành.
+ Có hệ thống quản lý tài nguyên
Người dùng chọn các hệ thống đích và xác định các yêu cầu tài nguyên.
Hệ thống UNICORE Client sẽ kiểm tra tính đúng đắn của các công việc, báo lỗi
ngay lập tức và thực hiện cấp phát tài nguyên.
22..88..22.. GGlloobbuuss
Dự án Globus cung cấp một bộ toolkit mã nguồn mở, có thể được sử dụng để
xây dựng các Grid Tính toán và các ứng dụng dựa trên Grid. Nó cho phép chia sẻ
năng lực tính toán, dữ liệu, các công cụ khác một cách bảo mật, an toàn trực tuyến
giữa các tập đoàn, viện nghiên cứu mà không cần loại bỏ các chính sách quản trị
cục bộ. Các service, interface, protocol nền tảng trong bộ Globus Toolkit cho phép
người dùng truy cập đến các tài nguyên ở xa một cách đơn giản trong khi vẫn giữ
được quyền điều khiển cục bộ cho phép ai được dùng tài nguyên và khi nào.
Chi tiết về Globus Toolkit sẽ được trình bày trong chương sau.
22..88..33.. LLeeggiioonn
Legion là một middleware ch phép kết hợp một lượng rất lớn các host, hệ thống
lưu trữ dữ liệu, các mã thực thi và các đối tượng hỗn tạp được quản lý độc lập thành
một nền tảng tính toán chặt chẽ thống nhất. Legion có khả năng gom nhóm các
thành phần rải rác này thành một siêu máy tính dựa trên đối tượng (object-based
metacomputer), đưa ra mức độ cao hơn về tính mềm dẻo và tự trị.
Hình 2-14 cho thấy kiến trúc của Legion. Nó được cấu trúc như là một hệ thống
các “đối tượng phân tán” – các tiến trình hoạt động giao tiếp với nhau sử dụng một
dịch vụ gọi hàm từ xa thống nhất. Tất cả các tài nguyên phần cứng và phần mềm
trong hệ thống Grid đều được đại diện bởi các đối tựơng Legion. Mô hình đối tượng
cơ sở của Legion được mô tả bởi ngôn ngữ đặc tả giao diện (interface description
language (IDL)), và được dịch và liên kết với ngôn ngữ lập trình được chọn.
SVnet.vn
Chương 2. Tổng quan về công nghệ Grid Computing
- 44 -
Hướng tiếp cận này cho phép liên kết hoạt động các thành phần của nhiều ngôn
ngữ lập trình khác nhau, trên nhiều nền tảng thực thi khác nhau. Khi tất cả các thành
phần trong hệ thống đều là các đối tượng, chúng có thể giao tiếp với nhau không
phân biệt chi tiết về vị trí, cài đặt.
Một “đối tượng lớp” (class object) được sử dụng để định nghĩa và quản lý các
Legion object tương ứng. Class object được gán các trách nhiệm cấp hệ thống; nó
điều khiển việc tạo lập các thực thể (instance) mới, lập lịch thực thi, kích hoạt và
huỷ kích hoạt các thực thể, cung cấp các thông tin về vị trí hiện tại của nó cho các
đối tượng client muốn liên lạc với các thực thể. Nói một cách khác, các lớp hoạt
động như là nhà quản lý và hoạch định chính sách cho hệ thống. Các siêu lớp
(metaclass) được sử dụng để định nghĩa các thực thể lớp.
Hình 2-14 Kiến trúc của Legion.
Legion định nghĩa một tập các kiểu đối tượng nòng cốt cung cấp các dịch vụ cơ
bản của hệ thống như đặt tên và kết nối, tạo lập, kích hoạt, huỷ kích hoạt và xoá các
đối tượng. Những đối tượng này đưa ra các cơ chế giúp cho các lớp triển khai các
chính sách thích hợp cho các thực thể của chúng. Legion cũng cho phép người dùng
định nghĩa và xây dựng các “đối tượng lớp” của riêng mình.
Một số đối tượng nòng cốt :
+ Host object : đại diện cho các bộ xử xý.
+ Vault object : đại diện cho hệ thống lưu trữ ngoài.
Bảng 3-1 là danh sách các interface (trong WSDL là portType) định nghĩa nên
một Grid service. Lưu ý, chỉ có interface GridService là phải được cài đặt bởi tất cả
các Grid service, còn các interface khác là tuỳ chọn. Các interface phục vụ phân
quyền, quản lý chính sách, và các mục đích khác hiện đang được xây dựng.
PortType Phương thức Mô tả FindServiceData Truy vấn hàng loạt các thông tin về các Grid
service instance, bao gồm các thông tin cơ bản nội bộ (GSH, GSR, khóa chính,…) , các thông tin về interface, các thông cụ thể của từng instance… Hỗ trợ nhiều ngôn ngữ truy vấn khác nhau.
SetTerminationTime Thiết lập (Lấy) thời gian hủy bỏ của Grid service instance.
GridService
Destroy Hủy bỏ một Grid service instance. Notification-Source
SubscribeTo-NotificationTopic
Yêu cầu thông báo về các sự kiện liên quan đến service. Cho phép phân phối thông qua các hệ thống chuyển thông điệp bên thứ ba.
Notification-Sink
DeliverNotification Tiến hành phân phối bất đổng bộ các thông điệp thông báo.
RegisterService Thực hiện đăng ký một GSH Registry UnregisterService Huỷ đăng ký một GSH
Factory CreateService Tạo một service instance mới. HandleMap FindByHandle Trả về GSR hiện đang liên kết với GSH được
cung cấp. Bảng 3-1 Bảng các interface chuẩn quy định bởi OGSA.
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2
- 70 -
Thuộc tính extends trong gwsdl:portType là một danh sách các QName, mỗi
QName là một wsdl:portType hoặc gwsdl:portType. Việc định nghĩa các phương
thức trên interface được kế thừa lại từ wsdl:portTypeType.
Về chi tiết các interface của Grid service định nghĩa bởi OGSI 1.0, xin xem
thêm trong Phụ lục D – “Các interface của một OGSI Service”
33..22..44..55.. SSeerrvviiccee ddaattaa
Service data là một tập các thông tin có cấu trúc về Grid service instance nhằm
cung cấp các thông tin trạng thái của nó theo yêu cầu. Grid service được phân loại
và chỉ mục theo các thông tin trong service data. Mỗi instance của Grid service đều
có một tập các service data chứa các thành phần Service Data Element (SDE), các
SDE có thuộc nhiều loại khác nhau, nhưng các SDE cùng loại thì luôn chứa cùng
một loại thông tin.
Ý tưởng biểu diễn các thuộc tính của service instance như là service data được
kế thừa từ ý tưởng của lập trình hướng đối tượng, các service data chỉ được truy vấn
và thao tác bởi các phương thức định nghĩa trong interface. Chỉ các thông tin cần
cung cấp cho bên ngoài mới được khai báo như là service data, còn các thông tin
nội bộ của service thì không được khai báo.
Các SDE có thể là tĩnh (khai báo trong khi định nghĩa service interface) hoặc
động (được thêm vào service instance trong thời gian chạy). Client có thể sử dụng
phương thức findServiceData của interface GridService để lấy danh sách các SDE
của service instance.
+ Cấu trúc của một Service Data
Một service data có các thuộc tính cơ bản sau: name, type, minOccurs,
maxOccurs, nillable, mutability, và modifiable. Định nghĩa XML của chúng xin
tham khảo tài liệu [6].
SVnet.vn
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2
- 71 -
Tên Kiểu giá trị Tập giá trị Giá trị default Diễn giải
name NCName and {target namespace}
Tên của serviceData
type QName Xác định kiểu XML Schema quy định giá trị của SDE.
minOccurs nonNegative Integer
unbounded (không giới hạn)
1 Xác định số giá trị SDE nhỏ nhất xuất hiện trong serviceDataValues hoặc staticServiceDataValues, nếu là 0 là tuỳ chọn
maxOccurs nonNegative Integer
unbounded 1 Xác định số giá trị SDE lớn nhất xuất hiện trong serviceDataValues hoặc staticServiceDataValues
nillable boolean true/false false Có cho phép SDE có giá trị nil (là một giá trị có thuộc tính xsi:nil với value=“true”).
mutability
“static”, “constant”, “extendable”, “mutable”
“extendable”
Quy định cách thức thay đổi một SDE. + “static” : giá trị của SDE được xác định trong thành phần staticServiceDataValues và được giữ lại trong bất cứ instance nào có portType chứa SDE đó. + “constant” : giá trị của SDE được gán trong lúc tạo instance và được giữ không đổi trong suốt thời gian sống của instance. + “extendable” : Cho phép thêm các thành phần mới vào SDE trong thời gian chạy, các thành phần mới khi đã được thêm vào sẽ không thể loại bỏ khỏi SDE được nữa. + “mutable” : tất cả các thành phần của SDE có thể được thêm vào hay
SVnet.vn
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2
- 72 -
loại bỏ bất cứ lúc nào. modifiable boolean true/false false Nếu true, cho phép client
cập nhật trực tiếp giá trị SDE thông qua phương thức setServiceData.
Các thuộc tính khác không có trong namespace
Bảng 3-2 Các thuộc tính cơ bản của một service data.
+ Mở rộng portType để hỗ trợ Service Data
OGSI định nghĩa thêm một thành phần con của portType có tên là
serviceData, được sử dụng để khai báo các thành phần serviceData (SDE) đi kèm
với portType đó. Các giá trị khởi tạo cho serviceData được xác định bằng thành
phần staticServiceDataValues của portType. Dưới đây là định nghĩa
Ví dụ dưới đây khai báo một portType với 2 thành phần serviceData với tên là
“Host” và “CPU Architecture” và khởi tạo giá trị Host=“GLOBUSTEST”.Mọi
service instance triển khai portType này phải có thông tin về Host và
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2
- 94 -
+ Một số hàm API quan trọng
GT3 có rất nhiều hàm API phục vụ lập trình với GSI, Bảng … giới thiệu một
số hàm API quan trọng. Các hàm API được viết theo chuẩn GSS-API. Mọi chi tiết
xin tham khảo tài liệu về các hàm API trên website : www.globus.org
Tên hàm Diễn giải gss_acquire_cred() Nạp các chứng chỉ (credential) bảo mật vào chương
trình, bao gồm user proxy certificate và khóa bí mật.
gss_release_cred() Giải phóng các credential. gss_inquire_cred() Lấy các thông tin về các credential. gss_wrap() Tính checksum và mã hoá trên vùng đệm nhập của
người dùng. Phát sinh thông điệp đã mã hoá để gửi đi.
gss_unwrap() Lấy thông điệp đã mã hoá bằng gss_wrap(), kiểm tra checksum và giải mã nó, đưa vào vùng đệm xuất của người dùng.
gss_{import,export}_name() Đưa vào / xuất ra một subject name. gss_{init,accept}_delegation() Thực hiện ủy quyền và chấp nhận ủy quyền, cho
GSI được sử dụng để chứng thực và phân quyền cho người dùng.
* GRAM client library được sử dụng bởi các ứng dụng hay một co-
allocator đại diện cho ứng dụng. Nó giao tiếp với GRAM gatekeeper trên site
ở xa để thực hiện mutual authentication và gửi một yêu cầu gồm có bản đặc
tả tài nguyên, các yêu cầu về callback, và một số thành phần khác.
* Gatekeeper là một thành phần khá đơn giản, chịu trách nhiệm đáp ứng
lại yêu cầu từ GRAM client bằng cách thực hiện 3 việc sau: thực hiện mutual
authentication với user và tài nguyên, ánh xạ user name cục bộ cho user ở xa,
khởi động một Job manager. Job manager này sẽ chạy trên hệ thống như là
một user cục bộ, và thực sự xử lý các yêu cầu.
* Một Job manager chịu trách nhiệm tạo lập các tiến trình (process)
được yêu cầu bởi người dùng. Thông thường nhiệm vụ này được thực hiện
bằng cách gửi các yêu cầu cấp phát tài nguyên đến hệ thống quản lý tài
nguyên cục bộ của site. Khi các tiến trình được tạo ra, Job manager còn chịu
trách nhiệm theo dõi trạng thái của chúng, thông báo callback các thay đổi
trạng thái, triển khai các thao tác điều khiển tiến trình như tạm dừng, kích
hoạt, kết thúc tiến trình. Hoạt động của Job manager kết thúc khi công việc
nó quản lý kết thúc.
Một Job manager có 2 thành phần :
- Common Component : chuyển thông điệp nhận được từ gatekeeper
và client thành các lời gọi đến các API của Machine-Specific Component
(MSC). Nó cũng biên dịch các yêu cầu thông báo thông tin callback của
MSC thành các thông điệp gửi về client.
- Machine-Specific Component : chứa các mã cài đặt cụ thể của các
hàm API trên các môi trường cục bộ khác nhau. Đây là phần thay đổi duy
nhất trong GRAM để tương thích với các môi trường cục bộ. Mã cài đặt
bao gồm các lời gọi hàm đến hệ thống cục bộ, các thông báo đến trình
theo dõi tài nguyên (MDS).
SVnet.vn
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2
- 101 -
* GRAM reporter chịu trách nhiệm gửi các thông tin về cấu trúc (như
khả năng giữ chỗ, số lượng hàng đợi,… ) và trạng thái (như số lượng các
node, số node đang đang sẵn sàng, các công việc đang thực hiện, ….) của bộ
lập lịch cục bộ cho hệ thống Information Service (ở đây là MDS).
Pre-WS GRAM có thể sử dụng module Global Access to Secondary Storage
(GASS) để truyền các file dữ liệu và kết quả về client. Cơ chế này được sử dụng
trong lệnh globusrun, gatekeeper và job manager.
Người dùng có thể sử dụng cơ chế co-allocator Dynamically-Updated
Request Online Coallocator (DUROC) để yêu cầu thực hiện công việc trên nhiều
job manager ở cùng một host hay ở nhiều host khác nhau (Xem hình 3-13).
Hình 3-13 Cơ chế hoạt động có DUROC trong pre-WS GRAM.
Các script RSL chứa cú pháp DUROC sẽ được phân tích (parse) ở GRAM
client và phân phối đến nhiều job manager.
3. Các hàm API GT3 cung cấp các hàm API hỗ trợ lập trình với RSL, GRAM, DUROC,
LDAP protocol và chúng được chia thành các nhóm hàm:
globus_rsl : Module gồm các thực hiện thao tác với các đặc tả RSL, có
thể sử dụng xây dựng các broker mới.
globus_gram_client : Dùng để phát triển các ứng dụng client, yêu cầu
thực hiện, quản lý công việc,…
globus_gram_myjob : Dùng để quản lý các tiến trình riêng lẻ trong các
công việc.
globus_duroc_control/runtime : Các hàm giao tiếp với DUROC
SVnet.vn
Chương 3. Giới thiệu bộ Globus Toolkit phiên bản 3.2
- 102 -
LDAP protocol : Cung cấp các hàm giao tiếp với hệ thống quản lý tài
nguyên thông qua GIIS Server
Tên hàm Diễn giải globus_gram_client_job_request() Yêu cầu thực hiện một công việc
trên tài nguyên ở xa. globus_gram_client_job_status() Kiểm tra trạng thái của công việc. globus_gram_client_job_cancel() Huỷ công việc. globus_gram_client_job_signal() Gửi các tín hiệu điều khiển job
Triển khai cài đặt tất cả các interface do OGSI xác định.
Security Infrastructure
Thành phần này hỗ trợ bảo mật cấp thông điệp, chứng thực và phân quyền dựa trên gridmap file. Bảo mật cấp thông điệp bao gồm bảo mật trên toàn bộ session (GSI-SecureConversation) cũng như trên từng thông điệp (GSI-SecureMessage).
Là các Grid service tương thích OGSI chung nhất để sử dụng bởi tất cả các Grid service khác. Hiện tại có 3 loại service:
Ping service Sử dụng để "ping" một hosting environment.
Logging Management Service
Cho phép sửa đổi các log filter và nhóm các thông tin log để dễ theo dõi và quản lý.
System level services
Management Service
Cung cấp một interface để theo dõi trạng thái và tải hiện tại của các service, cho phép huỷ, kích hoạt các service instance.
Bảng 3-7 Các thành phần của GT Core
SVnet.vn
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
Một ứng dụng Grid có thể không cần môi trường thực thi đa dạng hỗn tạp, tuy
nhiên cần xem xét một số vấn đề để có thể triển khai tốt nhất hệ thống. Với mỗi
công việc, các yếu tố môi trường sau đây có thể ảnh hưởng đến hoạt động. Khi phát
triển một ứng dụng, cần xem xét các yếu tố này để thiết kế càng độc lập càng tốt với
các yếu tố này.
Yếu tố quan trọng nhất là phiên bản hệ điều hành, các thiết lập
tham số cần thiết để thực thi công việc, việc phụ thuộc vào các dịch vụ hệ
thống hay các chương trình phụ trợ khác như registry. Cần xem xét liệu
ứng dụng Grid có khả năng chạy các công việc của nó trên bất kỳ node
nào với các hệ điều hành khác nhau hay bị giới hạn trên một hệ điều hành
nhất định.
Kích thước bộ nhớ chính cần thiết cho công việc có thể giới hạn số
lượng các node có khả năng thi nó. Kích thước bộ nhớ có sẵn không
những phụ thuộc vào kích thước vật lý của nó trên node, mà còn phụ
thuộc vào kích thước mà hệ điều hành cho phép trong thời gian thực thi.
Các thư viện liên kết động (DLL) được liên kết với công việc cần
phải có sẵn trên node hoặc có thể được di chuyển đến và cài đặt trên node
trước khi công việc được thực thi.
SVnet.vn
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 132 -
Các cấu hình trình biên dịch trên các node có thể rất khác nhau. ví
dụ các hệ thống khác nhau có thể sử dụng định dạng số khác nhau như
thứ tự các bit, số byte dùng để biểu diễn số nguyên và số thực khác nhau
trên các hệ thống có thể khiến công việc không thể thực thi được.
Cần phải có môi trường thực thi sẵn sàng để thực thi công việc. Ví
dụ, việc triển khai phiên bản JDK cần thiết cần phải được lên kế hoạch và
thực hiện.
Các công việc có thể cần các thiết bị phần cứng để thực thi nhiệm
vụ của mình. Ví dụ, các yêu cầu về thiết bị lưu trữ, đo đạc và các thiết bị
đầu cuối khác cần phải được xem xét khi xây dựng ứng dụng và lên kế
hoạch cho hạ tầng Grid.
…
Khi phát triển ứng dụng, các yếu tố trên cần phải được xem xét để tránh quá
nhiều các giới hạn khi thực thi công việc. Có một lượng lớn các giới hạn cũng có
nghĩa là số lượng các node mà công việc có thể thực thi trên đó ít đi. Do đó cần phải
loại bỏ các giới hạn trên càng nhiều càng tốt để công việc có thể chạy trên môi
trường càng tổng quát càng tốt.
44..44..44.. ĐĐồồ hhììnnhh ccôônngg vviiệệcc
Cần phải có các thiết kế về kiến trúc để giải quyết vấn đề về đồ hình công việc
và dữ liệu. Khi xem xét, một số yếu tố chính sau đây cần phải được chú ý:
Các công việc có thể hoặc phải chạy ở đâu ?
Làm sao để có thể phân tán và triển khai chúng thông qua hệ thống mạng ?
Làm sao đóng gói chúng với các dữ liệu cần thiết ?
Nơi nào trong mạng lưu trữ mã thực thi của công việc ?
Làm sao để xác định được node thích hợp để có thể thực thi các công việc cụ
thể?
Vị trí của của dữ liệu và các điều kiện truy xuất cho công việc.
Kích thước dữ liệu được công việc xử lý.
Các giao diện cần thiết để tương tác với các thiết bị.
SVnet.vn
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 133 -
Các liên lạc liên tiến trình cần thiết để công việc có thể hoàn thành nhiệm vụ
của mình.
Tính sẵn sàng và các giá trị hiệu năng của mỗi node trong thời gian thực thi.
Kích thức mã thực thi của công việc và khả năng di chuyển chúng trong hệ
thống.
…
Khi phát triển ứng dụng Grid, có thể không cần biết hết tất cả các thông tin về
đồ hình Grid, tuy nhiên, đặc biệt là trong trường hợp một IntraGrid cần phải được
xây dựng để hỗ trợ một nhóm các ứng dụng đặc biệt, các thông tin này có thể rất
cần thiết. Nhờ đó, có thể kiến trúc ứng dụng và hạ tầng Grid để tối ưu hoá môi
trường thực thi bằng các xem xét đến vị trí các tài nguyên, dữ liệu, và tập các node
mà ứng dụng có thể thực thi.
44..55.. TTrriiểểnn kkhhaaii ccààii đđặặtt ccáácc GGrriidd SSeerrvviiccee Sau khi có bản thiết kế chi tiết các hoạt động và liên lạc của các service trong hệ
thống, đến bước viết mã thực thi, ở đây trình bày việc viết mã cho các Grid Service.
Phần này trình bày các bước cần thiết để viết một OGSI-service cùng với các kỹ
thuật cài đặt cụ thể với GT3.
Việc phát triển, phân phối một Grid service với GT3 tuân theo 5 bước sau (lưu
ý, các bước này cùng với các công cụ liên quan có thể thay đổi trong các phiên bản
sau của GT):
1. Định nghĩa service interface (sử dung ngôn ngữ đặc tả GWSDL).
2. Viết mã thực thi cho service (sử dụng ngôn ngữ lập trình Java).
3. Định nghĩa các tham số triển khai service (sử dụng ngôn ngữ đặc tả
WSDD).
4. Biên dịch và phát sinh các file GAR (sử dụng công cụ Ant).
5. Triển khai service (sử dụng công cụ Ant).
Các phần dưới đây sẽ trình bày chi tiết các bước và các kỹ thuật cài đặt các cơ
chế của Grid service. Để cụ thể và dễ hiểu hơn, việc trình bày sử dụng lại ví dụ
MathService được nhóm phát triển Globus đưa ra, có thể tìm thấy trong website :
SVnet.vn
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 134 -
http://www.casa-sotomayor.net. Ở đây chúng ta cần xây dựng một Grid service cho
phép người thực hiện các chức năng cộng, trừ đơn giản, có tên là MathService.
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 137 -
public class MathImpl extends GridServiceImpl implements MathPortType { private int value = 0; //Bien luu tru ket qua public MathImpl() //constructor { super("Simple MathService"); //Goi constructor cua cha } public void add(int a) throws RemoteException { value = value + a; } public void subtract(int a) throws RemoteException { value = value - a; } public int getValue() throws RemoteException { return value; } }
Lưu ý :
+ Lớp MathImpl kế thừa từ lớp GridServiceImpl, lớp GridServiceImpl
cài đặt tất cả các phương thức được khai báo trong portType GridService theo
định nghĩa của OGSI.
+ Interface của chúng ta có tên là MathPortType, được khai báo trong
phần portType của file GWSDL.
Bước 3 : Cấu hình quá trình triển khai service với Web Service
Deployment Descriptor (WSDD)
Tới thời điểm này, chúng ta đã thực hiện xong hai phần quan trọng nhất của
service là interface và mã cài đặt của interface. Bây giờ, chúng ta sẽ ghép các phần
này lại với nhau và đưa chúng ra thế giới bên ngoài thông qua một Web server hỗ
trợ Grid service (Grid service container). Quá trình được gọi là quá trình triển khai
(deployment) Grid service.
Một trong những thành phần chính yếu của bước này là bản mô tả triển khai
(deployment descriptor). Đây là một file đặc tả viết dưới dạng WSDD để hướng dẫn
SVnet.vn
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 138 -
cho Web server cách xuất bản (publish) Grid service. Bản mô tả triển khai của
<?xml version="1.0"?> <deployment name="defaultServerConfig" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <!—-Vi tri Grid service, lien ket URL cua Web server se tao thanh mot GSH hoan chinh--> <service name="progtutorial/core/first/MathService" provider="Handler" style="wrapped"> <!—Ten dung de mo ta service--> <parameter name="name" value="MathService"/> <parameter name="className" value="org.globus.progtutorial.stubs.MathService.MathPortType"/> <!-- Tham khao den cac lop trien khai interface cua service,luu y file Math_service.wsdl la file WSDL chuan duoc phat sinh tu dong boi GT3 tu file Math.gwsdl --> <parameter name="baseClassName" value="org.globus.progtutorial.services.core.first.impl.MathImpl"/> <parameter name="schemaPath" value="schema/progtutorial/MathService/Math_service.wsdl"/> <!—Cac tham so chung cho hau het Grid service --> <parameter name="allowedMethods" value="*"/> <parameter name="persistent" value="true"/> <parameter name="handlerClass" value="org.globus.ogsa.handlers.RPCURIProvider"/> </service> </deployment>
Bước 4 : Tạo file GAR với công cụ Ant
Đến lúc biên dịch và đóng gói các file đã tạo ra ở trên để có thể xuất bản ra
thế giới bên ngoài. Tất cả các file và các thông tin cần thiết để một Grid service
container có thể triển khai Grid service đều được đưa một vào một file Grid
Archive, hay file GAR.
Việc tạo một file GAR bao gồm các bước sau:
+ Chuyển đổi file GWSDL thành file WSDL.
SVnet.vn
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 139 -
+ Tạo các lớp cuống (stub class) từ file WSDL.
+ Biên dịch các lớp cuống.
+ Biên dịch các mã cài đặt của service.
+ Sắp xếp các file trong một cấu trúc thư mục đặc biệt.
Các bước này có thể làm bằng tay, tuy nhiên đã có một công cụ rất mạnh để
tự động thực hiện việc này, đó là Ant. Ant sử dụng các hướng dẫn trong một build
file (giống như Makefile trong các dự án phần mềm trên Linux) để thực hiện các
công việc của mình. Hình 4-4 cho thấy các file mà Ant sử dụng để phát sinh file
GAR :
Hình 4-4 Các file cần thiết để triển khai Grid Service với Ant.
Ant sử dụng các file của GT3, các file do chúng ta tạo ra và file build.xml
(file hướng dẫn của Ant) để phát sinh ra file GAR. Chi tiết về Ant, xin tham khảo
tại website : http://ant.apache.org.
Trong ví dụ này có thể thực hiện lệnh sau đây để phát sinh file GAR.
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 140 -
Sau khi biên dịch thành công, chúng ta sẽ có file GAR : $GRIDSER_DEMO/build/lib/org_globus_progtutorial_services_core_first.gar
Bước 5 : Triển khai Grid service trên một Grid service container
Chúng ta chỉ cần thực hiện lệnh sau:
ant deploy \ -Dgar.name=$GRIDSER_DEMO/build/lib/org_globus_progtutorial_services_core_first.gar
Đến đây chúng ta đã có thể xây dựng và triển khai một Grid service hoàn
chỉnh. Tiếp theo chúng sẽ xây dựng một client đơn giản để sử dụng service
MathService.
44..55..22.. XXââyy ddựựnngg cclliieenntt
Client chúng ta xây dựng là một chương trình chạy trên console, với 2 tham số
đầu vào là:
+ GSH của Grid service instance
+ Giá trị cần cộng vào.
Dưới đây là mã nguồn của file client : $GRIDSER_DEMO/org/globus/progtutorial/clients/MathService/Client.j
ava
package org.globus.progtutorial.clients.MathService; import org.globus.progtutorial.stubs.MathService.service.MathServiceGridLocator; import org.globus.progtutorial.stubs.MathService.MathPortType; import java.net.URL; public class Client { public static void main(String[] args) { try { // Lay cac tham so dong lenh URL GSH = new java.net.URL(args[0]); int a = Integer.parseInt(args[1]); // Lay GSR cua service instance MathServiceGridLocator mathServiceLocator = new MathServiceGridLocator(); MathPortType math = mathServiceLocator.getMathServicePort(GSH); // Goi phuong thuc o xa 'add' math.add(a);
SVnet.vn
Chương 4. Phát triển ứng dụng với bộ Globus Toolkit 3.2
- 141 -
System.out.println("Added " + a); // Lay gia tri hien hanh cua service qua phuong thuc 'getValue' int value = math.getValue(); System.out.println("Current value: " + value); }catch(Exception e) { System.out.println("ERROR!"); e.printStackTrace(); } } }
Việc xây dựng một client rất đơn giản và dễ hiểu.
Trên đây, chúng ta xem xét các bước xây dựng một Grid service với GT3. Về
các kỹ thuật cài đặt các cơ chế của một Grid Service, xin xem thêm trong phần Phụ
lục D – Kỹ thuật cài đặt các cơ chế của Grid Service. Từ đây, chúng ta đã có thể xây
dựng các ứng dụng Grid với các Grid service. GT3 cũng cung cấp giao diện lập
trình để sử dụng các service có sẵn như WS-GRAM, GSI,… Việc lập trình sử dụng
các service này chưa được trình bày ở đây, nhưng với các kỹ thuật đã có, cùng với
việc tham khảo tài liệu về API của GT trên website : www.globus.org sẽ là tiền đề
Hình 6-1 Mô hình thành phần ứng dụng Grid NetManager.
SVnet.vn
Chương 6. Hệ thống quản trị Grid NetManager
- 156 -
Giải thích
STT Tên Nhiệm vụ 1. Module Presentation Là giao diện đồ họa, có nhiệm vụ nhận các lệnh
từ nhà quản trị mạng, cấu hình và điều khiển các module khác hoạt động, thu nhận, tổng hợp các thông tin từ các module và kết xuất kết quả cho nhà quản trị.
2. Module Sensor Bắt, lọc, lưu trữ các packet vào cơ sở dữ liệu. 3. Module
AnalyzerAndMiner Thực hiện phân tích các dữ liệu từ cơ sở dữ liệu để cung cấp thông tin cần thiết cho nhà quản trị; khai thác dữ liệu, phát sinh các luật.
4. Module RuleManager Cung cấp các chức năng quản lý, lưu trữ, truy vấn tập luật.
5. Module Monitoring Thực hiện lấy các luật và theo dõi, phân tính các packet theo thời gian thực để phát hiện các hiện tượng bất thường, từ đó dựa vào các đặc tả phản ứng mà phát sinh các hành động thích hợp, có thể là thông báo cho nhà quản trị, lưu xuống file log hay phát sinh các lệnh điều khiển thích hợp đến các module DeviceAgent.
6. Module DeviceAgent Nhận các lệnh điều khiển và để điều khiển và cấu hình các thiết bị nhằm thực hiện điều khiển hệ thống mạng có các hành động phù hợp để đáp ứng các sự kiện.
7. Module GridManager Thực hiện tất cả chức năng để quản lý, điều khiển Grid.
8. PacketDatabase Cơ sở dữ liệu thông tin các packet. Có thể lưu dưới dạng packet thô, cơ sở dữ liệu quan hệ, các cấu trúc dữ liệu tiền xử lý cho các chức năng của hệ thống.
9. RuleDatabase Cơ sở dữ liệu các luật. 10. Log files Các file ghi vết các sự kiện xảy ra trong hệ thống
do các module Monitoring ghi nhận được. 11. PreprocessingData Lưu trữ các dữ liệu tiền xử lý phục vụ việc phân
tích dữ liệu và phát sinh các luật. Bảng 6-1 Các thành phần của ứng dụng Grid NetManager.
Các module trên được thiết kế để hoạt động tách biệt, mỗi module có thể chạy
trên nhiều máy tính, thiết bị khác nhau, trên một máy có thể có nhiều module, mỗi
module có thể nhiều thực thể thực thi song song với nhau nhằm tận dụng các tài
SVnet.vn
Chương 6. Hệ thống quản trị Grid NetManager
- 157 -
nguyên. Các dữ liệu cũng được lưu trữ phân tán trong Grid. Việc cấu hình vị trí các
module, dữ liệu có thể thực hiện tự động hoặc bằng tay theo ý của nhà quản trị.
66..33..22.. CCáácchh tthhứứcc hhooạạtt đđộộnngg
Một hệ thống mạng máy tính lớn thường được chia thành nhiều mạng con (các
vùng broadcast domain, trong phạm vi luận văn này được gọi là các LAN Segment).
Trên mỗi LAN Segment, có thể đặt một hay nhiều module Sensor trên các máy tính
khác nhau nhằm bắt các packet đang lưu thông trong LAN Segment theo các tiêu
chí khác nhau và lưu trữ các packet này xuống các cơ sở dữ liệu (PacketDatabases),
các cơ sở dữ liệu này có thể được lưu trữ cục bộ hay phân tán trên các máy tính
khác dựa trên khả năng lưu trữ hiện có, mỗi cơ sở dữ liệu chỉ chứa thông tin về các
packet lưu thông trong một LAN segment. Các tiêu chí để bắt các packet là các câu
mô tả về thông tin của các packet bao gồm (loại packet, các trường và các giá trị
tương ứng kết hợp với các phép toán so sánh >,<,=,…, các phép toán logic AND,
OR, NOT,…).
Các cơ sở dữ liệu được sử dụng bởi module AnalyzerAndMiner khi có yêu cầu
từ module Presentation. Các module AnalyzerAndMiner có thể chạy song song trên
nhiều máy tính khác nhau, phân tích dữ liệu trên các cơ sở dữ liệu theo yêu cầu
nhằm cung cấp thông tin đa dạng; khai thác dữ liệu, phát sinh các luật; và gửi trả kết
quả về cho module Presentation. Quá trình phân tích, khai thác dữ liệu có thể phát
sinh các dữ liệu trung gian, chúng có thể được lưu trữ phân tán trong các file dữ liệu
PreprocessingData. Các luật có thể là các quy luật, dấu hiệu tấn công, các hoạt động
của người dùng, các định mức hoạt động, các lỗi hệ thống,… Mỗi luật có các phản
ứng đi kèm như thông báo, ghi nhận, báo động, ngắt nguồn gây lỗi, ngăn chặn hoạt
động, cấu hình lại thiết bị mạng, … được quy định bởi nhà quản trị. Các luật được
lưu trữ dưới dạng các đặc tả, lưu trữ trong các cơ sở dữ liệu luật quản lý bởi module
RuleManager. Hệ thống có các module Monitoring cũng chạy song song trên nhiều
máy khác nhau, sử dụng các luật và các dữ liệu trong các cơ sở dữ liệu để phát hiện
ra các hoạt động mạng đúng với các luật (cũng có nghĩa đó là những hoạt động tiềm
ẩn nguy hiểm), dựa trên các phản ứng được quy định, phát sinh các lệnh điều khiển
SVnet.vn
Chương 6. Hệ thống quản trị Grid NetManager
- 158 -
gửi đến các module DeviceAgent để các module này điều khiển các thiết bị tương
ứng nhằm có những hoạt động ngăn chặn thích hợp. Đồng thời, module Monitoring
cũng phát sinh ra các thông báo, lưu trữ trong các Log file.
Tất cả các hoạt động quản lý, lưu trữ dữ liệu phân tán, gọi thực thi các module
đều được thực hiện thông qua module GridManager, nó đóng vai trò là một cầu nối
giữa các phần ứng dụng với hạ tầng Grid.
Module Presentation cung cấp giao diện người dùng, cho phép nhà quản trị quản
lý, cấu hình, điều khiển tất cả các module toàn hệ thống, thu nhận tổng hợp các
thông tin trả về từ các module và trình diễn cho nhà quản trị.
66..44.. PPhhâânn ttíícchh vvàà đđịịnnhh hhưướớnngg pphháátt ttrriiểểnn ứứnngg ddụụnngg Như giới thiệu trên đây, về bản chất đây là một ứng dụng phân tích và xử lý một
lượng rất lớn dữ liệu. Một máy tính không thể xử lý lượng dữ liệu này trong thời
gian cho phép, đặc biệt là theo thời gian thực. Các dữ liệu packet của toàn hệ thống
cần lưu trữ phân tán, được phân thành các cơ sở dữ liệu độc lập với nhau (mỗi cơ sở
dữ liệu lưu thông tin về một LAN segment), rất thích hợp để xử lý đồng thời các cơ
sở dữ liệu, đây là một dạng của luồng ứng dụng song song. Các module có thể được
xem là một công việc độc lập, nhận các tập dữ liệu đầu vào, xử lý và trả kết quả.
Các module tương đối độc lập với nhau, nhu cầu liên lạc giữa các module trong khi
hoạt động ít. Để giải quyết vấn đề truyền dữ liệu giữa các module, có thể thiết lập
một mạng LAN riêng giữa trên các máy tính chạy các module với chi phí không cao
(chỉ cần gắn thêm cho mỗi máy tính một card mạng nữa và thêm một thiết bị mạng
như hub hay switch). Với một số phân tích ban đầu như vậy, cho thấy ứng dụng có
thể hoạt động hiệu quả trên môi trường Grid. Bộ Globus Toolkit được chọn làm
nền tảng Grid vì GT là một middle-ware mã nguồn mở, hàng đầu trong trong lĩnh
vực Grid Computing, có nhiều chức năng thích hợp để xây dựng ứng dụng.
Ứng dụng đòi hỏi khả năng bắt các packet lưu thông trong mạng, phân tích các
thông tin trong từng packet, phát sinh, quản lý các tập luật. Hiện nay trên thế giới có
2 phần mềm rất tốt để thực hiện các chức năng này là Ethereal và Snort như đã giới
SVnet.vn
Chương 6. Hệ thống quản trị Grid NetManager
- 159 -
thiệu ở chương trước. Cả hai phần mềm đều là phần mềm mã nguồn mở, nên có thể
kế thừa và sử dụng lại mã nguồn, giảm bớt chi phí xây dựng ứng dụng.
Tóm lại, định hướng phát triển ứng dụng là xây dựng ứng dụng trên nền tảng
công nghệ Grid Computing với bộ Globus Toolkit; các chức năng của ứng dụng,
các mã phân tích, xử lý của các module được kế thừa và phát triển từ các chức năng,
mã xử lý của các phần mềm Ethereal, Snort.
66..55.. GGiiớớii hhạạnn vvấấnn đđềề tthhựựcc hhiiệệnn ccủủaa lluuậậnn vvăănn Trên đây là giới thiệu về một ứng dụng quản trị mạng hoàn chỉnh, là mục tiêu để
đạt được trong tương lai, cùng với một số định hướng về phát triển ứng dụng. Tuy
nhiên trong giới hạn của luận văn này, nhóm thực hiện chỉ xây dựng một số chức
năng của hệ thống, tập trung vào việc xây dựng các chức năng sử dụng bộ Globus
Toolkit, với mục đích áp dụng thử nghiệm công nghệ Grid Computing vào bài toán
quản trị mạng. Hệ thống có tên là “Grid NetManager” hiện tại được xây dựng với
các chức năng như sau :
1. Bắt packet (Capture packet) trên nhiều LAN Segment
Hệ thống cho phép bắt các packet lưu thông trong các LAN segment theo
nhiều tiêu chí và lưu xuống các file dữ liệu phân tán. Vị trí các file này được xác
định bởi nhà quản trị, có thể nằm ở bất cứ máy tính nào trong hệ thống Grid. Các
tiêu chí được đặc tả dưới dạng các chuỗi capture filter của Ethereal.
Hệ thống sẽ tự động tìm kiếm các máy tính thỏa yêu cầu trong hệ thống Grid
đưa ra cho nhà quản trị. Nhà quản trị chỉ cần chọn các máy tính để thực thi module
Sensor, hệ thống sẽ tự động gửi các module này và yêu cầu thực thi.
2. Truy xuất thông tin trong các file dữ liệu phân tán
Cho phép tìm kiếm các packet thỏa điều kiện cho trước trong các file dữ liệu
thông qua các câu truy vấn. Hệ thống cho phép các module Xử lý truy vấn và tìm
kiếm thông tin chạy song song trên nhiều máy khác nhau thỏa yêu cầu.
3. Các chức năng tương tự phần mềm Ethereal
Do các module phân tích, tổng hợp thông tin kế thừa lại từ phần mềm
Ethereal nên hệ thống có đầy đủ các chức năng của Ethereal, chỉ khác ở chỗ tập dữ
SVnet.vn
Chương 6. Hệ thống quản trị Grid NetManager
- 160 -
liệu cần xử lý ở đây tổng hợp từ nhiều LAN segment khác nhau thay vì chỉ trong
một LAN segment như trước đây.
4. Mô hình thành phần ứng dụng
Hình 6-2 Mô hình các thành phần của ứng dụng Grid NetManager thử nghiệm.
Ý nghĩa các thành phần giống như trong mô hình tổng quan. Module
PacketInfoProvider thực hiện tìm kiếm thông tin trong các PacketDatabase theo các
câu truy vấn và trả về các kết quả. Module này có nhiều thể hiện chạy song song
nhằm tăng tốc quá trình tìm kiếm thông tin.
SVnet.vn
Chương 7. Phân tích, thiết kế và cài đặt thử nghiệm ứng dụng
Giao diện ứng dụng Grid NetManager thử nghiệm ngoài sử dụng lại các giao
diện của Ethereal, có thêm một số điểm mới sau:
STT Tên màn hình Diễn giải
1. Grid NetManager
Sử dụng lại màn hình chính của Ethreal, thêm các chức năng mới, thể hiện của các usecase Capture, Query Packet Information, Search nodes, cho phép tìm kiếm các máy tính thỏa các điều kiện yêu cầu về tài nguyên, cho phép nhập câu truy vấn các thông tin về packet và xuất kết quả ra màn hình, cho phép khởi tạo và kết thúc quá trình bắt packet. Màn hình này cho phép sử dụng lại các chức năng phân tích của Ethereal.
2. Packet Capture Configure
Thể hiện usecase Configure Packet Capturing, cho phép người dùng cấu hình các thông tin phục vụ bắt packet như node thực thi, tên file lưu trữ, node lưu dữ liệu, capture filter. Bảng 7-4 Danh sách các giao diện.
SVnet.vn
Chương 7. Phân tích, thiết kế và cài đặt thử nghiệm ứng dụng
Hình 7-4 Màn hình chính ứng dụng Grid NetManager thử nghiệm
Mô tả màn hình (danh sách các control được thêm vào màn hình chính
cùa ethereal)
STT Tên control
Tên trên giao diện
Kiểu Diễn giải
1. mds_server_te MDS Server
Textbox Cho phép nhập vào tên của MDS Server đang quản lý thông tin của hệ thống Grid
2. filter_te Filter Textbox Chứa nội dung truy vấn cơ sở dữ liệu. Sau khi nhận đầy đủ câu truy vấn, hệ thống sẽ cho gọi thực thi module PacketInfoProvider trên các máy ở xa, chờ nhận kết quả và xuất ra màn hình.
3. node_cb Nodes Combo Chứa danh sách Node thoả điều kiện tìm kiếm hiện đang có trong Grid.
4. nodes_bt Nodes Button Thực hiện tìm kiếm các Node thỏa điều kiện yêu cầu về tài nguyên từ MDS server và đưa ra cboNodes
SVnet.vn
Chương 7. Phân tích, thiết kế và cài đặt thử nghiệm ứng dụng
- 182 -
5. Start_bt Start Button Bắt đầu quá trình bắt packet trên các node.
6. stop_bt Stop Button Kết thúc quá trình bắt packet. Bảng 7-5 Mô tả màn hình chính.
7.2.2.2.2. Màn hình Packet Capture Configure
Hình 7-5 Màn hình Packet Capture Configue
Mô tả màn hình (danh sách các control)
STT Tên control Tên trên
giao diện
Kiểu Diễn giải
1. clist_Node Listbox Hiện thị các chọn lựa cấu hình bắt packet của người dùng.
2. file_te File Textbox Chứa tên file lưu trữ dữ liệu khi bắt xuống.
3. filter_te Argument Textbox Chứa nội dung cấu hình bắt packet của từng module Sensor.
4. computer_cb Sensor Combo Chứa danh sách Node thoả điều kiện tìm kiếm tài nguyên, hiện đang có trong Grid, dùng để chọn máy thực
SVnet.vn
Chương 7. Phân tích, thiết kế và cài đặt thử nghiệm ứng dụng
- 183 -
thi module Sensor. 5. store_cb Database
ComputerCombo Chứa danh sách Node thoả điều kiện
tìm kiếm tài nguyên, hiện đang có trong Grid, dùng để chọn máy lưu trữ dữ liệu.
6. btnOK OK Button Lưu lại cấu hình các module. 7. btnAdd Add Button Thêm cấu hình cho một module mới8. btnUpdate Update Button Cập nhật lại cấu hình của một
module. 9. btnRemove Remove Button Loại bỏ một cấu hình module.
Các máy tính thử nghiệm được triển khai như hình 7-8. Đã thử nghiệm thành công chức năng gửi và thực thi công việc trên máy tính ở xa, chức năng bắt packet, xử lý truy vấn.
SVnet.vn
Chương 8. Kết luận
- 186 -
CChhưươơnngg 88.. KKếếtt lluuậậnn
88..11.. ĐĐáánnhh ggiiáá
88..11..11.. VVềề lluuậậnn vvăănn
Ở mức luận văn, nhóm thực hiện đã thu được những kết quả sau :
+ Tìm hiểu khá chi tiết, tổng quan về các khía cạnh nền tảng công nghệ Grid
Computing hiện nay như bản chất khái niệm, các thách thức và yêu cầu, lợi ích và
ứng dụng, mô hình kiến trúc, các chuẩn hiện nay, tìm hiểu và so sánh các
middleware Grid phổ biến hiện nay.
+ Tìm hiểu khá đầy đủ, tổng quan về bộ Globus Toolkit 3.2 về mô hình,
cách thức giải quyết các thách thức cơ bản của công nghệ Grid, các dịch vụ cơ bản,
các yêu cầu, lưu ý khi xây dựng các dự án ứng dụng Grid với bộ Globus Toolkit.
+ Bên cạnh đó, các vấn đề cơ bản về quản trị mạng, hệ thống quản trị mạng,
hệ thống Intrusion Detection System, cũng đã được tìm hiểu, làm cơ sở để đưa ra
mô hình ứng dụng Grid NetManager.
Các kiến thức ở đây có thể được sử dụng để định hướng tìm hiểu, nghiên cứu
sâu hơn về công nghệ Grid Computing và bộ Globus Toolkit, cũng như sử dụng để
phát triển ứng dụng Grid. Hướng tiếp cận sử dụng công nghệ Grid Computing vào
bài toán quản trị mạng là một hướng mới, hiện chưa có dự án nào được công bố.
88..11..22.. VVềề ứứnngg ddụụnngg
Dựa trên những kết quả nghiên cứu, tìm hiểu từ công nghệ Grid Computing và
các hệ thống quản trị mạng, nhóm thực hiện đã đạt được những kết quả sau :
+ Đề xuất mô hình hệ thống quản trị mạng dựa trên nền công nghệ Grid
Computing, đưa ra định hướng xây dựng ứng dụng.
+ Đọc hiểu và sửa chữa mã nguồn phần phần mềm Ethereal cho phù hợp với
các tính năng mới.
+ Cài đặt và cấu hình thành công bộ Globus Toolkit 3.2 trên môi trường
mạng máy tính Linux, cho phép thực thi các ứng dụng Grid.
SVnet.vn
Chương 8. Kết luận
- 187 -
+ Thiết kế và cài đặt các chức năng tìm kiếm máy tính trong Grid, gửi và
thực thi các module bắt packet (Sensor), xử lý truy vấn trên các node
(PacketInfoProvider), lấy thông tin từ các file dữ liệu.
Việc cài đặt thử nghiệm một số chức năng cho thấy tính khả thi của mô hình và
khả năng cài đặt thành công của ứng dụng trong môi trường Grid với middleware
Globus Toolkit.
Ứng dụng Grid NetManager là một dự án lớn, đòi hỏi đầu tư nhiều về công sức
và thời gian. Trong quá trình làm luận văn, do phải dành thời gian tìm hiểu công
nghệ và làm quen với các môi trường mới (hệ điều hành Linux, công cụ phát triển
ứng dụng,…) nên những kết quả trên đây mới chỉ là bước đầu, việc phát triển ứng
dụng đòi hỏi có những nghiên cứu, phân tích, thiết kế, cài đặt kỹ lưỡng hơn trong
GGrriidd Lược đồ đánh giá tính khả khi của ứng dụng được trình bày trong hình 0-1. Nó
đưa ra các tiêu chí và các yêu cầu cần thiết của một giải pháp Grid, qua quá trình lượng giá các tiêu chí sẽ cho biết tính khả thi của ứng dụng có cao hay không.
Ứng với mỗi tiêu chí có các cột sau: + Tầm vực : Tổng kết các khả năng có thể của tiêu chí. + Độ quan trọng : Trọng số cho biết mức độ quan trọng của tiêu chí khi so
sánh với các yêu cầu của ứng dụng. + Nỗ lực : Trọng số cho biết mức độ nỗ lực cần thiết để đạt được tiêu chí đó. + Kỹ năng : Trọng số cho biết trình độ hiện tại của đội ngũ phát triển. + Tài nguyên : Trọng số cho biết khả năng và các kiểu của tài nguyên Grid. + Các ghi chú :
Mỗi tiêu chí cần được đánh giá và cho điểm tương ứng theo một độ đo nào đó.
Ở đây đề nghị độ đo với các giá trị H (cao), M(vừa), L (thấp), cũng có thể sử dụng các độ đo khác. Lưu ý, có thể thêm các tiêu chí khác vào bảng để đánh giá cho phù hợp với tình hình thực tế.
Tiêu chí Trọng số (H-M-L)
STT Mục Tầm vực (tăng dần
theo nỗ lực)
Độ quan trọng
Nỗ lực
Kỹ năng
Tài nguyên
Ghi chú
1. Luồng công việc
Song song -> Mạng -> Tuần tự
2. Số công việc khác nhau
Một công việc -> nhiều công việc.
3. Độ sâu của các công việc con.
Không có công việc con -> Rất sâu
4. Kiểu công việc
Theo lô -> Đơn giản -> Song song -> Dựa trên EJB -> Phức tạp
5. Mức độ phụ thuộc Hệ điều hành
Độc lập -> Phụ thuộc chặt chẽ.
6. Dung lượng bộ nhớ cho
Nhỏ -> Lớn
SVnet.vn
Phụ lục
- 190 -
từng công việc
7. Các DLL Có sẵn tại chỗ -> Cần có DLL đặc biệt
8. Cấu hình trình biên dịch
Không cần cấu hình -> Cấu hình chuẩn ->Cần cấu hình đặc biệt.
9. Môi trường thực thi.
Không cần -> Môi trường chuẩn ->Cần môi trường đặc biệt.
10. Server ứng dụng
Không cần -> JSP -> EJB -> server đặc biệt.
11. Ứng dụng bên ngoài
Không cần -> Ứng dụng chuẩn -> Đòi hỏi cấu hình/cài đặt đặc biệt
12. Mức độ phụ thuộc phần cứng
Không Cần -> Các Thiết Bị IT Chuẩn -> Các Thiết Bị IT Đặc Biệt -> Các thiết bị đặc biệt khác.
13. Thực thi dự phòng công việc
Không cần thiết -> Rất cần thiết.
14. Nhập/Xuất dữ liệu cho công việc.
Tham số dòng lệnh -> Hàng đợi thông điệp -> File dữ liệu -> Cơ sở dữ liệu -> APIs
15. Truy cập dữ liệu chi sẻ
RO file -> RO DBMS -> RW File -> RW DBMS
16. Không gian lưu trữ tạm thời
Nhỏ -> Không giới hạn
17. Băng thông mạng
Nhỏ -> LAN tốc độ cao -> WAN
18. Dữ liệu theo thời gian.
Dữ liệu luôn hợp lệ -> Dữ liệu thay đổi theo thời gian.
19.
Kiểu dữ liệu : Sử dụng bộ mã
Unicode thông thường trên mạng SBCS -> Các unicode khác nhau trên DBCS -> Bộ Mã ký tự không xác định được.
Bảng 8-1 Các tiêu chí đánh giá tính khả thi của ứng dụng Grid
SVnet.vn
Phụ lục
- 191 -
BB.. ĐĐịịnnhh ddạạnngg ffiillee GGWWSSDDLL Phần này giới thiệu các bước cơ bản để viết một tài liệu GWSDL đặc tả Grid
Service, việc viết một đặc tả GWSDL cũng tương tự như viết một tài liệu WSDL khi phát triển các Web service, gồm các bước:
1. Viết thành phần gốc : <definitions>. 2. Viết đặc tả <gwsdl:PortType>. 3. Viết các đặc tả <message> nhập xuất cho các phương thức của
PortType. 4. Viết thành phần <types>.
Chi tiết các bước sẽ được trình bày dưới đây thông qua một ví dụ nhỏ, viết Grid service MathService với các chức năng đã được giới thiệu ở phần Triển khai cài đặt các Grid Service
+ name : tên của portType + extends : Đây là một sự khác biệt đối với một file WSDL truyền thống.
Thuộc tính này cho phép chúng ta mở rộng từ một portType có sẵn, ở đây MathService được mở rộng từ portType GridService chuẩn.
Bên trong tag <gwsdl:portType> chứa tag <operation> cho phép định nghĩa các phương thức của portType các tham số đầu vào (tag <input>), các giá trị trả về (tag <output>), các giá trị lỗi (<fault>). Lưu ý, tất cả đều có thuộc tính <message>, được định nghĩa dưới đây, xác định những gì cần trao đổi trong lúc gọi phương thức.
Như đã giới thiệu, GT3 hỗ trợ 2 cách cài đặt interface trong ngôn ngữ lập trình, cách thứ nhất là kỹ thuật sử dụng tính kế thừa, ở đây lớp MathImpl kế thừa từ lớp GridServiceImpl, do GridServiceImpl có tất cả các chức năng cơ bản nên MathImpl chỉ cần cài đặt tất cả các phương thức của Math portType là đủ. Như trên hình 0-1, lớp MathImpl chứa tất cả các hàm cài đặt cho các phương thức của portType (Lưu ý, ở đây có nhiều hàm hơn). Tuy nhiên, cài đặt tất cả các phương thức của portType chỉ trong một lớp có thể gây ra nhiều bất tiện đặc biệt là đối với các portType lớn, có nhiều phương thức. Và kỹ thuật này, đối với Java, lớp MathImpl không thể kế thừa từ một lớp nào nữa, điều này hạn chế việc tái sử dụng mã.
SVnet.vn
Phụ lục
- 194 -
Hình 8-1 Lớp triển khai interface của Grid service bằng kỹ thuật kế thừa.
GT3 đưa một hướng tiếp cận mới để giải quyết khuyết điểm của kỹ thuật sử
dụng tính kế thừa, đó là kỹ thuật uỷ quyền. Hướng tiếp cận này cho phép phân tán các nhóm phương thức vào các lớp khác nhau, các lớp này được gọi là Operation Provider. Như trên hình 0-2, có thể chia lớp MathImpl thành 3 lớp, ứng với từng nhóm phương thức.
Hình 8-2 Cài đặt intrface củaGrid service bằng kỹ thuật Operation Provider
Lưu ý là 3 lớp này không thừa kế từ lớp nào hết, chúng chỉ cài đặt một interface
tên là Operation Provider. Lúc này các chức năng của lớp GridServiceImpl không được kế thừa từ đây mà được yêu cầu Grid service container cung cấp thông qua bản đặc tả triển khai. Khi tiến hành cài đặt theo cách tiếp cận này, có một số thay đổi nhỏ so với kỹ thuật sử dụng tính kế thừa, như trình bày dưới đây.
Lớp cung cấp hoạt động (Operation Provider) ở đây gọi là MathProvider cũng
giống như các lớp của MathImpl trước đây, chỉ khác là ở đây cài đặt thêm interface OperationProvider, file : $GRIDSER_DEMO/org/globus/progtutorial/services/core/providers/impl/MathProvider.java
SVnet.vn
Phụ lục
- 195 -
package org.globus.progtutorial.services.core.providers.impl; import org.globus.ogsa.GridServiceBase; import org.globus.ogsa.GridServiceException; import org.globus.ogsa.OperationProvider; import java.rmi.RemoteException; import javax.xml.namespace.QName; //Luu y o day cai dat OperationProvider public class MathProvider implements OperationProvider { // Cac thuoc tinh cua Operation provider //Khai bao namespace private static final String namespace = "http://www.globus.org/namespaces/2004/02/progtutorial/MathService"; //Khai bao ten cac phuong thuc duoc cung cap, tuong ung voi file GWSDL private static final QName[] operations = new QName[] { new QName(namespace, "add"), new QName(namespace, "subtract"), new QName(namespace, "getValue") }; private GridServiceBase base; // Cac phuong thuc cua Operation Provider public void initialize(GridServiceBase base) throws GridServiceException { this.base = base; } public QName[] getOperations() { return operations; } //Cai dat private int value = 0; public void add(int a) throws RemoteException { value = value + a; } //-------- tuong tu MathImpl---------- }
File đặc tả triển khai cũng có một số thay đổi, file :
$GRIDSER_DEMO/org/globus/progtutorial/services/core/providers/server-deploy.wsdd <?xml version="1.0"?> <deployment <!-- -----Tuong tu tren --------> <parameter name="schemaPath" value="schema/progtutorial/MathService/Math_service.wsdl"/> <!-- -----Ten class --------> <parameter name="className" value="org.globus.progtutorial.stubs.MathService.MathPortType"/> <!-- Yeu cau Grid service container goi chuc nang cua GridServiceImpl nhu la chuc nang co ban cua MathService --------> <parameter name="baseClassName" value="org.globus.ogsa.impl.ogsi.GridServiceImpl"/>
SVnet.vn
Phụ lục
- 196 -
<parameter name="operationProviders" value="org.globus.progtutorial.services.core.providers.impl.MathProvider"/> <!—Tuong tu tren --> </deployment>
Các thao tác khác để triển khai service hoàn toàn tương tự như đã giới thiệu ở
Như đã biết, mỗi Grid service đều có các SDE của riêng mình, phần này sẽ xem xét kỹ thuật thêm SDE cho một service. Ở đây chúng ta thêm một SDE có tên là MathData chứa các thông tin như giá trị hiện tại (value), phép toán thực hiện cuối cùng (lastOp), số phép toán đã thực hiện (numOp), MathData chỉ có một và chỉ một giá trị (cardinality = 1..1) được mô tả trên hình 0-3:
Hình 8-3 Ví dụ về SDE của MathService
+ Đặc tả SDE
Việc định nghĩa một SDE cho một service thông qua file đặc tả GWSDL, tuy nhiên MathData là một kiểu phức tạp nên mặc dù có thể đặc tả kiểu này trong file GWSDL, chúng ta có thể đặc tả trong một file khác. File : $GRIDSER_DEMO/schema/progtutorial/MathService_sd/MathSDE.xsd <complexType name="MathDataType"> <sequence> <element name="value" type="int"/> <element name="lastOp" type="string"/> <element name="numOps" type="int"/> </sequence> </complexType>
SVnet.vn
Phụ lục
- 197 -
Bây giờ, chúng ta sẽ đặc tả lại inteface của service bằng cách tạo một file GWSDL mới, file này có nội dung và cấu trúc gần giống với file GWSDL cũ, một số phần thay đổi được trình bày ở đây. File : $GRIDSER_DEMO/schema/progtutorial/MathService_sd/Math.gwsdl.
+ Xác định lại namespace, <definitions name="MathService" targetNamespace="http://www.globus.org/namespaces/2004/02/progtutorial/MathService_sd" xmlns:tns="http://www.globus.org/namespaces/2004/02/progtutorial/MathService_sd" xmlns:data="http://www.globus.org/namespaces/2004/02/progtutorial/MathService_sd/MathSDE" xmlns:ogsi="http://www.gridforum.org/namespaces/2003/03/OGSI" xmlns:gwsdl="http://www.gridforum.org/namespaces/2003/03/gridWSDLExtensions" xmlns:sd="http://www.gridforum.org/namespaces/2003/03/serviceData" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/">
Ở đây khai báo lớp không thay đổi: public class MathImpl extends GridServiceImpl implements MathPortType
Lớp cài đặt này có thêm 2 thuộc tính private mới :
private ServiceData mathDataSDE; //La SDE private MathDataType mathDataValue; //Chua gia tri cua SDE
SVnet.vn
Phụ lục
- 198 -
Việc tạo lập các SDE nằm trong hàm postCreate, ở đây chúng ta có thể để các giá trị khởi tạo cho SDE. public void postCreate(GridContext context) throws GridServiceException { // Goi ham postCreate lop co so super.postCreate(context); //Duoi day la cac buoc tao mot SDE va dua vao Service Data Set // Tao Service Data Element mathDataSDE = this.getServiceDataSet().create("MathData"); // Tao mot doi tuong MathDataType va khoi tao cac gia tri mathDataValue = new MathDataType(); mathDataValue.setLastOp("NONE"); mathDataValue.setNumOps(0); mathDataValue.setValue(0); // Dua cac gia tri vao doi tuong MathDataType mathDataSDE.setValue(mathDataValue); // Them SDE vao Service Data Set this.getServiceDataSet().add(mathDataSDE); }
Các hàm add(), substract() có thêm các lệnh mới để cập nhật lại SDE:
public void add(int a) throws RemoteException { //Cac ham setLastOp(),setValue(),setNumOps(), getNumOps() duoc tu //dong phat sinh tu file dac ta MathSDE.xsd mathDataValue.setLastOp("Addition"); incrementOps(); mathDataValue.setValue(mathDataValue.getValue() + a); } // Ham nay cap nhat MathData SDE tang so phep toan len 1 private void incrementOps() { int numOps = mathDataValue.getNumOps(); mathDataValue.setNumOps(numOps + 1); }
+ Đặc tả cài đặt
Trong file đặc tả chỉ cần thay đổi lại các giá trị tương ứng tên các file mới vừa tạo ra. <parameter name="baseClassName" value="org.globus.progtutorial.services.core.servicedata.impl.MathImpl"/> <parameter name="className" value="org.globus.progtutorial.stubs.MathService_sd.MathPortType"/>
Như đã biết, cơ chế Notification cho phép client biết được những gì đang xảy ra ở một Grid service instance. Cơ chế Notification liên quan mật thiết đến các SDE của service. Trong GT3, cơ chế Notification hoạt động theo sơ đồ sau với các bước:
SVnet.vn
Phụ lục
- 200 -
Hình 8-4 Sơ đồ hoạt động của cơ chế Notification trong GT3.
1. addListener : Các client yêu cầu service thông báo cho mình khi có sự
thay đổi của SDE xác định trong lời gọi. 2. notifyChange : Khi có sự thay đổi, MathService sẽ yêu cầu SDE tương
ứng gửi thông báo cho các client đã yêu cầu. 3. deliverNotification : SDE thông báo cho client. Ở đây các giá trị của SDE
được gửi về cho client, do đó client không cần thực hiện thêm bất cứ truy vấn nào nữa.
Có thể thấy đây là cơ chế “push” notification, GT3 chỉ hỗ trợ duy nhất dạng này. Dưới đây, chúng ta sẽ xem xét chi tiết kỹ thuật cài đặt notification này trong GT3 với MathService.
+ Khai báo sử dụng Notification trong portType Thêm cơ chế Notification ảnh hưởng đến interface do chúng ta cần cung cấp
một số phương thức mới ra bên ngoài. Tất nhiên, chúng ta không cần cài đặt các phương thức này mà chỉ cần khai báo sử dụng lại portType NotificationSource có sẵn, portType này chứa đầy đủ các phương thức liên quan đến cơ chế Notification. Do đó file GWSDL ở trên chỉ cần sửa lại như sau: File : $GRIDSER_DEMO/schema/progtutorial/MathService_sd_notif/Math.gwsdl <!-- Khai bao su dung lai portType NotificationSource --> gwsdl:portType name="MathPortType" extends="ogsi:GridService ogsi:NotificationSource"> <!-- <cac operation> --> <!-- <serviceData> --> </gwsdl:portType>
+ Cài đặt
Chúng ta chỉ cần thêm một lệnh duy nhất trong các hàm cài đặt. File : $GRIDSER_DEMO/org/globus/progtutorial/services/core/notifications/impl/MathImpl.java public void add(int a) throws RemoteException {
SVnet.vn
Phụ lục
- 201 -
mathDataValue.setLastOp("Addition"); incrementOps(); mathDataValue.setValue(mathDataValue.getValue() + a); //Yeu cau thong bao cho cac client mathDataSDE.notifyChange(); }
+ Đặc tả cài đặt
Hoàn toàn giống như trước, chỉ thêm một dòng mới. File: $GRIDSER_DEMO/org/globus/progtutorial/core/notifications/server-config.wsdd <deployment <!—Khai bao tuong tu tren, dong duoi day duoc them moi --> <parameter name="operationProviders" value="org.globus.ogsa.impl.ogsi.NotificationSourceProvider"/> <!—-Tuong tu tren --> </deployment>
+ Client
Client ở đây phức tạp hơn so với các ví dụ trước. Client trong Java (hay đúng hơn là lớp nhận các thông báo) phải cài đặt phương thức deliverNotification, phương thức này sẽ được Grid service gọi khi có sự thay đổi trong SDE của mình. Mã nguồn client như sau, file : $GRIDSER_DEMO/org/globus/progtutorial/clients/MathService_sd_notif/ClientListener.java //Cac khai bao import public class ClientListener extends ServicePropertiesImpl implements NotificationSinkCallback { public static void main(String[] args) { // Lay tham so dong lenh HandleType GSH = new HandleType(args[0]); ClientListener clientListener = new ClientListener(GSH); } public ClientListener(HandleType GSH) throws Exception { // Bat dau dang ky va lang nghe MathService NotificationSinkManager notifManager = NotificationSinkManager.getManager(); notifManager.startListening(NotificationSinkManager.MAIN_THREAD); String sink = notifManager.addListener("MathData", null, GSH, this); System.out.println("Listening..."); // Cho nguoi dung nhan phim System.in.read(); // Ket thuc lang nghe notifManager.removeListener(sink); notifManager.stopListening(); System.out.println("Not listening anymore!");
SVnet.vn
Phụ lục
- 202 -
} //Khi co thay doi trong SDE,ham nay se duoc Grid service goi, se xuat ra man // hinh cac gia tri cua SDE public void deliverNotification(ExtensibilityType any) throws RemoteException { try { // SDE da thay doi, lay gia tri moi ServiceDataValuesType serviceData = AnyHelper.getAsServiceDataValues(any); MathDataType mathData = (MathDataType) AnyHelper.getAsSingleObject(serviceData, MathDataType.class); // Xuat ra man hinh System.out.println("Current value: " + mathData.getValue()); System.out.println("Previous operation: " + mathData.getLastOp()); System.out.println("# of operations: " + mathData.getNumOps()); }catch(Exception exc) { System.out.println("ERROR!"); exc.printStackTrace(); } } }
Làm cho một service có khả năng được tạo lập một cách động (chuyển service thành transient service) là một trong những việc dễ dàng nhất trong GT3, chúng ta không cần thay đổi portType cũng như cài đặt của nó. Mọi thứ cần làm là sửa lại file đặc tả cài đặt.
+ Đặc tả cài đặt Để có thể thấy rõ hơn về sự thay đổi, chúng ta xem lại file WSDD cũ:
Dưới đây là file WSDD đã sửa đổi theo mô hình tạo service động với một
factory. Lưu ý, chúng ta sẽ khai báo một service factory tĩnh (persistent service) để chịu trách nhiệm tạo ra các MathService instance động (transient service). File : $GRIDSER_DEMO/org/globus/progtutorial/services/core/first/server-deploy.wsdd
+ Trước hết, chúng ta đã thêm tiền tố “instance-” vào name, schemaPath, baseClassName, và className, bằng cách này, chúng ta cho container biết đây là những tham số để truyền vào khi tạo các instance MathService thông qua Factory.
SVnet.vn
Phụ lục
- 204 -
+ Sau đó chúng ta thêm các tham số mới vào “khối tham số chung”, để ý lúc này, schemaPath, baseClassName, và className tham khảo đến mã thực thi của Factory (cung cấp bởi GT3), không phải bất cứ mã thực thi nào do chúng ta tạo ra.
+ Có thể thấy, việc thêm khả năng tạo lập động cho bất kỳ service nào, đơn giản chỉ gồm 2 bước, thêm các tiền tố “instance-” và sửa lại “khối tham số chung”
+ Đối với client
Có thể sử dụng lại các client cũ. Ở đây, chúng ta viết một client để demo khả năng tạo lập, sử dụng và huỷ một service instance thông qua Factory. File : $GRIDSER_DEMO/org/globus/progtutorial/clients/MathService/FactoryClient.java package org.globus.progtutorial.clients.MathService; import org.gridforum.ogsi.OGSIServiceGridLocator; import org.gridforum.ogsi.Factory; import org.gridforum.ogsi.LocatorType; import org.globus.ogsa.utils.GridServiceFactory; import org.globus.progtutorial.stubs.MathService.service.MathServiceGridLocator; import org.globus.progtutorial.stubs.MathService.MathPortType; import java.net.URL; public class FactoryClient { public static void main(String[] args) { try { // Lay tham so dong lenh URL GSH = new java.net.URL(args[0]); int a = Integer.parseInt(args[1]); // Lay GSR cua MathService Factory OGSIServiceGridLocator gridLocator = new OGSIServiceGridLocator(); Factory factory = gridLocator.getFactoryPort(GSH); GridServiceFactory mathFactory = new GridServiceFactory(factory); // Tao mot MathService instance moi va lay GSR cua no LocatorType locator = mathFactory.createService(); MathServiceGridLocator mathLocator = new MathServiceGridLocator(); MathPortType math = mathLocator.getMathServicePort(locator); // Goi phuong thuc Add() math.add(a); System.out.println("Added " + a); int value = math.getValue(); System.out.println("Current value: " + value); // Huy service instance sau khi su dung math.destroy(); }catch(Exception e) { System.out.println("ERROR!"); e.printStackTrace();
Logging là một kỹ thuật quan trọng trong phát triển và bảo trì phần mềm, cho phép theo dõi các sự kiện đặc biệt của hệ thống, các sự kiện ghi nhận có thể được kết xuất ra màn hình. GT3 cung cấp khả năng logging theo mô hình Apache Jakarta Commons Logging (http://jakarta.apache.org/commons/logging/). Mô hình này đưa ra 6 cấp độ thông tin logging, gồm Debug, Trace, Info, Warn, Error, Fatal. Việc quyết định thông tin nào ở mức độ nào là tuỳ thuộc vào người lập trình ứng dụng.
Ở đây chúng ta sẽ thêm tính năng logging vào MathService, sử dụng lại ví dụ đầu tiên. Khi thêm tính năng logging, chúng ta không cần sửa lại portType, chỉ cần thêm các lệnh cần thiết vào mã cài đặt portType.
+ Cài đặt File:
$GRIDSER_DEMO/org/globus/progtutorial/services/core/logging/impl/MathImpl.java // ... import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; // ... public class MathImpl extends GridServiceImpl implements MathPortType { // Tao logger cho class nay static Log logger = LogFactory.getLog(MathImpl.class.getName()); // ... public void add(int a) throws RemoteException { logger.info("Addition invoked with parameter a=" + String.valueOf(a)); if (a==0) logger.warn("Adding zero doesn't modify the internal value!"); value = value + a; } //... public int getValue() throws RemoteException { logger.info("getValue() invoked"); return value; } }
+ Xem các kết xuất log
Để xem kết xuất log của MathService, thêm dòng sau vào cuối file: $GLOBUS_LOCATION/ogsilogging.properties(Đây là file cấu hình Log của GT3)
SVnet.vn
Phụ lục
- 206 -
#Cho biet can xuat cac log o cap do Info ra man hinh console, co the sua #lai cac cap do khac, va ghi ra file org.globus.progtutorial.services.core.logging.impl.MathImpl=console,info
Như đã biết việc quản lý chu trình sống của các service instance được tạo lập động rất quan trọng. GT3 cung cấp các công cụ hữu ích để quản lý các service như phương thức callback (callback method), theo dõi chu trình sống (lifecycle monitor). Ở đây chúng ta sẽ sử dụng lại các ví dụ trong phần transient service và logging để demo 2 kỹ thuật trên.
+ Kỹ thuật Callback method. Một cách đơn giản để quản lý chu trình sống bằng callback method (tương tự
các hàm sự kiện khi lập trình với MS Windows). Các phương thức callback được gọi trong một số thời điểm xác định trong chu trình sống của service. GT3 hỗ trợ các hàm callback sau:
Hàm Thời điểm được gọi preCreate Khi quá trình tạo lập Grid Service bắt đầu, lúc này tất cả cấu hình
chưa được nạp. postCreate Khi service đã được tạo ra và cấu hình service đã được tạo lập. activate Tất cả Grid service đều mặc định ở trạng thái “không kích
hoạt”(deactivated), hàm này được gọi khi service được kích hoạt. deactivate Khi service trở về trạng thái “không kích hoạt” preDestroy Ngay trước khi service bị huỷ.
Bảng 8-2 Các hàm callback trong GT3.
File : $GRIDSER_DEMO/org/globus/progtutorial/services/core/lifecycle/impl/MathImpl.java // ... import org.globus.ogsa.GridServiceCallback; // ... public class MathImpl extends GridServiceImpl implements MathPortType, GridServiceCallback { // ... // Cai dat cac phuong thuc Callback, chi can su dung lai cac ham cai san cua lop cha GridServiceImpl public void preCreate(GridServiceBase base) throws GridServiceException { super.preCreate(base); logger.info("Instance is going to be created (preCreate)"); } public void postCreate(GridContext context) throws GridServiceException {
SVnet.vn
Phụ lục
- 207 -
super.postCreate(context); logger.info("Instance has been created (postCreate)"); }
public void activate(GridContext context) throws GridServiceException
{ super.activate(context); logger.info("Instance has been activated (activate)"); } public void deactivate(GridContext context) throws GridServiceException { super.deactivate(context); logger.info("Instance has been deactivated (deactivate)"); } public void preDestroy(GridContext context) throws GridServiceException { super.preDestroy(context); logger.info("Instance is going to be destroyed (preDestroy)"); } }
+ Kỹ thuật Lifecycle Monitor
Kỹ thuật Callback Method khá tốt, tuy nhiên nó khó có thể sử dụng lại. Giả sử chúng ta có 2 hàm preCreate() và postCreate() và muốn sử dụng lại trong tất cả các Grid Service, với kỹ thuật Callback Method, chỉ có cách đưa nó vào một lớp cha, rồi cho tất cả các lớp Grid Service khác thừa kế từ nó. Tất nhiên đây có sự hạn chế như đã giới thiệu trong phần Operation Provider.
GT3 đưa ra giải pháp mới là Lifecycle Monitor. Một lifecycle monitor là một lớp triển khai interface ServiceLifeCycleMonitor, một interface với các hàm callback được gọi tại các thời điểm quan trọng trong thời gian sống của Grid service. Chúng ta không cần kế thừa hay tham thảo interface này trực tiếp từ mã nguồn. Chúng ta chỉ cần thêm một dòng vào bản đặc tả triển khai yêu cầu lớp lifecycle monitor phải được gọi khi có sự kiện đặc biệt xảy ra. Do đó, chúng ta có thể dùng cùng một lifecycle monitor cho nhiều Grid service khác nhau.
Dưới đây là một lớp lifecycle monitor đơn giản, file : $GRIDSER_DEMO/org/globus/progtutorial/services/core/lifecycle/impl/MathLifecycleMonitor.java
package org.globus.progtutorial.services.core.lifecycle.impl; import org.globus.ogsa.GridServiceException; import org.globus.ogsa.ServiceLifecycleMonitor; import org.globus.ogsa.GridContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class MathLifecycleMonitor implements ServiceLifecycleMonitor { // Tao logger cho lop static Log logger = LogFactory.getLog(MathLifecycleMonitor.class.getName()); //Cac phuong thuc can callback public void create(GridContext context) throws GridServiceException { logger.info("Instance is going to be created (create)"); }
SVnet.vn
Phụ lục
- 208 -
public void destroy(GridContext context) throws GridServiceException {
logger.info("Instance is going to be destroyed (destroy)"); } public void preCall(GridContext context) throws GridServiceException { logger.info("Service is going to be invoked (preCall)"); } public void postCall(GridContext context) throws GridServiceException { logger.info("Service invocation has finished (postCall)"); } public void preSerializationCall(GridContext context) { logger.info("Input parameters are going to be deserialized (preSerializationCall)"); } public void postSerializationCall(GridContext context) { logger.info("Input parameters have been deserialized (postSerializationCall)"); } }
Và thêm dòng sau vào file đặc tả triển khai (.WSDD)
Bảng 0-3 tóm tắt các interface của một Grid Service được định nghĩa trong OGSI 1.0:
Interface Loại Tên chi tiết Diễn giải Định nghĩa các ứng xử cơ bản của một service.
interface Danh sách tên (QName) các interface của service.
serviceDataName Danh sách tên (QName) các SDE của service (động và tĩnh)
factoryLocator Vị trí (ogsi:LocatorType) của factory tạo ra service instance này
gridServiceHandle Zero hoặc nhiều GSH của service instance
Grid Service SDE
gridServiceReference Một hoặc nhiều GSR của service instance
SVnet.vn
Phụ lục
- 209 -
findServiceDataExtensibility Tập các phương thức mở rộng của phương thức findServiceData
setServiceDataExtensibility Tập các phương thức mở rộng của phương thức setServiceData
terminationTime Thời gian dự kiến kết thúc của service instance.
findServiceData Truy vấn thông tin của
service. setServiceData Cho phép thay đổi giá trị các
SDE được phép thay đổi giá trị. (modifiable= “true”)
requestTerminationAfter Yêu cầu thay đổi terminationTime của service instance. Phương thức này xác định thời gian kết thúc sớm nhất có thể được.
requestTerminationBefore Yêu cầu thay đổi terminationTime của service instance. Phương thức này xác định thời gian kết thúc trễ nhất có thể được.
Phương thức
destroy Huỷ tường minh service instance.
Thực hiện ánh xạ từ GSH sang GSR handleResolverScheme Tập các URI xác định lược
đồ GSH sử dụng để phân giải thành GSR.
SDE
Handle Resolver Phương
thức findByHandle Trả về vị trí
(ogsi:LocatorType) chức các GSR tương với GSH đươc yêu cầu.
Cho phép các client đặt các yêu cầu cung cấp các thông báo notifiableServiceDataName Tập các QName của SDE
được yêu cầu thông báo mỗi khi có sự thay đổi.
subscribeExtensibility Tập các phương thức mở rộng của phương thức subscribe
SDE
Notification Source
Phương thức
subscribe Yêu cầu phải được thông báo mỗi khi có sự thay đổi của các SDE xác định trong notifiableServiceDataName.
Định nghĩa phương thức phân phối các thông điệp
SVnet.vn
Phụ lục
- 210 -
Định nghĩa phương thức phân phối các thông điệp SDE Không có Notification
Sink Phương thức
deliverNotification Phân phối các thông báo.
Xác định mối quan hệ giữa một cặp NotificationSource và NotificationSink
subscriptionExpression sinkLocator
SDE
Notification Subscription
Phương thức
Không có
Cung cấp các cách thức chuẩn để tạo các service instance createServiceExtensibility Tập các phương thức mở
rộng của phương thức createService
SDE
Factory
Phương thức
createService Tạo service instance mới.
Cho phép client quản lý một nhóm các service. membershipContentRule Là một cấu trúc liên kết một
portType với một tập các QName. Mỗi service instance nếu muốn là thành viên của nhóm phải có một hoặc nhiều interface xác định trong SDE này.
SDE
entry Biểu diễn thông tin về một thành viên của ServiceGroup.
Service Group
Phương thức
Không có
Cho phép thêm và loại bỏ các Grid service instance trong các ServiceGroup,
addExtensibility Tập các phương thức mở rộng của phương thức add
removeExtensibility Tập các phương thức mở rộng của phương thức remove
SDE
add Tạo một ServiceGroupEntry
và đưa vào ServiceGroup.
Service Group Registration
Phương thức
remove Loại bỏ ServiceGroupEntry thoả yêu cầu đưa vào.
Định nghĩa mối quan hệ thành viên của service instance với ServiceGroup. Service Group Entry
SDE memberServiceLocator Chứa vị trí (ogsi:LocatorType) của service instance được tham khảo đến.
SVnet.vn
Phụ lục
- 211 -
content Cung cấp một số thông tin về service instance đang chứa.
Phương thức
Không có
Bảng 8-3 Các interface của một OGSI Service
EE.. CCấấuu ttrrúúcc mmộộtt cchhứứnngg cchhỉỉ đđiiệệnn ttửử Một chứng chỉ điện tử bao gồm các phần chính : một subject (distinguished
name (DN)) duy nhất trong không gian tên của hệ thống Grid xác định người hoặc đối tượng mà chứng chỉ đại diện, một khóa công khai đi kèm với subject, phần nhận dạng CA thực hiện ký chứng nhận chứng chỉ, chữ ký của CA và phần mở rộng chứa thông tin về cá nhân hay host được chứng nhận. Một số thông tin có thể là địa chỉ email, tên tổ chức, …
Hình vẽ sau mô tả chi tiết cấu trúc một chứng chỉ điện tử:
Hình 8-5 Cấu trúc một chứng chỉ điện tử.
* Việc lấy chứng nhận cho một người dùng (lưu ý có thể là người dùng
thật sự hay host) trong Grid bao gồm các bước: 1. Người dùng Grid phát sinh một cặp khoá (khóa bí mật và khóa công
khai tương ứng), và một bản yêu cầu chứng nhận chứa khoá công khai và các thông tin cần thiết theo yêu của CA.
SVnet.vn
Phụ lục
- 212 -
2. Sau đó, người dùng gửi bản yêu cầu đến CA. Còn khóa bí mật được giữ lại và lưu trữ một cách cẩn thận.
3. CA (hay mở rộng ra là RA) thực hiện xác minh thông tin trong bản yêu cầu là đúng sự thật, tức là tìm cách chứng minh user gửi yêu cầu chính là chủ sở hữu của khóa công khai trong bản yêu cầu. Việc này có thể thực hiện bằng nhiều cách khác nhau, có thể thông qua điện thoại, email, hay bằng con đường tiếp xúc trực tiếp giữa hai bên,…
4. Sau khi kiểm tra xong, CA tạo một chứng chỉ bằng cách ký tên vào bản yêu cầu, và gửi chứng chỉ này lại cho người dùng đã yêu cầu chứng nhận.
Việc yêu cầu chứng thực trên trên đây chỉ cần thực hiện một lần duy nhất,
từ khi nhận được chứng chỉ, người dùng có thể dùng nó đế đại diện cho mình khi giao tiếp với bất kỳ hệ thống nào có yêu cầu chứng thực.
SVnet.vn
Phụ lục
- 213 -
TTààii lliiệệuu tthhaamm kkhhảảoo
[1] Ian Foster, The Grid, CLUSTERWORLD, vol 1, no.1, 2001,pp. 1-2
[2] Ian Foster, Carl Kesselman, Steven Tuecke, The Anatomy of Grid, Intl J. Supercomputer Applications, 2001.
[3] Ian Foster, What is the Grid? A Three Point Checklist, Argonne National Laboratory & University of Chicago, 20/06/2002.
[4] Ian Foster,Carl Kesselman, Jeffrey M. Nick, Steven Tuecke, The Physiology of the Grid - An Open Grid Services Architecture for Distributed Systems Integration, Version: 6/22/2002.
[5] I. Foster, D. Gannon, H. Kishimoto, The Open Grid Services Architecture, GLOBAL GRID FORUM, 10/03/2004, http://forge.gridforum.org/projects/ogsa-wg
[6] S. Tuecke, K. Czajkowski, I. Foster, J. Frey, S. Graham, C. Kesselman, T. Maquire, T. Sandholm, D. Snelling, P. Vanderbilt, Open Grid Services Infrastructure (OGSI) Version 1.0, GLOBAL GRID FORUM, 27/06/2003, http://www.ggf.org/ogsi-wg
[7] Mark Baker, Rajkumar Buyya, Domenico Laforenza, Grids and Grid technologies for wide-area distributed computing, John Wiley & Sons Ltd, 2002
[8] Steven Fitzgerald, Ian Foster, Carl Kesselman, Gregor von Laszewski, Warren Smith, Steven Tuecke, A Directory Service for Configuring High-Performance Distributed Computations, 1997,http://www.globus.org
[9] Ian Foster, Carl Kesselman, Globus: A Metacomputing Infrastructure Toolkit, http://www.globus.org
[10] Karl Czajkowski, Steven Fitzgerald, Ian Foster, Carl Kesselman, Grid Information Services for Distributed Resource Sharing, Proc. 10th IEEE International Symposium on High-Performance Distributed Computing (HPDC-10), IEEE Press, 2001.
[11] Karl Czajkowski, Ian Foster, Nicholas Karonis, Carl Kesselman, Stuart Martin, Warren Smith, Steven Tuecke, A Resource Management Architecture for Metacomputing Systems, 1997, www.globus.org
[12] Sam Lang, Sam Meder, Security and Credential Management on the Grid, CLUSTERWORLD volume 1 no 2 , pp. 8-11, 02/2004
[13] Von Welch, Frank Siebenlist, Ian Foster, John Bresnahan, Karl Czajkowski, Jarek Gawor, Carl Kesselman, Sam Meder,
SVnet.vn
Phụ lục
- 214 -
Laura Pearlman, Steven Tuecke, Security for Grid Services, www.globus.org.
[14] Von Welch, Ian Foster, Carl Kesselman, Olle Mulmo, Laura Pearlman, Steven Tuecke, Jarek Gawor, Sam Meder, Frank Siebenlist, X.509 Proxy Certificates for Dynamic Delegation, www.globus.org.
[15] Ian Foster, Carl Kesselman, Gene Tsudik, Steven Tuecke, A Security Architecture for Computational Grids, 5th ACM Conference on Computer and Communication Security, www.globus.org
[17] Bart Jacob, Taking advantage of Grid computing for application enablement, RedBooks, IBM, 06/2003.
[18] Martin C. Brown, Grid computing -- moving to a standardized platform, RedBooks, IBM, 08/2003.
[19] IBM Corp. , The Era of Grid Computing: A new standard for successful IT strategies, 01/2004, www.ibm.com
[20] Viktors Berstis, Fundamentals of Grid Computing, Redbooks, IBM Corp, 2002, www.ibm.com/redbooks
[21] Luis Ferreira,Viktors Berstis, Jonathan Armstrong, Mike Kendzierski, Andreas Neukoetter, Introduction to Grid Computing with Globus, Redbooks,IBM Corp, 09/2003, www.ibm.com/redbooks
[22] Bart Jacob, Luis Ferreira, Norbert Bieberstein, Candice Gilzean, Jean-Yves Girard, Roman Strachowski, Seong (Steve) Yu, Enabling Applications for Grid Computing with Globus, Redbooks, IBM Corp, 06/2003, www.ibm.com/redbooks
[23] Luis Ferreira, Bart Jacob, Sean Slevin, Michael Brown, Srikrishnan Sundararajan, Jean Lepesant, Judi Bank, Globus Toolkit 3.0 Quick Start, Redbooks, IBM Corp, 09/2003, www.ibm.com/redbooks
[25] Richard Sharpe, Ed Warnicke, Ulf Lamping, Ethereal User's Guide: V2.00 for Ethereal 0.10.5, 2004, www.ethereal.com
[26] Luis Ferreira, Arun Thakore, Michael Brown, Fabiano Lucchese, Huang RuoBo, Linda Lin, Paul Manesco, Jeff Mausolf, Nasser Momtaheni, Karthik Subbian, Olegario, Hernandez, Grid Services Programming and Application Enablement, Redbooks,IBM Corp, 05/2004, www.ibm.com/redbooks
SVnet.vn
Phụ lục
- 215 -
[27] Parvin Asadzadeh, Rajkumar Buyya1, Chun Ling Kei, Deepa Nayar, Srikumar Venugopal, Global Grids and Software Toolkits: A Study of Four Grid Middleware Technologies, Grid Computing and Distributed Systems (GRIDS) Laboratory, The University of Melbourne, Australia
[28] Matthew Strebe, Network Security JumpStart, SYBEX Inc., 2002
[29] James Stanger, Patrick Lane, Tim Crothers, CIW:Security Professional Study Guide, SYBEX Inc., 2002, www.sybex.com
[30] Wenke Lee, Salvatore J. Stolfo, Kui W. Mok, Adaptive Intrusion Detection: a Data Mining Approach, Kluwer Academic Publishers, 2000.
[31] John McHugh, Alan Christie, Julia Allen, Defending Yourself: The Role of Intrusion Detection Systems, IEEE SOFTWARE, 10/2000.
[32] Thomas H. Ptacek, Timothy N. Newsham, Insertion, Evasion, and Denial of Service:Eluding Network Intrusion Detection, Secure Networks Inc.,01/1998
STT Tổ chức Website 1. Globus Alliance http://www.globus.org 2. IBM http://www.ibm.com 3. Global Grid Forum http://www.globalgridforum.org 4. GridCafe http://gridcafe.web.cern.ch/gridcafe5. NSF MIDDLEWARE