nghiÊn cỨu phÁt triỂn Ứng dỤng trÊn grid

156
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY Ngành: Công nghệ thông HÀ NỘI - 2006 NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID Lê Bá Dũng ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Upload: bao-khoi-nguyen

Post on 03-Jul-2015

514 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY

Ngành: Công nghệ thông tin

HÀ NỘI - 2006

NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG

TRÊN GRID

Lê Bá Dũng

ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Page 2: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY

Ngành: Công nghệ thông tin

HÀ NỘI - 2006

NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Ngô Cao CườngLê Bá Dũng

Trần Thiện Thịnh

ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Cán bộ hướng dẫn: ThS.Nguyễn Nam Hải

Page 3: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID
Page 4: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Lời cảm ơn

Trước tiên, chúng em muốn gửi lời cảm ơn chân thành và sâu sắc nhất đến

thầy giáo, ThS. Nguyễn Nam Hải, người đã tận tình hướng dẫn chúng em trong suốt

quá trình làm nghiên cứu khoa học và làm khóa luận tốt nghiệp.

Chúng em cũng xin gửi lời cảm ơn chân thành đến các thầy giáo, cô giáo đã

giảng dạy chúng em trong những năm qua, những kiến thức mà các thầy cô đã dạy là

hành trang vững chắc để chúng em bước vào cuộc sống.

Cuối cùng chúng em xin gởi lời cảm ơn đến gia đình và bè bạn, những người

đã luôn ở bên động viên, giúp đỡ chúng em trong cuộc sống.

Hà Nội 5-2006

i

Page 5: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Tóm tắt

Trong vài năm trở lại đây tính toán mạng lưới (Grid computing) đã phát triển

mạnh mẽ, mở ra các giải pháp mới cho các ứng dụng đòi hỏi khả năng tính toán lớn.

Grid computing có thể được sử dụng cho các bài toán nghiên cứu về sinh học, y học,

vật lí, hóa học…cũng như các ứng dụng trong phân tích và đánh giá tài chính, khai phá

dữ liệu, các ứng dụng trong chính phủ điện tử và rất nhiều các loại ứng dụng khác.

Trong khóa luận tốt nghiệp này, chúng tôi trình bày một cách tổng quan về

công nghệ Grid computing như ưu nhược điểm, các mô hình kiến trúc và công nghệ

liên quan. Trên cơ sở đó đi sâu vào tìm hiểu quy trình xây dựng và triển khai một ứng

dụng trên môi trường Grid computing dựa trên nền tảng của bộ công cụ Globus

Toolkit phiên bản 4.0. Để lấy ví dụ, chúng tôi trình bày chi tiết các bước để triển khai

một ứng dụng có sẵn – Math Service và chi tiết các bước xây dựng cũng như triển khai

một ứng dụng mới – Bài toán tìm số nguyên tố Merssene.

ii

Page 6: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Mục lục

Lời cảm ơn....................................................................................................................i

Tóm tắt........................................................................................................................ ii

Bảng các ký hiệu viết tắt............................................................................................ix

Mở đầu.........................................................................................................................1

Chương 1. Cơ bản về Grid Computing...................................................................4

1.1. Grid Computing là gì?..................................................................................4

1.2. Lợi ích của Grid Computing.........................................................................5

1.2.1. Khai thác tài nguyên xử lý.....................................................................5

1.2.2. Khả năng xử lý song song.....................................................................6

1.2.3. Sự cộng tác các tài nguyên ảo và tổ chức ảo.........................................6

1.2.4. Sự truy cập tới các tài nguyên khác.......................................................7

1.2.5. Cân bằng tài nguyên..............................................................................8

1.2.1. Độ tin cậy..............................................................................................9

1.2.2. Khả năng quản lý.................................................................................10

Chương 2. Các thuật ngữ và khái niệm.................................................................12

2.1. Các kiểu tài nguyên.....................................................................................12

3.1.1. Tài nguyên tính toán............................................................................12

3.1.2. Kho lưu trữ..........................................................................................12

3.1.3. Truyền thông.......................................................................................13

3.1.4. Phần mềm và bản quyền......................................................................13

3.1.5. Các thiết bị đặc biệt, sức chứa, kiến trúc và quyền hạn......................14

2.2. Công việc và ứng dụng...............................................................................14

2.3. Lập lịch, đặt chỗ, và quét dọn.....................................................................15

2.4. Các gói phần mềm grid...............................................................................16

iii

Page 7: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

3.4.1. Gói quản lý..........................................................................................16

3.4.2. Gói lập lịch..........................................................................................17

3.4.3. Các gói truyền thông...........................................................................18

3.4.4. Gói quan sát và đo đạc.........................................................................18

2.5. Các cấu hình mạng grid..............................................................................18

Chương 3. Người dùng trong mạng Grid Computing...........................................21

3.1. Người dùng bình thường.............................................................................21

3.1.1. Tham gia vào grid và cài đặt các phần mềm.......................................21

3.1.2. Đăng nhập vào grid.............................................................................21

3.1.3. Truy vấn và đưa công việc..................................................................22

3.1.4. Cấu hình dữ liệu..................................................................................22

3.2. Nhà quản trị................................................................................................22

3.2.1. Cài đặt..................................................................................................23

3.2.2. Quản lý người dùng.............................................................................23

3.2.3. Chứng thực..........................................................................................23

3.2.4. Quản lý tài nguyên...............................................................................24

Chương 4. Một số chuẩn trong môi trường Grid...................................................25

4.1. Kiến trúc dịch vụ Grid mở - Open Grid Services Architecture (OGSA)....25

4.2. Cơ sở hạ tầng của dịch vụ Grid mở - Open Grid Service Infrastructure

(OGSI)....................................................................................................................26

4.3. GridFTP......................................................................................................27

4.4. Cơ chế tài nguyên của dịch vụ Web – Web service resource framework.. 27

4.5. Một số chuẩn của dịch vụ Web...................................................................28

4.6. Tổng kết chương.........................................................................................29

Chương 5. Tổng quan về dịch vụ Web..................................................................30

5.1. Ưu điểm của dịch vụ Web so với các công nghệ khác...............................30

5.2. Nhược điểm khi dùng dịch vụ Web............................................................31

iv

Page 8: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

5.3. Lời gọi dịch vụ Web điển hình...................................................................31

5.4. Địa chỉ dịch vụ Web...................................................................................32

5.5. Kiến trúc dịch vụ Web................................................................................32

5.6. Ứng dụng dịch vụ Web...............................................................................33

5.7. Các bước để gọi một dịch vụ Web..............................................................34

5.8. Tổng kết chương.........................................................................................35

Chương 6. Cơ chế tài nguyên của dịch vụ Web – Web service resource

framework 36

6.1. Quản lí trạng thái tài nguyên trong dịch vụ Grid........................................36

6.1.1. Dịch vụ Grid là gì................................................................................36

6.1.2. Những yêu cầu của dịch vụ Grid theo chuẩn OGSA...........................37

6.2. Chuẩn WSRF..............................................................................................37

6.2.1. Khái niệm WS-Resource.....................................................................38

6.2.2. Các thành phần trong WSRF...............................................................39

6.3. Tổng kết chương.........................................................................................40

Chương 7. An ninh trong mạng Grid....................................................................41

7.1. Các yêu cầu về an ninh trong mạng lưới....................................................41

7.2. Cơ sở hạ tầng an ninh của mạng lưới..........................................................43

7.2.1. Truy cập vào mạng lưới.......................................................................44

7.2.2. Xác thực và quyền hạn........................................................................44

7.3. Tổng kết chương.........................................................................................45

Chương 8. Các thành phần của Globus Toolkit 4.0..............................................46

8.1. Tổng quan về Globus Toolkit 4.0...............................................................46

8.2. Các thành phần thường trực........................................................................46

8.2.1. Java WS Core......................................................................................47

8.2.2. C WS Core...........................................................................................47

8.2.3. Python WS Core..................................................................................47

v

Page 9: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

8.3. Các thành phần bảo mật..............................................................................47

8.3.1. Thẩm định và cấp phép WS.................................................................48

8.3.2. Thẩm định và cấp phép Pre-WS..........................................................48

8.3.3. Dịch vụ cấp phép cộng đồng (Community Authorization Service -

CAS) 48

8.3.4. Dịch vụ uỷ quyền.................................................................................48

8.3.5. SimpleCA............................................................................................48

8.3.6. GSI-OpenSSH.....................................................................................48

8.4. Các thành phần quản lý dữ liệu...................................................................49

8.4.1. GridFTP...............................................................................................49

8.4.2. Truyền Tệp tin cậy (Reliable File Transfer - RFT).............................49

8.4.3. Dịch vụ mô hình hoá địa chỉ (Replica Location Service - RLS).........50

8.4.4. Dịch vụ sao lưu dữ liệu (Data Replication Service - DRS).................50

8.4.5. Các dịch vụ kiểm tra và khám phá thông tin (Monitoring and

Discovery Services - MDS)................................................................................51

8.4.6. Index service........................................................................................51

8.5. Các thành phần quản lý thi hành.................................................................51

8.5.1. WS GRAM..........................................................................................51

Chương 9. Cài đặt và cấu hình Globus Toolkit 4.0...............................................52

9.1. Download Globus Toolkit 4.0....................................................................52

9.2. Mô hình môi trường mạng Grid..................................................................52

9.3. Cài đặt Globus Toolkit 4.0..........................................................................54

9.3.1. Cài đặt các phần mềm yêu cầu cho Globus Toolkit 4.0......................54

9.3.2. Cấu hình môi trường Linux cho Globus Toolkit 4.0...........................55

9.3.3. Cài đặt Globus Toolkit 4.0..................................................................56

9.4. Cấu hình và thử nghiệm môi trường Grid...................................................58

9.4.1. Cấu hình các biến môi trường.............................................................58

vi

Page 10: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

9.4.2. Cấu hình bảo mật.................................................................................58

9.4.3. Cấu hình Java WS Core.......................................................................63

9.4.4. Cấu hình và kiểm tra GridFTP............................................................64

9.5. Gỡ bỏ Globus Toolkit 4.0...........................................................................65

Chương 10. Các bước lập trình một chương trình Grid.......................................66

10.1. Giới thiệu sơ lược về chương trình Math Service...................................66

10.2. Các bước lập trình chương trình Math Service.......................................66

10.2.1. Bước 1: Định nghĩa giao diện dịch vụ.................................................67

10.2.2. Bước 2: Thực thi dịch vụ.....................................................................70

10.2.3. Bước 3: Định nghĩa việc triển khai dịch vụ.........................................73

10.2.4. Bước 4: Biên dịch và tạo tệp GAR......................................................74

10.2.5. Bước 5: Triển khai dịch vụ..................................................................75

10.3. Chạy thử chương trình Math Service......................................................76

Chương 11. Tự xây dựng một dịch vụ Grid: Bài toán số nguyên tố...................78

11.1. Giới thiệu công cụ phát triển...................................................................79

11.1.1. Giới thiệu công cụ GT4IDE................................................................80

11.1.2. Cài đặt GT4IDE...................................................................................80

11.2. Tạo project GT4 với GT4IDE.................................................................81

11.3. Thuật toán tìm số nguyên tố Mersenne...................................................83

11.3.1. Các khái niệm và mệnh đề...................................................................84

11.3.2. Một số thuật toán tiêu biểu..................................................................84

11.3.3. Lựa chọn thuật toán.............................................................................87

11.4. Phân tích và thiết kế bài toán..................................................................88

11.4.1. Mô tả hệ thống.....................................................................................88

11.4.2. Phân tích hệ thống...............................................................................90

11.4.3. Thiết kế hệ thống.................................................................................92

11.5. Kết quả thử nghiệm.................................................................................98

vii

Page 11: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

11.5.1. Viết mã chương trình...........................................................................98

11.5.2. Giao diện của chương trình client:....................................................100

11.5.3. Biên dịch và chạy chương trình.........................................................100

11.6. Kết luận về bài toán Số nguyên tố........................................................102

Kết luận....................................................................................................................103

Tài liệu tham khảo...................................................................................................104

viii

Page 12: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Bảng các ký hiệu viết tắt

Ký hiệu viết tắt Ý nghĩaAPI Application Programming Interface – Giao diện lập trình ứng

dụngCA Certificate Authority – Cơ quan chứng thực

CAS Community Authorization Service - Dịch vụ cấp phép cộng đồng CORBA Common Object Request Broker Achitecture

DRS Data Replication Service - Dịch vụ sao lưu dữ liệuFTP File Transfer Protocal - Giao thức truyền tệpGSI Grid Security Infrastructure - Cơ sở hạ tầng an ninh mạng lướiGT Globus Toolkit

HTTP Hypertext Markup Language- Ngôn ngữ đánh dấu siêu văn bảnMDS Monitoring and Discovery Services - Các dịch vụ kiểm tra và

khám phá thông tinOSGA Open Grid Services Architecture - Kiến trúc dịch vụ web mởOSGI Open Grid Service Infrastructure - Cơ sở hạ tầng dịch vụ web mởRFT Reliable File Transfer - Truyền Tệp tin cậy RLS Replica Location Service - Dịch vụ mô hình hoá địa chỉRMI Remote Method Invocation - RPs Resource Properties - thuộc tính tài nguyênSOA Service Oriented Architechture - Kiến trúc hướng dịch vụ

SOAP Simple Object Access Protocol - Giao thức truy cập đối tượng đơn giản

UDDI Universal Description, Discovery and Integration - chuẩn dịch vụ Tích hợp, Khám phá và Mô tả Toàn cầu

URI Uniform Resource Identifiers - Địa chỉ dịch vụ WebWSDL Web serivce definition Language -Ngôn ngữ mô tả dịch vụ webWSRF Web service resource framework - Cơ chế tài nguyên của dịch vụ

WebXML eXtensible Markup Language - Ngôn ngữ Đánh dấu Mở rộng

ix

Page 13: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

x

Page 14: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Mở đầu

Hiện nay, Mạng lưới tính toán (Grid Computing) đang là “điểm nóng” công

nghệ trên các diễn đàn công nghệ thông tin trên khắp thế giới. Trên thế giới, công nghệ

Grid (Grid Technologies) đang được giới khoa học – công nghệ nghiên cứu, phát triển

sôi nổi. Grid Computing hiện đang là nền tảng công nghệ chủ đạo của mạng Internet

thế hệ mới, giữ vai trò giống như giao thức TCP/IP đối với mạng Internet hiện nay.

Ở Việt Nam hiện nay, Grid Computing đang còn là một vấn đề khá mới mẻ.

Đã có một số nhóm, tổ chức nghiên cứu về Grid Computing, tuy quy mô và điều kiện

nghiên cứu còn rất hạn chế. Nhận thấy những ý nghĩa thiết thực của Grid Computing

có thể mang lại trong tương lai, nhóm sinh viên chúng tôi quyết định đi vào nghiêu

cứu Grid Computing về công nghệ và phát triển ứng dụng mang tính thực tiễn trong

cuộc sống.

Các chương trình chạy trên môi truờng mạng lưới có một số ưu điểm nổi trội

hơn so với các chương trình chạy trên máy tính thông thường. Chẳng hạn như: thời

gian xử lý công việc ngắn hơn nhờ khả năng tính toán song song, hiệu suất sử dụng tài

nguyên tính toán cao hơn nhờ khả năng phân tán tài nguyên. v.v... Với những ưu điểm

đó của các chương trình Grid, chúng tôi nghiên cứu đề tài: “Nghiên cứu phát triển ứng

dụng trên Grid”.

Đề tại được chia thành các chương, nội dung chính của các chương gồm có:

Chương 1: Cơ bản về Grid Computing?

Chương này giới thiệu khái niệm Grid Computing để có thể hình dung được

thế nào là Grid Computing và các khả năng mà Grid Computing có thể thực hiện được.

Chương 2: Các thuật ngữ và khái niệm

Grid Computing là lĩnh vực công nghệ khá mới mẻ nên xuất hiện nhiều thuật

ngữ mới. Để có thể đi sâu vào nghiêu cứu Grid, chương này giới thiệu các thuật ngữ

và khái niệm được dùng trong Grid.

Chương 3: Người dùng trong mạng Grid Computing

Chương này mô tả các cấp độ người dùng trong mạng Grid.

Chương 4: Một số chuẩn trong môi trường Grid

Chương này giới thiệu một số công nghệ chuẩn trong Grid Computing.

1

Page 15: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 5: Tổng quan về dịch vụ Web

Dịch vụ Web là cơ sở cho dịch vụ Grid. Chương này giới thiệu các công nghệ

của dịch vụ Web.

Chương 6: Cơ chế tài nguyên của dịch vụ Web - WSRF

Chương này giới thiệu một chuẩn của dịch vụ Grid, đó là WSRF

Chương 7: An ninh trong Mạng Grid

Bảo mật là vấn đề quan trọng trong mạng Grid Computing. Chương này đề

cập đến những yêu cầu trong vấn đề bảo mật của Grid Computing

Chương 8: Các thành phần của Globus Toolkit 4.0

Globus Toolkit 4.0 là công cụ nền tảng để phát triển các ứng dụng Grid, đang

được sử dụng phổ biến hiện nay. Chương này giới thiệu một số thành phần của bộ

công cụ này.

Chương 9: Cài đặt và cấu hình Globus Toolkit 4.0

Chương này hướng dẫn cài đặt bộ công cụ Globus Toolkit 4.0.

Chương 10: Các bước lập trình một chương trình Grid

Chương này giới thiệu các bước tiến hành xây dựng một chương trình Grid.

Chương 11: Tự xây dựng một dịch vụ Grid: Bài toán Số nguyên tố

Chúng tôi xây dựng một ứng dụng mang tính thực tiễn, đó là bài toán: Số

nguyên tố.

Mỗi thành viên trong nhóm thực hiện một số chương nhất định, cụ thể như

sau:

Từ Chương 1 đến Chương 3: Ngô Cao Cường.

Từ Chương 4 đến Chương 7: Trần Thiện Thịnh.

Từ Chương 8 đến Chương 10: Lê Bá Dũng.

Chương 11: Chương trình Số nguyên tố được tất cả các thành viên cùng

thiết kế và cùng tìm hiểu thuật toán. Các module chương trình được phân chia

như sau:

2

Page 16: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Ngô Cao Cường viết các module quản lý các tài nguyên trong

Service bao gồm các lớp: PrimeResource, PrimeFactoryService và

PrimeResouceHome.

Lê Bá Dũng viết các module tìm kiếm và phân phối các công việc

trong Service bao gồm các lớp: PrimeService và PrimePKC.

Trần Thiện Thịnh viết chương trình Client.

3

Page 17: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 1.Cơ bản về Grid Computing

Chương này mô tả định nghĩa về Grid computing và các lợi ích chính của Grid

computing bao gồm:

Khai thác tài nguyên xử lý

Khả năng xử lý song song

Cộng tác các tài nguyên ảo và tổ chức ảo

Truy cập tới các tài nguyên khác

Cân bằng tài nguyên

Tính tin cậy

Khả năng quản lý

1.1. Grid Computing là gì?

Có nhiều cách khác nhau để định nghĩa thế nào là Mạng tính toán lưới (Grid

Computing). Để có thể hình dung Grid Computing là gì, chúng ta có thể tưởng tượng

nó như một mạng lưới điện mà mọi người chỉ cần cắm phích điện vào để sử dụng mà

không cần biết nguồn điện từ đâu đến.Tương tự như vậy, trong Grid Computing, một

người dùng nào đó có thể truy nhập vào các tài nguyên (bao gồm: bộ xử lý, ổ lưu trữ,

dữ liệu...) mà không cần biết các tài nguyên này nằm ở đâu, chúng dùng công nghệ gì,

cấu hình phần cứng như thế nào,.v.v.

Grid computing đã phải trải qua nhiều công đoạn hợp nhất các công nghệ và

giải pháp để đạt được thành quả như hiện nay. Nhân tố cơ bản của Grid là công nghệ

phân tán các thiết bị tính toán. Với công nghệ này, ta có thể chia sẻ tài nguyên và liên

kết các tổ chức lại với nhau. Đây còn gọi là công nghệ ảo hóa. Để có được một môi

trường hỗn hợp có thể chia sẻ tài nguyên, ngoài công nghệ ảo hóa, Grid còn dùng các

công nghệ khác trong các lĩnh vực lập lịch, tài chính, bảo mật,.v.v.

Sự ảo hóa trong môi trường grid có nhiều cấp độ khác nhau. Mỗi cấp độ phụ

thuộc vào phạm vi và tính đồng nhất của tổ chức. Hình 1 mô tả từng cấp độ của sự ảo

hóa từ đơn giản đến phức tạp khi đi theo chiều từ trái sang phải. Ở hình trái nhất là tổ

chức đồng nhất, đơn tài nguyên. Tài nguyên ở đây có thể là CPU, ổ lưu trữ,các thiết bị

và chương trình. Tiếp đến là hệ thống hỗn hợp gồm nhiều tài nguyên khác nhau. Cấp

4

Page 18: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

độ ảo hóa phức tạp hơn là ảo hóa trong một xí nghiệp. Hình bên phải là mức độ ảo hóa

cao nhất với phạm vi trên toàn mạng Internet, bao gồm các đa tổ chức hỗn hợp.

1.2. Lợi ích của Grid Computing

1.2.1. Khai thác tài nguyên xử lý

Một trong những tính năng cơ bản của tính toán mạng lưới là khả năng chạy

một chương trình trên nhiều máy tính khác nhau. Trong một mạng lưới bao gồm nhiều

máy tính, có một số máy ở trạng thái bận do khối lượng công việc lớn, một số khác ở

trạng thái rỗi do khối lượng công việc nhỏ.

Trong hầu hết các tổ chức, luôn có những khối lượng lớn những tài nguyên

dùng để tính toán. Trung bình mỗi ngày, mỗi máy tính có thời gian trung ở trạng thái

thái bận là 5%. Điều đó chứng tỏ khối lượng tài nguyên rỗi trong một mạng là rất lớn.

Grid cung cấp một khung làm việc (framework) để tận dụng những tài nguyên này và

vì thế có thể tăng hiệu quả trong việc sử dụng các tài nguyên.

Ngoài tài nguyên xử lý, tài nguyên lưu trữ cũng được sử dụng hiệu quả hơn

nhờ Grid computing. Grid tận dụng các dung lượng đĩa cứng còn trống trong các máy

tính để tập hợp thành một tài nguyên lưu trữ ảo trọng mạng.

5

Hình 1: Sự ảo hóa với nhiều cấp độ

Page 19: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

1.2.2. Khả năng xử lý song song

Khả năng kết hợp nhiều CPU cùng xử lý song song là một tính năng hấp dẫn

của Grid computing.

Các chương trình chạy trên môi trường Grid sử dụng các thuật toán để phân

chia công việc xử lý thành nhiều thành phần độc lập. Mỗi CPU trên mỗi máy tính

trong mạng đảm nhận việc xử lý một hay nhiều thành phần đó. Tính độc lập của các

thành phần càng cao thì chương trình càng dễ dàng được mở rộng trên phạm vi mạng

lưới nhiều máy tính hơn. Một mạng lưới được gọi là hoàn hảo nếu với mười máy tính,

tốc độ xử lý của mạng tăng lên gấp mười. Tuy nhiên, trên thực tế không có mạng lưới

hoàn hảo.

Có hai lí do chính để mạng lưới trên thực tế không thể trở thành hoàn hảo.

Thứ nhất là: việc sử dụng thuật toán phân chia công việc ảnh hưởng lớn đến hiệu năng

tính toán chung của mạng. Thứ hai là: các thành phần của công việc không hoàn toàn

độc lập với nhau.

Không phải ứng dụng nào cũng có thể chuyển đổi để Grid có thể xử lý song

song. Hơn nữa, không có một công cụ nào có thể chuyển đổi một ứng dụng bất kỳ

sang dạng chạy song song trên grid. Khả năng xử lý song song của một chương trình

trên mạng lưới phụ thuộc vào người thiết kế, và đó không phải là công việc đơn giản.

1.2.3. Sự cộng tác các tài nguyên ảo và tổ chức ảo

Một khả năng khác của grid computing là tạo nên môi trường cộng tác rộng

lớn, đồng nhất. Mỗi môi trường đó được gọi là một tổ chức ảo. Grid computing thậm

chí có khả năng tạo nên một môi trường rộng lớn hơn bằng cách kết hợp các tổ chức

ảo, không đồng nhất với nhau để cùng cộng tác với nhau. Hình 2 mô tả môi trường

không đồng nhất đó. Mỗi người sử dụng mạng lưới được phân bổ vào một tổ chức ảo

nào đó. Các tổ chức ảo này có thể chia sẻ tài nguyên với nhau như một mạng lưới lớn.

Chia sẻ tài nguyên bắt đầu với dữ liệu dạng tệp hay cơ sở dữ liệu. Lưới dữ liệu

có thể mở rộng dữ liệu theo nhiều cách khác nhau. Đầu tiên, tệp hay cơ sở dữ liệu có

thể được trải rộng trên nhiều hệ thống tạo nên dung lượng lớn hơn rất nhiều so với hệ

thống đơn. Cách trải dữ liệu này có thể tăng tốc độ truyền dữ liệu với công nghệ

striping. Dữ liệu thường xuyên được sao lưu phục vụ cho việc khôi phục dữ liệu.

Ngoài việc chia sẻ tài nguyên là các tệp và cơ sở dữ liệu, ta có thể chia sẻ

nhiều tài nguyên khác, như các thiết bị chuyên dụng, phần mềm, dịch vụ, ...Những tài

6

Page 20: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

nguyên này được “ảo hóa” để giữ chúng đồng bộ trong một hệ thống mạng luới không

đồng nhất. Các tài nguyên đó gọi là các tài nguyên ảo.

Những người tham gia hay sử dụng grid là một thành viên trong một tổ chức

nào đó. Grid có thể yêu cầu người dùng đó tuân thủ các luật lệ, quyền hạn sử dụng, từ

đó có thể giải quyết được các vấn đề về ưu tiên, bảo mật,...

1.2.4. Sự truy cập tới các tài nguyên khác

Ngoài CPU và tài nguyên lưu trữ, Grid còn có thể truy nhập đến những tài

nguyên khác. Các tài nguyên này có thể được cung cấp dưới dạng số lượng hoặc khả

năng lưu trữ, băng thông. Ví dụ, nếu một người muốn tăng băng thông truy nhập

Internet để thực hiện việc khai thác dữ liệu tìm kiếm, công việc này có thể phân chia

giữa các máy trong mạng grid có đường truyền Internet không phụ thuộc nhau. Trong

trường hợp này, khả năng tìm kiếm được nhân lên, khi mỗi máy có đường truyền riêng

biệt. Nếu các máy chia sẻ đường kết nối Internet, thì nó sẽ không tăng băng thông.

Trong một mạng lưới, một số máy tính nào có thể được cài đặt những phần

mềm đắt tiền, có bản quyền mà một máy khác không có. Người sử dụng máy tính

7

Hình 2: Mạng grid ảo không đồng nhất

Page 21: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

không cài đặt phần mềm đó có thể sử dụng phần mềm này bằng cách gửi công việc

đến máy tính được cài phần mềm để yêu cầu xử lý. Đó là khả năng tận dụng phần

mềm của Grid.

Một vài máy tính có thể có những thiết bị đặc biệt, chẳng hạn như máy in. Hầu

hết các máy in được sử dụng từ xa. Grid có thể chia sẽ được những thiết bị đặc biệt

này. Thậm chí grid có thể chia sẻ những thiết bị, tài nguyên phức tạp như máy chuẩn

đoán bệnh hay robot hỗ trợ phẫu thuật

1.2.5. Cân bằng tài nguyên

Grid liên kết các tài nguyên từ nhiều máy khác nhau tạo thành một hệ thống

duy nhất. Grid có thể thực hiện cân bằng tài nguyên trong các chương trình bằng cách

lập lịch làm việc cho các công việc, như hình 3 dưới đây. Chức năng này có ý nghĩa rất

lớn trong việc xử lý các trường hợp quá tải về xử lý, tính toán trong một tổ chức. Chức

năng cân bằng có thể được thực theo 2 cách sau:

Những điểm quá tải được đưa đến những máy rỗi trên mạng lưới.

Nếu toàn mạng grid đã bận, những công việc có độ ưu tiên thấp được

tạm ngừng nhường cho những công việc khác có độ ưu tiên cao.

Đôi khi có những công việc đột ngột được tăng độ ưu tiên do cần hoàn thành

gấp. Grid không thể xử lý được những công việc cần hoàn thành quá gấp. Tuy nhiên

grid có thể phân chia nó thành nhiều công việc nhỏ và huy động một lượng lớn tài

nguyên để xử lý nó một cách nhanh nhất.

8

Hình 3: Công việc được chuyển đến phần ít bận hơn trong mạng

Page 22: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Một lợi ích khác khi dùng grid là cân bằng tải. Khi một công việc liên lạc với

một công việc khác, với Internet, hoặc các tài nguyên khác, Grid có thể lập lịch cho

chúng để có thể giảm thiểu tối đa lưu lượng đường truyền cũng như khoảng cách

truyền. Điều này giúp Grid có thể giảm thiểu tắc nghẽn mạng.

Cuối cùng, Grid còn có khả năng thương mại tài nguyên. Các trạng thái của tất

cả các tài nguyên trong mạng được Grid quản lý. Các tổ chức trên grid có thể tạo tài

khoản và trả tiền để sử dụng các tài nguyên này khi cần thiết. Điều này tạo nên tài

chính mạng lưới.

1.2.6. Độ tin cậy

Những hệ thống tính toán mạnh sử dụng phần cứng đắt tiền để tăng độ tin cậy.

Chúng sử dụng bộ xử lý kép để khi hỏng hóc có thể thay thế bộ xử lý thứ hai mà

không cần tắt hệ thống. Các nguồn và hệ thống làm mát cũng đều được nhân bản. Hệ

thống còn sử dụng một nguồn đặc biệt có thể phát điện khi nguồn điện bị mất. Tất cả

chúng tạo nên một hệ thống tin cậy, tuy nhiên, giá thành cho hệ thống này rất cao.

Trong tương lại, một mạng lưới có thể có khả năng thay thế một hệ thống đáng

tin cậy như thế. Grid mới chỉ bắt đầu công nghệ này. Mô hình máy chủ đáng tin cậy sử

dụng Grid có thể được mô tả như sau. Một mạng lưới gồm nhiều máy tính được phân

bố khắp nới. Do đó, khi có một sự cố tại một nốt mạng nào đó trên mạng lưới, các

điểm khác sẽ không bị ảnh hưởng. Khi một máy tính bị hỏng hóc, phần mềm quản lý

trong Grid có thể tự động chuyển công việc xử lý từ máy này đến một máy nào đó

trong mạng. Trong trường hợp quan trọng, nhiều bản sao của công việc được tạo ra và

được chuyển đến nhiều máy khác nhau trên mạng lưới như hình 4 dưới đây.

9

Page 23: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Những hệ thống grid như thế sẽ tạo nên khả năng tính toán tự động. Nó là một

dạng phần mềm có khả năng tự sửa lỗi trên grid, trước khi thông báo cho bộ xử lý hay

người quản lý biết. Về nguyên tắc, hầu hết những hệ thống tin cậy đắt tiền ngày nay

dựa vào phần cứng hoàn toàn cũng có thể dùng phần mềm để tạo nên sự tin cậy đó.

1.2.7. Khả năng quản lý

Việc ảo hóa tài nguyên và nhiều hệ thống hỗn hợp được tạo ra trên grid sẽ tạo

nên quy mô rộng hơn, các thiết bị được phân phối nhiều hơn. Nó làm cho các nhà

doanh nghiệp dễ dàng quản lý chi phí và tài nguyên tính toán trên phạm vi lớn.

Grid quản lý độ ưu tiên giữa các dự án. Trước đây, mỗi dự án quản lý riêng tài

nguyên và chi phí của nó. Có thể những tài nguyên đang rỗi trong khi các dự án khác

gặp sự cố, cần thêm những tài nguyên khác. Với tầm nhìn bao quát, grid có thể giải

quyết dễ dàng tình huống này. Trong hình 5, nhà quản lý có thể thay đổi các quyền hạn

với tài nguyên để các tổ chức khác có thể chia sẻ hay sử dụng.

10

Hình 4: Nhiều bản sao của công việc được tạo ra

Page 24: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

11

Hình 5: Nhà quản trị có thể điều chỉnh chính sách thích hợp với tài nguyên

Page 25: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 2.Các thuật ngữ và khái niệm

2.1. Các kiểu tài nguyên

Một mạng grid là tập hợp máy móc, đôi khi là các nút, thành viên, người

quyên góp, máy chủ, khách... Tất cả chúng tạo nên tài nguyên của grid. Một vài tài

nguyên có thể được sử dụng bởi tất cả mọi người sử dụng trên grid, trong khi số khác

được giới hạn sử dụng.

3.1.1. Tài nguyên tính toán

Tài nguyên thường thấy nhất trên grid là tài nguyên tính toán được cung cấp

bởi các bộ xử lý trên các máy của grid. Các bộ xử lý có thể khác nhau về tốc độ, kiến

trúc, hay các thiết bị đi kèm như bộ nhớ, ổ lưu trữ. Có ba cách chính để tận dụng tài

nguyên tính toán trên grid.

Cách đầu tiên đơn giản nhất là chạy ứng dụng trên một máy đang rỗi trên grid.

Cách thứ hai là phân chia ứng dụng thành nhiều phần rồi chạy song song trên

các bộ xử lý khác nhau.

Cách thứ ba là chạy ứng dụng, cần được xử lý nhiều lần, trên nhiều máy khác

nhau trên grid. Khả năng mở rộng là thước đo bộ xử lý được sử dụng trên grid hiệu

quả như thế nào. Nếu hai bộ xử lý hoàn thành ứng dụng trong một nửa thời gian, đó là

sự phân chia hoàn hảo. Tuy nhiên có giới hạn như đã nói ở trên khi một ứng dụng chỉ

có thể phân chia thành một số giới hạn các phần độc lập với nhau.

3.1.2. Kho lưu trữ

Tài nguyên thứ hai được sử dụng thường xuyên trong grid là kho lưu trữ. Một

mạng lưới kết hợp các kho dữ liệu thường được gọi là “lưới dữ liệu” (data grid). Mỗi

máy trên grid thường cung cấp cho grid một số lượng kho lưu trữ nhất định. Kho lưu

trữ có thể là bộ nhớ trong hoặc bộ nhớ thứ cấp – đĩa cứng. Bộ nhớ trong có tốc độ

nhanh nhưng chỉ lưu trữ tạm thời. Nó có thể dùng làm dữ liệu đệm để chạy chương

trình.

Bộ nhớ thứ cấp có thể dùng để tăng khả năng lưu trữ, hiệu năng, hay độ tin

cậy dữ liệu. Nhiều hệ thống grid hiện nay dùng các hệ thống tệp AFS( Andrew File

System) , NFS (Network File System), DFS (Distributed File System), GPFS (General

12

Page 26: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Parallel File System. Chúng có tốc độ khác nhau, mức bảo mật và độ tin cậy cũng khác

nhau.

Sức lưu trữ có thể tăng bằng cách sử dụng ổ lưu trữ trên nhiều máy khác nhau

với hệ thống tệp hợp nhất. Mỗi tệp hay CSDL có thể lưu trữ trên một vài máy hay vài

ổ đĩa trên mạng grid. Một hệ thống tệp hợp nhất có thể tạo nên một tên hợp nhất cho

các ổ lưu trữ trên grid. Điều này tạo điều kiện cho người sử dụng có thể dễ dàng truy

cập dữ liệu mà không cần biết vị trí chính xác của nó.

Các hệ thống tệp tiến bộ trên grid có khả năng tự động nhân bản dữ liệu, để

tăng độ tin cậy và tốc độ. Một bộ lập lịch thông minh trên grid có khả năng lựa chọn

những thiết bị lưu trữ thích hợp để lưu trữ dữ liệu, dựa vào những mẫu đã sử dụng.

Một hệ thống tệp grid còn có thể ghi nhật ký để dữ liệu có thể được khôi phục

dễ dàng khi gặp sự cố. Ngòai ra, các hệ thống tệp còn có cơ chế chuẩn hóa để tránh

xung đột khi nhiều user cùng chia sẻ và cập nhật dữ liệu

3.1.3. Truyền thông

Sự phát triển nhanh chóng của truyền thông ngày nay đã tạo nên grid. Chính vì

vậy mà một trong những tài nguyên quan trọng khác của grid là khả năng truyền dữ

liệu, bao gồm cả khả năng truyền dữ liệu trong grid hay ra ngoài mạng grid. Khả năng

truyền dữ liệu trong grid là quan trọng để lập lịch và gửi các công việc. Băng thông

giới hạn sẽ ảnh hưởng tới hiệu năng của grid.

Truyền thông ngoài mạng grid ra Internet, ví dụ, như khi xây dựng một hệ

thống tìm kiếm. Các máy trong grid ngoài việc liên kết với nhau còn phải nối ra ngoài

Internet. Khi các đường kết nối của các máy này không cùng chia sẻ đường truyền

Internet, chúng sẽ góp phần nâng tổng băng thông của grid lên.

3.1.4. Phần mềm và bản quyền

Grid có thể có những phần mềm đắt tiền không thể cài đặt lên toàn bộ máy

trong mạng. Khi sử dụng grid, những công việc cần dùng phần mềm này sẽ được gửi

tới máy có cài phần mềm. Điều này có thể giúp các tổ chức tiết kiệm chi phí rất nhiều.

Một vài phần mềm có điều khỏan cho phép cài trên tất cả các máy trong grid

nhưng lại hạn chế số máy có thể chạy đồng thời một lúc. Chương trình quản lý giấy

phép sẽ kiểm tra có bao nhiêu thể hiện của phần mềm đang chạy và ngăn chặn chúng

chạy quá số lượng đã mua.

13

Page 27: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

3.1.5. Các thiết bị đặc biệt, sức chứa, kiến trúc và quyền hạn

Các nền tảng trên grid thường sẽ yêu cầu các kiến trúc, hệ điều hành, thiết bị

khác nhau. Mỗi chúng là một loại tài nguyên mà grid sẽ sử dụng để thực hiện các công

việc khác nhau. Một vài phần mềm chỉ có thể chạy trên những yêu cầu về phần cứng

nhất định, chẳng hạn như x86 hay PowerPC. Những thuộc tính này cần được xem xét

khi đưa các công việc vào thực thi.

Trong vài trường hợp, nhà quản trị có thể tạo ra những tài nguyên nhân tạo

được sử dụng bởi bộ lập lịch để phân công công việc. Ví dụ, một vài máy tính được

thiết kế chỉ để dùng cho nghiên cứu y khoa. Khi có một công việc nghiên cứu y khoa

thì bộ lập lịch sẽ phân công cho các máy trên thực hiện công việc đó. Một vài máy

khác chỉ tham gia vào grid khi nó không được dùng cho mục đích quân sự. Trong

trường hợp này, những công việc yêu cầu tài nguyên quân sự sẽ không được phân bổ

cho các máy trên. Các nhà quản trị phải phân loại các công việc để thực hiện phương

pháp này.

2.2. Công việc và ứng dụng

Dù rất nhiều loại tài nguyên của grid được chia sẻ và sử dụng, chúng luôn luôn

được truy cập thông qua ứng dụng hay công việc. Chúng ta dùng định nghĩa “ứng

dụng” như là cấp cao nhất của công việc trên grid. Tuy nhiên từ “công việc” cũng

được dùng với nghĩa tương đương. Ứng dụng có thể được chia thành nhiều công việc,

như hình 6 dưới đây. Các công việc, có thể được chia tiếp thành các công việc nhỏ

hơn. Grid còn dùng các thuật ngữ giao dịch, đơn vị công việc để chỉ công việc.

Công việc là những chương trình được thực thi trên một điểm của grid. Chúng

có thể là thực hiện tính toán, thi hành một câu lệnh, di chuyển dữ liệu. Một ứng dụng

grid được tổ chức như tập hợp các công việc được thiết kế để chạy song song trên các

máy khác nhau.

14

Page 28: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Các công việc có thể bị phụ thuộc lẫn nhau nên không phải lúc nào cũng có

thể cùng một lúc chạy song song. Ví dụ, chúng ta có một công việc yêu cầu dữ liệu

đầu vào phải được copy đến một máy. Một vài công việc khác đòi hỏi dữ liệu đầu ra,

nhưng chúng không thể thực thi nếu công việc trước chưa được hoàn thành. Một công

việc có thể sinh ra nhiều công việc con khác nhau. Sau đó, dữ liệu của tất cả các công

việc con được tập hợp để tạo nên kết quả cuối cùng của ứng dụng.

2.3. Lập lịch, đặt chỗ, và quét dọn

Hệ thống grid có nhiệm vụ gửi các công việc đến các máy cần thiết để thực

thi. Với hệ thống grid đơn giản nhất, người sử dụng sẽ chọn máy thích hợp cho công

việc của anh ta sau đó thực hiện dòng lệnh để đưa công việc đó đến máy đã chọn. Các

hệ thống grid hiện đại hơn bao gồm một bộ lập lịch có tác dụng tự động tìm kiếm

những máy tính thích hợp cho công việc đang chờ đợi thực thi.

Trong các hệ thống grid quét dọn, mỗi máy tính rỗi sẽ gửi thông báo tình trạng

của mình đến điểm quản lý của grid. Điểm quản lý này sẽ chỉ định cho máy này thực

hiện công việc tiếp theo mà máy có thể thực thi được. Việc này được thực hiện một

cách kín đáo đối với những người sử dụng bình thường. Nếu máy tính bận với những

15

Hình 6: Một ứng dụng có thể là một hay nhiều công việc được lập lịch chạy trên grid

Page 29: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

công việc riêng của máy, thì công việc grid sẽ tạm ngưng. Điều này khiến cho khó có

thể tính trước được thời gian sẽ hoàn thành công việc trên grid.

Ứng dụng chạy ở chế độ quét dọn sẽ đặt nó vào trong hệ thống với độ ưu tiên

thấp nhất. Vì thế, nó sẽ chỉ được chạy khi không có bất cứ chương trình nào khác đang

chạy. Với những bộ xử lý tốc độ cao ngày nay, ứng dụng grid có thể chạy trong vài

phần trăm giây, thậm chí là giữa các lần bấm phím của người dùng.

Để có thể dự đoán dễ dàng hơn, các máy tính grid thường được thiết kế riêng

cho grid và không bị chi phối bới các công việc khác. Điều này cho phép bộ lập lịch có

thể tính toán thời gian trung bình để hoàn thành các công việc.

Các tài nguyên trong grid có thể được đặt chỗ trước với một tập hợp công

việc. Sự đặt chỗ này giống như hệ thống sắp xếp đặt phòng. Nó bảo đảm sự hoàn

thành đúng hạn và chất lượng dịch vụ. Khi quyền hạn được thông qua, tài nguyên đặt

chỗ có thể được quét dọn để chạy những công việc có độ ưu tiên thấp trong khi chờ

những công việc đã đặt trước nó. Với sự kết hợp của lập lịch, đặt chỗ, quét dọn có thể

tạo nên một grid hoản hào.

Lập lịch và đặt chỗ có thể tiến hành dễ dàng nếu chỉ có một tài nguyên tham

gia, như CPU. Tuy nhiên việc tối ưu trên grid sẽ dùng nhiều tài nguyên cho việc đặt

chỗ vào lập lịch. Ví dụ, chúng ta luôn mong muốn công việc sẽ được phân công cho

máy gần dữ liệu mà công việc dùng nhất. Điều đó sẽ giảm lưu lượng băng thông và

tăng khả năng mở rộng. Chính vì vậy, bộ lập lịch sẽ sử dụng đến kinh nghiệm. Kinh

nghiệm này sẽ tìm ra sự kết hợp tốt nhất cho lập lịch và đặt chỗ để đạt hiệu quả cao

nhất.

2.4. Các gói phần mềm grid

3.4.1. Gói quản lý

Tất cả các hệ thống mạng lưới grid đều có những gói phần mềm quản lý. Thứ

nhất, đó là những phần mềm để quản lý tài nguyên và người sử dụng trên mạng. Đây

là những thông tin chính dùng để quyết định các công việc trên grid sẽ được phân bổ

đến đâu.

Thứ hai, có các gói phần mềm đo đạc để quyết định dung lượng các nốt trên

lưới và tình trạng của các nốt này. Các thông tin này dùng để lập lịch các công việc

trên lưới. Chúng còn được dùng để đánh giá tình trạng của grid, để cảnh báo các vấn

16

Page 30: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

đề như ngừng hoạt động, tắc nghẽn. Chúng còn được dùng để lựa chọn các mẫu và

thống kê.

Thứ ba, các hệ thống phần mềm hiện đại của grid có khả năng tự động quản lý

tất cả các mặt của mạng lưới. Đó là tự động tính toán, tự động khôi phục lỗi. Các phần

mềm sẽ tự động khôi phục từ tình trạng tắc nghẽn, quá tải, đưa công việc trở lại bình

thường.

3.4.2. Gói lập lịch

Hầu hết các hệ thống grid có chứa phần mềm lập lịch. Phần mềm này nằm ở

trên máy chạy công việc được yêu cầu bởi người sử dụng. Trong trường hợp đơn giản

nhất, nó chỉ đơn giản là phân bổ công việc cho máy có cấu hình tài nguyên phù hợp.

Tuy nhiên, trong các bộ lập lịch nâng cao thì còn rất nhiều công việc phải làm.

Một vài bộ lập lịch có hệ thống ưu tiên công việc. Nó được thực hiện với hàng

đợi công việc, mỗi công việc có độ ưu tiên khác nhau. Nếu một máy tính sẵn sàng để

thực hiện công việc tiếp theo, công việc có độ ưu tiên cao nhất sẽ được đưa vào thực

hiện. Chính sách cũng được đưa vào trong bộ lập lịch. Chính sách bao gồm nhiều ràng

buộc về công việc, người sử dụng, hay tài nguyên. Ví dụ, có chính sách cấm một công

việc được thực thi tại một thời điểm nhất định.

Bộ lập lịch luôn luôn ảnh hưởng trực tiếp đến tải của mạng. Chúng sử dụng bộ

đo đạc để xác định tình trạng xử lý hiện thời của một máy để xem chúng đang bận hay

rỗi. Bộ lập lịch có thể tổ chức theo dạng thừa kế. Ví dụ, một bộ lập lịch lớn có thể đưa

công việc cho bộ lặp lịch cụm hoặc các bộ lặp lịch ở cấp thấp hơn.

Các bộ lặp lịch tiến bộ hơn sẽ quản lý tình trạng công việc trong lưu lượng làm

việc chung. Nếu một công việc bị mất do mạng hay hệ thống bị trục trặc, một bộ lặp

lịch tốt sẽ tự động đưa công việc vào thưc hiên ở một nơi khác. Tuy nhiên nếu công

việc đã bị quá thời gian quy định, chúng không thể được lập lịch lại.

Việc đặt chỗ trước tài nguyên trên grid được thực hiện thông qua hệ thống đặt

chỗ. Nó hơn cả một bộ lặp lịch. Đầu tiên nó là hệ thống lịch cho việc đặt chỗ trước tài

nguyên và bảo vệ những công việc khác dùng tài nguyên này. Hơn nữa nó có thể tạm

ngừng hoặc thậm chí ngừng hẳn công việc đang chạy ở một máy khi hạn đặt chỗ đã

đến, máy phải phục vụ cho công việc đã đặt trước.

17

Page 31: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

3.4.3. Các gói truyền thông

Một mạng grid thường có các gói giúp công việc liên lạc giữa các máy. Ví dụ,

một công việc được chia thành nhiều công việc nhỏ. Mỗi công việc nhỏ này là một

phân mảnh trên grid. Tuy nhiên, ứng dụng cần tất cả các phân mảnh này liên lạc với

nhau. Một phân mảnh cần liên lạc với các phần còn lại, thiết lập đường truyền, và gửi

dữ liệu cần thiết. Chuẩn mở Message Passing Interface (MPI) thường được dùng trong

grid giúp việc truyền thông dữ liệu hiệu quả hơn.

3.4.4. Gói quan sát và đo đạc

Như đã nói ở trên bộ lập lịch tác động tới tải của lưới. Thường thì grid sẽ bao

gồm một vài công cụ cho phép tính toán tải hiện thời và các hoạt động trên các máy.

Phần mềm này đôi khi được gọi là bộ cảm ứng tải.

Sự tính toán thông tin trên không chỉ dùng lập lịch mà nó còn được dùng để

phát hiện các mẫu chung thường được sử dụng. Số liệu thống kê có thể đưa ra xu

hướng cần thêm các phần cứng mới. Các số liệu đo đạc của một công việc cụ thể có

thể được thu nhặt để dự đoán tài nguyên cho lần chạy tiếp theo. Dự đoán tốt thì grid sẽ

hoạt động hiệu quả cao hơn.

Các số liệu đo đạc cũng có thể dùng cho mục đích tài chính, hoặc các nhà

phân phối tài nguyên, hay quản độ ưu tiên.

2.5. Các cấu hình mạng grid

Grid có thể được xây dựng với mọi kích cỡ, từ một vài máy cho đến nhiều tập

hợp máy trên khắp thế giới. Trong phần này, chúng ta sẽ miêu tả một vài mô hình grid

với kích cỡ khác nhau.

18

Page 32: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Như hình trên, một mạng grid đơn giản nhất gồm một vài máy, tất cả giống

nhau về cấu hình phần cứng và hệ điều hành, nối vào mạng nội bộ. Kiểu mạng này

dùng hệ thống đồng nhất và có thể được sử dụng cho những ứng dụng chuyên môn.

Các máy này thường là một bộ phận của một tổ chức, và chúng không yêu cầu một

quyền hạn đặc biệt hay các chính sách bảo mật. Vì chúng có chung hệ điều hành và

phần cứng nên việc lựa chọn phần mềm là rất dễ dàng. Nhiều người gọi chúng là

cụm máy tính (cluster) hơn là lưới (grid).

Mô hình tiếp theo bao gồm nhiều máy hỗn hợp khác nhau. Với cấu hình

này, sẽ có nhiều loại tài nguyên hơn. Hệ thống grid sẽ phải có thành phần lập lịch.

Các máy trong mạng có thể ở các bộ phận khác nhau nhưng thường ở cùng một tổ

chức. Cấu hình này thường được gọi là intragrid.

Khi grid được mở rộng đến nhiều bộ phận khác nhau, quyền hạn được yêu

cầu để xem cách grid được sử dụng. Có nhiều độ ưu tiên khác nhau ở các bộ phận

hoặc ở các ứng dụng đối với từng loại tài nguyên trên grid. Các vấn đề về bảo mật

cũng được các tổ chức đề cập đến. Các dữ liệu nhạy cảm của bộ phận này được bảo

vệ để tránh truy cập ở các bộ phận khác. Các máy chuyên dụng phục vụ được đưa

vào để tăng tốc độ vào tin cậy của dịch vụ.

19

Hình 7 : Một mạng grid đơn giản

Page 33: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Mạng lưới grid có thể phát triển quy mô lớn về không gian khi các tổ chức

có các bộ phận ở những thành phố hay các nước khác nhau. Các đường truyền

chuyên dụng được sử dụng giữa các bộ phận này. Trong nhiều trường hợp, các

kênh VPN được sử dụng để kết nối các bộ phận của tổ chức qua Internet. Trong

trường hợp này, grid phải được thiết kế chặt chẽ để tránh xung đột.

Như hình 8 dưới đây, mạng lưới có thể phát triển liên tổ chức, để thực hiện

những dự án chung, như dự án tìm số nguyên tố lớn của GIMPS (Great Internet

Mersenne Prime Search). Mô hình này được gọi là intergrid. Mức bảo mật cao nhất

được sử dụng trong mô hình này. Các tài nguyên có thể được mua từ những nhà

cung cấp đáng tin cậy.

20

Hình 8 : Một mạng grid toàn cầu phức tạp

Page 34: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 3.Người dùng trong mạng Grid Computing

Phần này mô tả về người dùng và nhà quản trị trong grid computing.

3.1. Người dùng bình thường

Mục này miêu tả những hoạt động trong môi trường grid dưới vai trò của một

người sử dụng bình thường.

3.1.1. Tham gia vào grid và cài đặt các phần mềm

Người dùng đầu tiên phải đăng ký tham gia vào grid và cài đặt các phần mềm

cần thiết trên máy của anh ta.

Đăng ký tham gia vào grid đòi hỏi xác thực cho vấn đề bảo mật. Người sử

dụng thông báo định danh (ID) của anh ta cho cơ quan chứng thực CA (Certificate

Authority). Cơ quan chứng thực cần chắc chắn rằng người sử dụng là có thật. CA cấp

một chứng chỉ đặc biệt cho phần mềm kiểm tra định danh của người dùng. Người dùng

có trách nhiệm giữ các thẻ chứng thực đã được phát.

Một khi người sử dụng đã được xác thực, phần mềm grid được cung cấp cho

người sử dụng để anh ta có thể cài lên máy của mình và sử dụng grid. Phần mềm này

tự động được cấu hình bởi hệ thống quản lý grid. Theo cách này, người sử dụng có thể

tiến hành cài đặt rất đơn giản. Trong các hệ thống ít tự động hơn, người dùng phải tự

hỏi điểm quản lý để biết được thông tin cấu hình chính xác. Người dùng cũng có thể

hỏi người quản trị grid định danh của anh ta trên grid.

3.1.2. Đăng nhập vào grid

Hầu hết các hệ thống grid đều yêu cầu người sử dụng phải đăng nhập vào hệ

thống với định danh đã được đăng ký. Có các hệ thống grid sử dụng chính hệ thống

định danh của grid để phân biệt người sử dụng. Cách này tỏ ra thuận tiện hơn với

người sử dụng, giúp tránh được vấn đề trùng lặp định danh giữa các máy. Nó làm cho

grid trông giống như một máy tính cực lớn hơn là một tập hợp các máy khác nhau.

Khi đã đăng nhập, người sử dụng có thể sử dụng truy vấn và đưa lên grid các

công việc cần thực hiện. Một vài hệ thống grid cho phép sử dụng chức năng truy vấn

khi chưa đăng nhập vào hệ thống hay thậm chí người sử dụng chưa đăng ký với grid.

21

Page 35: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

3.1.3. Truy vấn và đưa công việc

Người dùng có thể truy vấn grid để xem grid bận như thế nào, các công việc

được tiến hành ra sao, hay để tìm kiếm các tài nguyên. Grid cung cấp công cụ truy vấn

bằng cả dòng lệnh và đồ họa (GUIs). Công cụ dòng lệnh tiện lợi khi người dùng muốn

viết một đoạn kịch bản (script) thực hiện một lô công việc. Ví dụ, người dùng muốn

thực hiện đồng thời tìm kiếm tài nguyên, đưa công việc lên tài nguyên đó, xem xét quá

trình thực hiện, và kết quả đưa ra.

Khi đưa các công việc lên grid người dùng phải làm ba bước.

Đầu tiên, dữ liệu đầu vào và các tệp thực thi được gửi đến máy thực hiện công

việc.

Thứ hai, công việc sẽ được thực thi trên các máy.

Thứ ba, kết quả chạy công việc sẽ được gửi trở lại người đưa công việc lên.

Khi công việc gồm nhiều công việc con khác nhau thì đòi hỏi phải thu nhặt

các kết quả và tập hợp chúng lại với nhau, thường được thực hiện bởi một ứng dụng ở

máy đã gửi công việc lên. Khi số lượng công việc con trở nên quá lớn, công việc thu

nhặt kết quả cũng có thể được phân tán ra nhiều máy khác nhau.

3.1.4. Cấu hình dữ liệu

Dữ liệu được sử dụng trong các công việc ở grid có thể ở trong hay ngoài

mạng grid. Các dữ liệu này có thể tạo nên lưu lượng giao thông rất lớn. Vì thế cần thiết

phải sắp xếp chúng để đạt được sự lưu thông nhỏ nhất trên grid.

Ví dụ, nếu có một số lượng lớn công việc con của một ứng dụng cần chạy

nhiều lần lặp lại, dữ liệu có thể được sao lưu đến các máy và sử dụng lại trong lần chạy

tiếp theo. Sẽ tốt hơn nếu chúng ta dùng các hệ thống tệp mạng (networded file system)

để chia sẻ dữ liệu, bởi vì với các hệ thống này dữ liệu sẽ được chuyển từ trung tâm đến

ứng dụng hiệu quả hơn.

3.2. Nhà quản trị

Mục này miêu tả những hoạt động trong môi trường grid dưới vai trò của một

người quản trị.

22

Page 36: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

3.2.1. Cài đặt

Đầu tiên, hệ thống grid phải được cài đặt trên các máy đã được cấu hình. Các

máy này phải được kết nối với băng thông đủ rộng tới các máy khác trên mạng grid.

Cần dự đoán được các sự cố có thể xảy ra và đưa hệ thông hoạt động trở lại khi gặp

các sự cố này. Các máy trong mạng phải được cấu hình có khả năng khôi phục hệ

thống khi gặp hỏng hóc. Các dữ liệu quan trọng cần được theo dõi và sao lưu thường

xuyên.

Sau khi đã cài đặt, các phần mềm trong grid cần được cấu hình về địa chỉ và

định danh. Nhà quản trị có mọi quyền để quản lý grid.

3.2.2. Quản lý người dùng

Một trong các chức năng của nhà quản trị là quản lý người dùng. Nhà quản trị

có nhiệm vụ quản lý quyền hạn của những người dùng tren mạng. Khi một người dùng

đăng nhập vào hệ thống, định danh của họ phải được thông qua cơ quan chứng thực

CA. Người dùng này và thẻ chứng thực của họ được đưa vào danh sách người dùng

trên hệ thống grid. Trong nhiều trường hợp, nhà quản trị cần đưa thông tin của người

dùng đến các máy khác trên mạng.

3.2.3. Chứng thực

Cần phải đảm bảo mức bảo mật cao nhất cho grid vì grid được dùng để chạy

các công việc chứ không chỉ là để chia sẻ dữ liệu. Chính vì thế nó có thể nảy sinh

virus, “ngựa thành Troa”, hay các cuộc tấn công vào mạng grid. Cơ quan chứng thực

(Certificate Authority) là một phần rất quan trọng trong bảo mật của grid. Một tổ chức

có thể chọn cơ quan chứng thực ở ngoài và tự xử lý nó.

Những nhiệm vụ cơ bản của cơ quan chứng thực là:

Xác định định danh cửa người yêu cầu chứng thực.

Phân phát, xóa, lưu trữ chứng thực.

Bảo vệ máy chủ của cơ quan chứng thực.

Duy trì, bảo dưỡng tên và chứng thực của người dùng.

Hoạt động đăng nhập

Cơ quan chứng thực dùng hệ thống mã hóa khóa công khai. Trong hệ thống

này, khóa được đi theo cặp, khóa công khai và khóa bí mật. Một người có thể mã hóa

dữ liệu và người kia có thể giải mã nó. Khóa bí mật được người dùng giữ kín và không

để lộ cho ai khác biết. Khi người dùng dùng khóa bí mật để mã hóa, người nhận dùng

23

Page 37: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

khóa công khai để giải mã nó. Tuy nhiên ai nhận được dữ liệu cũng có thể giải mã nó

khi biết khóa công khai. Nếu người gửi dùng mã hóa kép với cả khóa công khai và mã

bí mật, thì tạo ra sự bảo mật tốt hơn. Người nhận dùng khóa bí mật của anh ta để giải

mã, sau đó dùng khóa công khai của người gửi để giải mã lần hai.

3.2.4. Quản lý tài nguyên

Một nhiệm vụ khác của nhà quản trị là quản lý các tài nguyên trong mạng

grid. Nó bao gồm thiết lập các quyền sử dụng của người dùng đối với tài nguyên, theo

dõi tài nguyên, và quản lý hệ thống tài chính. Sử dụng các thống kê có thế giúp dự

đoán được xu hướng cần thêm phần cứng, giảm lãng phí phần cứng, cũng như điều

chỉnh độ ưu tiên và chính sách để đạt được kết quả chung tốt nhất.

Một vài gói phần mềm grid, như bộ lập lịch, sử dụng độ ưu tiên và các chính

sách để lập lịch. Nhà quản trị có trách nhiệm cấu hình các ưu tiên hay chính sách để

đạt được kết quả chung tốt nhất.

24

Page 38: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 4.Một số chuẩn trong môi trường Grid

Tính toán mạng lưới có thể mô tả bằng nhiều khái niệm và có thể được định

nghĩa theo nhiều cách khác nhau. Nhưng về cơ bản nó cung cấp khả năng tính toán

phân tán và tận dụng các tài nguyên. Để có thể thống nhất và làm cho các tài nguyên

trên nhiều nền tảng phần cứng, phần mềm khác nhau có thể cùng tồn tại, và hoạt động

với nhau đòi hỏi phải có các chuẩn. Trong chương này chúng ta sẽ xem xét một số

chuẩn cơ bản được áp dụng cho tính toán mạng lưới.

Một số yêu cầu với tính toán mạng lưới:

Hỗ trợ việc thực thi chương trình trên nhiều nền tảng khác nhau

Cơ sở hạ tầng an toàn

Khả năng di chuyển, tái tạo và tập hợp dữ liệu

Khả năng phát hiện tài nguyên

Quản lí tài nguyên

Có nhiều chuẩn khác nhau cho mỗi yêu cầu kể trên. Sau đây là một số chuẩn

tiêu biểu.

4.1. Kiến trúc dịch vụ Grid mở - Open Grid Services Architecture (OGSA)

Kiến trúc dịch vụ Grid mở là một mở rộng của kiến trúc tính toán mạng lưới

nhằm kết hợp với kiến trúc dịch vụ Web (Web service), được phát triển bởi nhóm

Globus và IBM. Khái niệm này lần đầu tiên được đưa ra tại diễn đàn Grid toàn cầu

(Global Grid Forum), Toronto, Canada năm 2002.

Ý tưởng này bắt nguồn từ thực thế rằng hai công nghệ Grid và dịch vụ Web

tuy có cách tiếp cận khác nhau như cùng chung một mục đích: "Chia sẻ tài nguyên và

hỗ trợ tạo ra các tổ chức ảo". Trong kiến trúc dịch vụ Web, điều này được thực hiện

bằng cách chia sẻ dữ liệu, lôgic, và qui trình giao dịch thương mại giữa các thành viên

tham gia vào thương mại điện tử (một dạng tổ chức ảo). Đối với Grid, tổ chức ảo chia

sẻ cho nhau các tài nguyên tính toán và cơ sở dữ liệu nhằm mục đích giải quyết các bài

toán khoa học công nghệ. Cả hai loại tổ chức ảo nói trên đều không giới hạn về không

gian địa lý. Điểm khác biệt chính đó là "dịch vụ Web" nhắm tới các dịch vụ liên tục

(persistent), trong khi Grid hỗ trợ dịch vụ tạm thời (transient).

25

Page 39: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Một số quy ước đã được mô tả trong tài liệu đặc tả dịch vụ Grid bao gồm:

Cách thức tạo và khai thác dịch vụ Grid

Cách thức đặt tên và tham chiếu tới các thể hiện (instance) của dịch

vụ Grid.

Cách mô tả các giao diện cho dịch vụ Grid.

Hình 9: Kiến trúc OGSA

4.2. Cơ sở hạ tầng của dịch vụ Grid mở - Open Grid Service Infrastructure

(OGSI)

OGSI là một mở rộng của OGSA, OGSI định nghĩa các giao diện cụ thể cho

các dịch vụ thực thi các chức năng được định nghĩa trong OGSA.

Hơn nữa OGSI còn định ra các cơ chế cho việc khởi tạo, quản lí và trao đổi

thông tin giữa các dịch vụ Grid. Theo OGSI thì dịch vụ Grid là một dịch vụ Web mà

tuân theo một tập các giao diện và hoạt động, các giao diện và hoạt động này xác định

cách thức mà một client tương tác với dịch vụ Grid.

Các giao diện và hoạt động đó cùng với các cơ chế khác của OGSI về khởi tạo

và phát hiện dịch vụ Grid cung cấp một nền tảng cho môi trường Grid. OGSI cũng đưa

ra ngôn ngữ mô tả dịch vụ Web – Web serivce definition Language (WSDL) để mô tả

các giao diện.

26

Page 40: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 10: Các thành phần trong OGSI

4.3. GridFTP

GridFTP là một giao thức truyền dữ liệu an toàn và tin cậy, với hiệu xuất cao

và tối ưu cho mạng diện rộng, có băng thông lớn. Giao thức GridFTP dựa trên nền

tảng của giao thức FTP với những mở rộng cho phù hợp với môi trường Grid. Các tài

liệu đặc tả về giao thức GridFTP có thể được tìm thấy trong diễn đàn Grid toàn cầu.

GridFTP sử dụng khả năng bảo mật cơ bản của Grid trên cả hai kênh: kênh

điều khiển và kênh dữ liệu.Sử dụng nhiều kênh dữ liệu để truyền song song, truyền

từng phần tệp, truyền cho bên thứ ba…Do vậy GridFTP có thể sử dụng để chuyển

những tệp (đặc biệt là những tệp có dung lượng lớn) trong mạng một cách hiệu quả và

tin cậy.

4.4. Cơ chế tài nguyên của dịch vụ Web – Web service resource framework.

Về cơ bản WSRF định ra một tập các đặc tả để mô tả mối quan hệ giữa các

dịch vụ Web (thông thường là không có trạng thái) và các tài nguyên trạng thái

(stateful resources). Bằng việc kết hợp giữa các dịch vụ Web chuẩn với sự quản lí các

tài nguyên trạng thái, WSRF cung cấp khả năng lưu trạng thái cho dịch vụ Web.

27

Page 41: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

WSRF là một chuẩn chung, bao gồm một số chuẩn khác như:

Tài nguyên

Vòng đời của tài nguyên

Các thuộc tính của tài nguyên

Nhóm dịch vụ

Các lỗi

Các thông báo

Các chủ đề

Hình sau đây mô tả mối liên hệ giữa dịch vụ Web, WSRF và OGSA

4.5. Một số chuẩn của dịch vụ Web

Do sự giống nhau giữa dịch vụ Grid và dịch vụ Web mà các chuẩn của dịch vụ

Web cũng được áp dụng cho dịch vụ Grid. Một số chuẩn quan trọng nhất đó là

Ngôn ngữ Đánh dấu Mở rộng – eXtensible Markup Language (XML): là một ngôn

ngữ đánh dấu với mục đích chung được tổ chức W3C đề nghị.

Ngôn ngữ mô tả dịch vụ Web - Web Service Description Language (WSDL): là

một ngôn ngữ được xây dựng dựa trên định dạng ngôn ngữ XML. Nhằm mô tả các

28

Hình 11: mối liên hệ giữa dịch vụ Web, WSRF và OGSA

Page 42: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

giao diện chung, cách giao tiếp, tên gọi, các giao thức và định dạng gói tin của dịch

vụ Web.

Giao thức truy cập đối tượng đơn giản - Simple Object Access Protocol (SOAP):

giao thức mạng cho phép các đối tượng phần mềm được phát triển bởi những ngôn

ngữ lập trình khác nhau và chạy trên những nền tảng hoàn toàn khác biệt có thể

tương tác với nhau. SOAP được phát triển dựa trên chuẩn XML.

Universal Description, Discovery and Integration (UDDI): chuẩn dịch vụ Tích hợp,

Khám phá và Mô tả Toàn cầu, hoạt động như một dịch vụ đăng ký và định vị có

khả năng xác nhận và phân loại các ứng dụng dịch vụ Web, giúp người sử dụng dễ

dàng tìm thấy chúng trên mạng.

4.6. Tổng kết chương

Trong chương này đã giới thiệu một cách tổng quát một số chuẩn đã được đề

xuất và sử dụng trong môi trường tính toán mạng lưới và các dịch vụ Grid. Cũng như

một số chuẩn liên quan với công nghệ dịch vụ Web – Web service.

29

Page 43: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 5. Tổng quan về dịch vụ Web

Dịch vụ Web là một công nghệ tính toán phân tán giống như CORBA, RMI,

hay EJB. Nó cho phép mở rộng các ứng dụng theo mô hình client/server.

Ví dụ, giả sử một công ty có nhiều cửa hàng phân bố rải rác tại nhiều thành

phố. Tuy nhiên danh sách các mặt hàng được bán chỉ nằm tại cơ sở dữ liệu của văn

phòng trung tâm, do đó cần phát triển một phần mềm tại các cửa hàng để truy xuất

catalog này. Danh sách này có thể được công bố (publish) thông qua dịch vụ Web gọi

là ShopService. Khách hàng clients (máy tính tại các cửa hàng) sẽ liên hệ với dịch vụ

Web (tại máy chủ) và gửi yêu cầu cung cấp dịch vụ (service request) về catalog. Máy

chủ sẽ gửi trả lại catalog qua một đáp ứng dịch vụ (service response).

5.1. Ưu điểm của dịch vụ Web so với các công nghệ khác

Dịch vụ Web là độc lập với nền tảng và ngôn ngữ, bởi vì nó sử dụng ngôn ngữ

chuẩn XML. Nghĩa là, chương trình chạy trên máy khách có thể được lập trình

bằng C++ và chạy trên hệ điều hành Windows, trong khi dịch vụ Web được viết

bằng Java và chạy trên hệ điều hành Linux.

Hầu hết các dịch vụ Web dùng giao thức HTTP để trao đổi thông điệp (như: thông

điệp yêu cầu dịch vụ và thông điệp trả lời của dịch vụ). Điều này cho phép ta có thể

xây dựng các ứng dụng ở phạm vi toàn cầu dùng Internet làm phương tiện truyền

thông – do không bị các hạn chế về tường lửa.

30

Hình 12: dịch vụ web

Page 44: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

5.2. Nhược điểm khi dùng dịch vụ Web

hiệu quả không cao: Bởi vì mọi dữ liệu trao đổi với dịch vụ Web đều dùng XML

nên chắc chắn sẽ cồng kềnh vào kém hiệu quả hơn so với các ứng dụng sử dụng mã

nhị phân. Tuy nhiên với sự tăng tốc mạnh mẽ của công nghệ máy tính điện tử, tốc

độ và hiệu quả của các ứng dụng dựa trên dịch vụ web ngày càng được cải thiện.

dịch vụ không phong phú: Hiện tại, các dịch vụ Web mới chỉ cung cấp một vài

dạng dịch vụ cơ bản. Trong khi CORBA đem lại cho ngừơi lập trình nhiều dịch vụ

hỗ trợ như lưu trữ, thông báo, quản lí vòng đời, quản lí các giao dịch.

Một tính chất quan trọng của dịch vụ Web đó là nó hướng tới các hệ thống

phân tán liên kết lỏng, trong khi các công nghệ khác như CORBA và EJB phát triển

trên các hệ thống phân tán liên kết chặt trong đó client và server phụ thuộc vào nhau.

Đối với dịch vụ Web, client không cần phải duy trì liên kết với dịch vụ Web cho tới

khi nó thực sự cần tới dịch vụ này. Các hệ thống phân tán liên kết chặt rất thích hợp

với các ứng dụng intranet trong phạm vi một công ty, nhưng không khả thi hoặc kém

hiệu quả ở qui mô Internet. Đây chính là thế mạnh của dịch vụ Web Services, vì thế nó

được chọn để phát triển dịch vụ Grid.

5.3. Lời gọi dịch vụ Web điển hình

Sơ đồ dưới đây liệt kê toàn bộ các bước liên quan tới một lời gọi dịch vụ Web

hoàn chỉnh.

31

Hình 13:Lời gọi web

Page 45: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Bởi chương trình khách không chứa bất cứ thông tin về các dịch vụ Web hiện thời,

vì vậy trước hết nó phải đi tìm dịch vụ Web nào phù hợp với yêu cầu. Ví dụ như ta

đang quan tâm đến nơi chứa dịch vụ Web cung cấp thông tin về nhiệt độ tại các

thành phố. Chúng ta sẽ liên hệ với UDDI registry để hỏi về điều này.

UDDI registry sẽ trả lời cho chúng ta biết server nào cung cấp dịch vụ mà ta cần (ví

dụ như. nhiệt độ tại các thành phố).

Tuy biết được nơi cung cấp dịch vụ, ta cần phải biết cách thức gọi dịch vụ. Ví dụ,

phương thức gọi dịch vụ để lấy thông tin về nhiệt độ tại một thành phố có thể là

Temperature getCityTemperature(int CityPostalCode), nhưng cũng có thể là int

getCityTemp(string cityName, bool isFarenheit). Vì thế ta phải hỏi server để có

được mô tả chi tiết cách gọi dịch vụ.

Dịch vụ Web sẽ trả lời bằng một thông điệp sử dụng ngôn ngữ chung WSDL.

Tại bước này chương trình khách sẽ thực hiện lời gọi dịch vụ bằng ngôn ngữ

SOAP, ví dụ như gửi một yêu cầu SOAP request về nhiệt độ tại một thành phố nào

đó.

Server sẽ trả lời bằng một thông điệp SOAP response chứa thông tin được yêu cầu

hoặc thông báo lỗi trong trường hợp sự cố hoặc yêu cầu sai.

5.4. Địa chỉ dịch vụ Web

Địa chỉ của dịch vụ Web cũng có dạng giống như địa chỉ trang Web. Địa chỉ

một dịch vụ Web được mô tả bằng một URI (Uniform Resource Identifiers) tương tự

như URL cho một trang Web.

Ví dụ, UDDI registry có thể trả về một URI sau cho dịch vụ Web cung cấp

thông tin thời tiết tại Mỹ:

http://webservices.mysite.com/weather/us/WeatherService

5.5. Kiến trúc dịch vụ Web

Hình sau mô tả kiến trúc dịch vụ Web:

32

Page 46: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Service Discovery: Phần này chịu trách nhiệm tìm kiếm các dịch vụ Web phù hợp

với yêu cầu đặt ra. Nó thường được điều khiển bởi UDDI (Universal Description,

Discovery, and Integration).

Service Description : Một trong những đặc trưng của dịch vụ Web là tự mô tả (self-

describing). Nghĩa là, nó sẽ tự mô tả các thao tác mà nó cung cấp cũng như cách

thức gọi nó. Mô tả này được viết bằng ngôn ngữ đặc tả dịch vụ Web - Web

Services Description Language (WSDL).

Service Invocation : Việc gọi hay yêu cầu thực thi một dịch vụ Web bao gồm việc

chuyền thông điệp SOAP giữa client và server. SOAP đặc tả cách thức định dạng

yêu cầu tới server cũng như cách thức mà server trả lời.

Transport : Cuối cùng, toàn bộ những thông điệp này cần được trao đổi giữa client

và server. Giao thức chịu trách nhiệm làm việc này là HTTP (HyperText Transfer

Protocol), cũng là giao thức trao đổi trang Web truyền thống.

5.6. Ứng dụng dịch vụ Web

Một ứng dụng dịch vụ Web có cấu trúc giống như một ứng dụng client/server

viết bằng CORBA hay RMI. Một khi trong ứng dụng cho client cần gọi một dịch vụ

Web, các lập trình viên cần phải viết một đoạn mã gọi là client stub để thực hiện công

việc này (hiện nay có nhiều công cụ cho phép sinh tự động các client stub này dựa vào

mô tả WSDL của dịch vụ Web đó).

33

Hình 14: Kiến trúc dịch vụ web

Page 47: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Do đó, ta không cần phải hiểu rõ mọi bước gọi thực thi dịch vụ Web một cách

chi tiết. Khi viết ứng dụng cho client ta chỉ cần quan tâm tới bốn sự kiện sau:

Định vị dịch vụ Web phù hợp với yêu cầu thông qua UDDI.

Nhận mô tả WSDL của dịch vụ Web này.

Chỉ cần sinh ra đoạn mã client stub một lần rồi đưa vào ứng dụng trên client.

Ứng dụng sẽ sử dụng stub này mỗi khi nó gọi dịch vụ Web.

Việc lập trình cho ứng dụng trên server cũng không mấy khó khăn. Ta không

cần phải viết một chương trình server phân tích các yêu cầu SOAP và sinh ra các đáp

ứng SOAP mà chỉ cần cài đặt các chức năng cho dịch vụ Web và sau đó sinh ra các

đoạn mã cho server stub (đôi khi được gọi là skeleton) chịu trách nhiệm phân tích các

yêu cầu và gửi chúng tới dịch vụ đã được cài đặt. Kết quả sau khi thực thi dịch vụ lại

được trao cho server stub để sinh ra đáp ứng tương ứng. Server stub có thể được sinh

ra từ mô tả WSDL hoặc từ các ngôn ngữ định nghĩa giao diện (như IDL). Hơn nữa cả

dịch vụ và server stubs đều được quản lý bởi một module gọi là Web Service

container, nhằm đảm bảo các yêu cầu HTTP tới một dịch vụ Web sẽ được chuyển tới

server stub tương ứng.

5.7. Các bước để gọi một dịch vụ Web

Giả sử ta đã định vị được dịch vụ Web mong muốn và đã sinh ra được đoạn

mã client stubs từ đặc tả WSDL của dịch vụ này. Tương tự chương trình bên phía

server cũng đã có server stubs.

34

Hình 15:Các bước gọi dịch vụ web

Page 48: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Mỗi khi cần gọi dịch vụ Web, ứng dụng client sẽ gọi client stub. Client stub sẽ tạo

ra một yêu cầu SOAP hợp lệ từ các tham số truyền tới từ ứng dụng. Đây còn gọi là

quá trình marshaling hay serializing.

Yêu cầu SOAP được đến server qua mạng sử dụng giao thức HTTP. Web Services

container nhận yêu cầu SOAP và chuyển tới server stub. Server stub sau đó sẽ

chuyển đổi yêu cầu SOAP này thành cái gì đó mà chương trình cài đặt dịch vụ

hiểu. Quá trình này gọi là unmarshaling hay deserializing.

chương trình cài đặt dịch vụ thực hiện yêu cầu được giao từ service stub. Kết quả

sẽ được trao cho server stub để chuyển đổi thành một đáp ứng SOAP.

Đáp ứng SOAP này được gửi trả về client stub qua mạng dùng giao thức HTTP.

Client stub nhận đáp ứng rồi chuyển đổi thành dữ liệu mà ứng dụng client có thể

hiểu.

Cuối cùng, ứng dụng nhận được kết quả từ lời gọi dịch vụ Web và tiếp tục công

việc của mình.

5.8. Tổng kết chương

Trong chương này ta đã tìm hiểu về công nghệ dịch vụ Web: kiến trúc, ưu

nhược điểm, các ứng dụng, cách thức truy cập dịch vụ. Qua đó thấy được lí do sử dụng

công nghệ dịch vụ Web để phát triển dịch vụ Grid.

35

Page 49: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 6.Cơ chế tài nguyên của dịch vụ Web – Web service

resource framework

Môi trường Grid bao gồm một tập các tài nguyên được chia sẻ. Các tài nguyên

có thể là các ứng dụng phần mềm, cơ sở dữ liệu, băng thông mạng, bản quyền phần

mền, không gian lưu trữ…Việc chia sẻ tài nguyên trong môi trường phân tán, không

đồng nhất đã nảy sinh các vấn đề trong việc quản lí và chia sẻ các tài nguyên này. Đó

là vấn đề trong cơ chế truy cập, phát hiện, xác thực và chứng thực tài nguyên.

Trong chương này sẽ giới thiệu một số khái niệm cơ bản trong việc quản lí

trạng thái tài nguyên trong bối cảnh của môi trường tính toán mạng lưới.

6.1. Quản lí trạng thái tài nguyên trong dịch vụ Grid

6.1.1. Dịch vụ Grid là gì

Có thể hiểu một dịch vụ Grid là một giao diện dịch vụ kết hợp với một mạng

luới tài nguyên. Tài nguyên và trạng thái của tài nguyên được điều khiển và quản lí

bằng các dịch vụ Grid trong một môi trường Grid. Một dịch vụ Grid có thể thao tác

với nhiều tài nguyên và ngược lại một tài nguyên cũng có thể được sử dụng bởi nhiều

dịch vụ Grid khác nhau.

Các tài nguyên có thể phải tương tác hay kết hợp với nhau tùy theo đòi hỏi của

yêu cầu. Hơn nữa các tài nguyên lại được lưu trữ trên một môi trường không đồng

nhất. Do đó đòi hỏi framework phải trừu tượng hóa chi tiết việc cài đặt cho một môi

trường cụ thể ra khỏi sự truyền thông thực sự giữa các dịch vụ Grid. Kiến trúc hướng

dịch vụ (Service Oriented Architechture - SOA) là một kiến trúc thỏa mãn yêu cầu

trên.

Tất cả các tài nguyên (vật lí hay logic) trong mạng tương thích với chuẩn

OGSA được mô hình như là các dịch vụ Grid. Các dịch vụ Grid xây dựng trên chuẩn

SOA thúc đẩy sự phát trển của công nghệ dịch vụ Web. Điều đó cho phép các dịch vụ

Grid sử dụng các khả năng của mô hình truyền thông dịch vụ Web, mô tả của dịch vụ,

và phát hiện dịch vụ. Các chuẩn của dịch vụ Web đã phát triển và cho phép các giao

tác với dịch vụ Web diễn ra an toàn và tin cậy. Lựa chọn công nghệ dịch vụ Web để

xây dựng các dịch vụ Grid tương thích với chuẩn OGSA đã thúc đẩy sự phát triển của

kiến trúc dịch vụ Web và các chuẩn của nó.

36

Page 50: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

6.1.2. Những yêu cầu của dịch vụ Grid theo chuẩn OGSA

Tất cả các dịch vụ Grid đều phải tuân theo đặc tả yêu cầu của OGSA để có thể

quản lí trạng thái của các tài nguyên phân tán một cách an toàn và tin cậy. Một số yêu

cầu chính mà mô hình dịch vụ OGSA đòi hỏi dịch vụ Grid tương thích phải cung cấp

là:

Khởi tạo tài nguyên: nghĩa là có thể khởi tạo các thể hiện của các tài nguyên gắn

với dịch vụ Grid theo một thao tác nào đó. Thể hiện có thể được tạo mới hoàn toàn

hoặc khởi tạo lại từ trạng thái đã được lưu trữ của tài nguyên đó.

Định danh và tham chiếu duy nhất: khi có một thể hiện của tài nguyên thì môi

trường Grid yêu cầu có một tham chiếu duy nhất trên mạng tham chiếu tới tài

nguyên và các thông tin để có thể tương tác với thể hiện đó thông qua dịch vụ Grid.

Quản lí vòng đời: quản lí vòng đời nhằm xác định thời gian hoạt động của tài

nguyên, thời gian đó có thể hết hạn sau một khoảng thời gian hay ngay lập tức.

Đăng kí và phát hiện dịch vụ: đây là một tập các thao tác liên quan tới khả năng tìm

kiếm thể hiện của dịch vụ Grid và các thông tin về thời gian triển khai, thời gian

chạy của chúng.

Thông báo: là cơ chế truyền thông không đồng bộ để thông báo cho các client đã

đăng kí về các sự kiện cụ thể nào đó ví dụ: sự kiện về vòng đời của tài nguyên, sự

kiện về sự thay đổi của các thuộc tính của tài nguyên…

Hiện nay có hai chuẩn để cài đặt dịch vụ Grid tương thích với chuẩn OGSA đang

tồn tại đó là

Cơ sở hạ tầng của dịch vụ Grid mở - Open Grid Service Infrastructure (OGSI)

Cơ chế tài nguyên của dịch vụ Web – Web service resource framework (WSRF).

Chuẩn OGSI ra đời sớm hơn và được cài đặt trong phiên bản thứ ba của

Globus Toolkit (GT3). Chuẩn WSRF ra đời muộn hơn và được cài đặt trong phiên bản

thứ tư của Globus Toolkit (GT4). Chuẩn WSRF đang dần thay thế chuẩn OGSI trong

việc cài đặt các dịch vụ Grid trên môi trường mạng lưới.

6.2. Chuẩn WSRF

Trong phần này sẽ trình bày một số khái niệm và cơ chế chính được đề cập

đến trong chuẩn WSRF.

37

Page 51: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

6.2.1. Khái niệm WS-Resource

WS-Resource là sự kết hợp giữa dịch vụ web và tài nguyên trạng thái, và có

thể được mô hình bằng công thức sau đây:

Web service + Stateful Resource = WS-Resource

Trong đó Stateful Resource (tài nguyên trạng thái) có các dữ liệu trạng thái

được mô tả bằng một tài liệu bằng ngôn ngữ XML, có một vòng đời xác định, được

biết và sử dụng bởi một hay nhiều dịch vụ web. Tài nguyên trạng thái có thể được thực

thi bằng nhiều cách khác nhau, có thể sử dụng tệp trong hệ thống tệp, các bản ghi

trong cơ sở dữ liệu, hoặc theo một cấu trúc dữ liệu riêng của ứng dụng.

Ví dụ: Hình dưới đây mô tả mối quan hệ giứa một dịch vụ dựng phim với tài

nguyên trạng thái của nó. Các thao tác mà dịch vụ cung cấp và các tài nguyên trạng

thái đều được mô tả trong tệp mô tả bằng ngôn ngữ WSDL.

Mỗi WS-Resource bao gồm một hoặc nhiều thuộc tính, giá trị của các thuộc

tính đó là trạng thái của WS-Resource, thay đổi giá trị của các thuộc tính là thay đổi

trạng thái của WS-Resource.

WSRF là một tập các đặc tả nhằm định ra một mô hình thông điệp chuẩn, hay

nói một cách khác đó là những cách để yêu cầu lấy hoặc cập nhật giá trị của một hay

nhiều thuộc tính của tài nguyên. Như vậy WSRF đã xác định một cách chung để làm

việc với WS-Resource: tương tác với các thuộc tính của WS-Resource, nhóm các WS-

Resource…

38

Hình 16:WS-Resource

Page 52: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

6.2.2. Các thành phần trong WSRF

WSRF bao gồm năm đặc tả:

WS-ResourceProperties (WSRF-RP)

WS-ResourceLifetime (WSRF-RL)

WS-ServiceGroup (WSRF-SG)

WS-Base Faults (WSRF-BF)

WS-RenewableReferences (WSRF-RR)

Sau đây là bảng tóm tắt các đặc tả trên

Tên đặc tả Mô tả

WS-ResourceProperties Mô tả các thuộc tính của WS-Resource, các các

thuộc tính này được khai báo trong tệp WSDL, mô

tả cách tương tác (lấy giá trị, thay đổi giá trị) với

các thuộc tính nà

y, mô tả cách để thay đổi, thêm, xóa thuộc tính của

một WS-Resource

WS-ResourceLifetime Định nghĩa xem một WS-Resource sẽ được hủy như

thế nào: được container hủy tự động sau một thời

39

Hình 17: Các thành phần WSRF

Page 53: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

gian, hay được chương trình client gọi lệnh hủy khi

chương trình client không cần đến WS-Resource

nữa.

WS-ServiceGroup Định nghĩa cách để tạo ra tập các dịch vụ Web

WS-Base Faults Định nghĩa cách xác định lỗi trong một ứng dụng

dựa trên WSRF

WS-Renewable

References

Chú thích rằng cần phải lấy tham chiếu mới khi

tham chiếu cũ kết thúc.

6.3. Tổng kết chương

Trong chương này đã trình bày vấn đề quản lí tài nguyên trạng thái trong dịch

vụ Grid. Và các đặc tả trong chuẩn WSRF nhằm phục vụ cho việc quản lí tài nguyên.

40

Page 54: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 7. An ninh trong mạng Grid

Một câu hỏi thường được đặt ra khi đề cập đến môi trường mạng lưới đó là

tính an toàn của mạng lưới đó. Trong chương này sẽ đề cập đến một số vấn đề, kĩ thuật

và giải pháp an ninh cần thiết để xây dựng một môi trường Grid mạnh và an toàn.

7.1. Các yêu cầu về an ninh trong mạng lưới

An ninh là một yêu cầu cơ bản trong thiết kế một mạng lưới. Các thành phần

an ninh cần thiết cơ bản đó là các cơ chế xác thực, chứng thực, bảo mật các trao đổi

giữa các máy tính trong mạng grid. Nếu thiếu đi chức năng đó sự toàn vẹn, bảo mật

của quá trình sử lí dữ liệu trong mạng lưới sẽ có nguy cơ rủi ro cao. Sau đây là một số

yêu cầu về an ninh trong mạng lưới.

Môi trường mạng lưới thường được các tổ chức ảo (VO) – Tổ chức ảo là một

nhóm động các cá nhân, các nhóm, các tổ chức chia sẻ tài nguyên với nhau - sử dụng

để kết hợp việc chia sẻ và quản lí tài nguyên. Một tổ chức ảo có thể bao gồm nhiều tổ

chức khác nhau vì vậy một ứng dụng mạng lưới có thể trải rộng trên nhiều phạm vi

hành chính. Mỗi một phạm vi này có thể có những yêu cầu công việc cũng như các

chính sách khác nhau. Như vậy cơ sở hạ tầng an ninh của mạng lưới phải thỏa mãn

những chính sách an ninh cục bộ của mỗi tổ chức cũng như các chính sách an ninh của

tổ chức ảo đề ra. Để đạt được điều đó, cơ sở hạ tầng an ninh mạng lưới phải có khả

năng cùng làm việc giữa các miền trong khi vẫn giữ được sự phân cách rõ ràng của các

cơ chế, chính sách an ninh của các tổ chức (cả tổ chức ảo và tổ chức thật). Do vậy các

thách thức về an ninh trong môi trường mạng lưới đó là:

- Khả năng tích hợp: cơ sở hạ tầng an ninh mạng lưới phải có khả năng tích hợp

được với các cơ sở hạ tầng an ninh đã tồn tại sẵn trên môi trường chủ, môi

trường nền. Trên cơ sở đó mở rộng và cung cấp các dịch vụ an ninh mới.

- Khả năng cùng làm việc: các dịch vụ mạng lưới có thể trải rộng trên nhiều

miền, môi trường chủ do đó cần phải có khả năng tương tác với nhau để cho

phép trao đổi thông điệp trong các miền cũng như cho phép mỗi thành viên xác

định chính sách an ninh được sử dụng trong các hội thoại an toàn, cung cấp cơ

chế để nhận biết một người dùng của miền này trong một miền khác.

41

Page 55: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

- Mối quan hệ tin cậy: một yêu cầu dịch vụ mạng lưới có thể trải rộng trên nhiều

miền an ninh. Do đó đòi hỏi phải thiết lập mối quan hệ tin cậy giữa các miền.

Do tính chất động của môi trường mạng lưới nên không thể thiết lập được mối

quan hệ tin cậy giữa các điểm cuối (end-to-end) trước khi mà ứng dụng được

chạy. Vấn đề thiết lập mối quan hệ tin cậy càng trở nên phức tạp với các dịch

vụ mạng lưới tạm thời.

Ở mức độ tổng thể các yêu cầu an ninh mạng lưới có thể được xác định như

sau:

- Xác thực (authentication): khả năng cung cấp một giao diện để có thể gắn vào

một cơ chế xác thực khác, đồng nghĩa với việc chuyển cơ chế xác thực.

- Ủy thác (delegation): khả năng cung cấp một cơ chế ủy thác các quyền truy cập

của một người dùng tới các dịch vụ trong khi vẫn đảm bảo các quyền truy cập

được ủy thác được giới hạn cho các nhiệm vụ được thực hiện trong sự giới hạn

của chính sách an ninh.

- Đăng nhập một lần (single logon): Khả năng một người dùng đã đăng nhập

không phải đăng nhập lại khi truy cập tới các tài nguyên mạng lưới khác.

- Thời gian tồn tại của chứng nhận người dùng (credentials) và gia hạn chứng

nhận: khả năng làm mới các chứng nhận của người dùng nếu thời gian hoàn

thành của một hoạt động của một ứng dụng nào đó lớn hơn thời gian tồn tại của

các chứng nhận người dùng đó.

- Chứng thực (authorization): khả năng kiểm soát sự truy cập tới các bộ phận của

mạng lưới dựa trên các chính sách về quyền hạn của người dùng.

- Riêng tư (privacy): cho phép người sử dụng, người cung cấp dịch vụ xác định

và thi hành các chính sách riêng tư.

- Bảo mật (confidentiality): khả năng bảo mật nội dung trên đường truyền và

trong các bộ phận của mạng lưới (lưới tương thích với chuẩn OGSA).

- Toàn vẹn thông tin (Message integrity): Đảm bảo rằng những thay đổi trái phép

nội dung thông tin có thể được xác định tại nơi nhận.

- Trao đổi chính sách (policy exchange): cho phép sự thỏa thuận về an ninh giữa

người dùng dịch vụ và người cung cấp dịch vụ dựa trên chính sách an ninh.

42

Page 56: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

- Bản ghi an toàn (Secure logging): là cơ sở cho việc thừa nhận và kiểm định cho

phép các dịch vụ đánh nhãn thời gian và ghi lại nhiều loại thông tin mà không

làm gián đoạn hay thay đổi thông tin của bên đối địch.

- Đảm bảo (assurance): là chất lượng của mức độ bảo đảm an ninh.

- Có thể điều khiển (manageability): yêu cầu này chủ yếu liên quan đến các vấn

đề về quả lí dịch vụ an ninh: quản lí nhận dạng, quản lí chính sách…

- Vượt qua tường lửa (firewall traversal): khả năng đi qua tường lửa mà không

phải thỏa hiệp với các chính sách điều khiển cục bộ của tường lửa.

- Bảo vệ cơ sở hạ tầng OGSA: bảo vệ các thành phần lõi của OGSA

Sơ đồ dưới đây cung cấp cái nhìn tổng thể các thành phần của một mô hình an

ninh mạng lưới để giải quyết các yêu cầu đề ra ở trên.

Hình 18: mô hình an ninh mạng lưới

7.2. Cơ sở hạ tầng an ninh của mạng lưới

Trong phần nãy sẽ trình bày những cơ chế cơ bản được sử dụng Cơ sở hạ tầng

an ninh mạng lưới – Grid Security Infrastructure (GSI) – được cung cấp bởi Globus

Toolkit.Và các dịch vụ an ninh mà GSI cung cấp.

43

Page 57: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

7.2.1. Truy cập vào mạng lưới

Để có thể thiết lập một môi trường mạng lưới sử dụng các thành phần của

GSI, ta cần tạo ra một tập các khóa cho mã hóa công khai, và yêu cầu chứng nhận từ

Certificate Authority (CA) và sao chép khóa công khai của CA. Hình sau đây mô tả

từng bước quá trình thiết lập truyền thông trong GSI.

- bước 1: sao chép khóa công khai của CA về máy sẽ cài đặt GSI

- bước 2: tạo khóa bí mật và yêu cầu chứng nhận

- bước 3: gửi yêu cầu chứng nhận cho CA (qua email hay qua một đường truyền

tin cậy khác)

- bước 4: CA sử dụng khóa riêng của mình để kí vào yêu cầu chứng nhận và gửi

lại chứng nhận đó.

Khi thủ tục đó kết thúc ta sẽ nhận được một chứng nhận số đã được kí bởi CA,

ta sẽ có ba tệp quan trọng trên máy cài Grid đó là:

- Khóa công khai của CA

- Khóa bí mật của máy cài Grid

- Chứng nhận số đối với máy cài Grid.

7.2.2. Xác thực và quyền hạn

Để có thể đảm bảo rằng đối tác trong phiên truyền thông trong mạng lưới là

đối tác tin cậy, ta có thể sử dụng chức năng xác thực của GSI. Sau khi ta đã được xác

thực có thể tài nguyên mạng lưới yêu cầu phải xác định các quyền truy cập. Khi đó ta

có thể sử dụng chức năng kiểm tra quyền của GSI. Sau đây ta sẽ mô tả các bước để xác

thực, kiểm tra quyền của một máy A (người dùng trên máy A) bởi một máy B trong

mạng lưới. Hầu hết các bước là để xác thực, trừ bước cuối cùng để kiểm tra quyền hạn.

- Bước 1: người dùng trên máy A hay một ứng dụng trên máy A gửi chứng nhận

của nó tới máy B.

44

Hình 19: Cơ chế bảo mật grid

Page 58: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

- Bước 2: máy B sẽ sử dụng khóa công khai của A để trích ra tiêu đề từ chứng

nhận được gửi ở bước 1

- Bước 3: máy B sinh ra một số ngẫu nhiên và gửi lại cho máy A

- Bước 4: máy A nhận được số ngẫu nhiên đó rồi sử dụng khóa riêng của mình để

mã hóa số nhận được và gửi kết quả lại cho B.

- Bước 5: máy B giải mã nhận được kết quả là một số, rồi kiểm tra số này với số

đã sinh ra ở bước 3. Nếu 2 số này là bằng nhau thì máy B đã biết rằng chứng

nhận mà nó nhận được đúng là của người dùng trên máy A. Vì chỉ có anh ta

mới có khóa bí mật của mình.

- Bước 6: chứng nhận đã được xác thực tại máy B, và tiêu đề của xác thực được

map tương ứng với một tên người dùng trên máy B. Tiêu đề ở dạng tên phân

biệt (distinguished name) giống như:

“/O=Grid/O=Globus/OU=hostA.grid.com/CN=name”. Tiều đề này được sử

dụng để xác định định danh của người dùng trong môi trường mạng lưới. Người

dùng được xác định từ tiêu đề sẽ được máy B kiểm tra quyền như một người

dùng trên máy B.

7.3. Tổng kết chương

Trong chương này đề cập đến vấn đề cơ sở hạ tầng an ninh trong mạng lưới,

các yêu cầu về an ninh trong mạng lưới. Và một cài đặt của cơ sở hạ tầng an ninh

trong môi trường mạng lưới - GSI được cài đặt trong Globus Toolkit.

45

Page 59: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 8.Các thành phần của Globus Toolkit 4.0

Bộ công cụ Globus Toolkit được phát triển bởi Globus Alliance

(http://www.globus.org) là phần mềm mã nguồn mở, một công cụ để xây dựng các hệ

thống và chương trình grid. Đã có rất nhiều công ty và tổ chức sử dụng công cụ

Globus Toolkit như là nền tảng và tiêu chuẩn cho việc phát triển công nghệ Grid

computing.

Hiện nay, phiên bản mới nhất của Globus Toolkit là 4.0. Bộ công cụ Globus

Toolkit không chỉ chứa các thành phần làm nền tảng cho một môi trường grid mà còn

bao gồm các công cụ hữu ích cho việc phát triển các chương trình grid. Chương này

mô tả các thành phần chính của Globus Toolkit 4.0.

8.1. Tổng quan về Globus Toolkit 4.0

Bộ công cụ Globus Toolkit 4.0 là tập hợp các thành phần mã nguồn mở, cung

cấp nền tảng cho môi trường phát triển và các ứng dụng Grid computing. Phiên bản 4

của bộ công cụ là phiên bản đầu tiêu hỗ trợ dịch vụ Web - WSRF (Phiên bản 3 hỗ trợ

OGSI, còn phiên bản 2 thì không hỗ trợ các chuẩn trên). Và được chia ra hai phần:

Một thành phần là nền tảng cho dịch vụ Web, một thành phần là nền tảng cho các dịch

vụ khác.

Globus Tookit 4.0 cung cấp các thành phần được chia theo các danh mục sau:

Các thành phần thường trực

Các thành phần bảo mật

Các thành phần quản lý dữ liệu

Các dịch vụ kiểm tra và khám phá thông tin

Các thành phần quản lý thi hành

8.2. Các thành phần thường trực

Globus Toolkit 4.0 chứa các thành phần thường trực. Thành phần thường trực

là thành phần bao gồm các thư viện và công cụ làm cốt lõi cho mạng Grid computing

và là nền tảng cho các thành phần khác. Các thành phần thường trực bao gồm: Java

WS Core, C WS Core, Python WS Core.

46

Page 60: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

8.2.1. Java WS Core

Java WS Core bao gồm các API và công cụ thi hành các chuẩn WSRF và WS-

Notification trên nền ngôn ngữ Java. Các thành phần đó trở thành nền tảng cho một số

dịch vụ trong Grid computing. Ngoài ra, Java WS Core còn cung cấp các thư viện và

công cụ cho việc phát triển các dịch vụ WSRF. Hình 6.2 thể hiện mối quan hệ giữa

Java WS Core và các dịch vụ khác.

Hình 20: Mối quan hệ giữa Java WS Core và các dịch vụ trong Grid computing

8.2.2. C WS Core

C WS Core bao gồm các API và công cụ thi hành các chuẩn WSRF và WS-

Notification trên nền ngôn ngữ C.

8.2.3. Python WS Core

Python WS Core bao gồm các API và công cụ thi hành các chuẩn WSRF và

WS-Notification trên nền ngôn ngữ Python. Thành phần này còn gọi là pyGridWare.

8.3. Các thành phần bảo mật

Bảo mật là vấn đề rất quan trọng trong môi trường Grid computing. Do đó,

Globus Toolkit 4.0 cung cấp một số cách thức bảo mật trong các thành phần bảo mật.

Phần này giới thiệu khái quát một số thành phần bảo mật trong GT4.

47

Page 61: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

8.3.1. Thẩm định và cấp phép WS

Trong truyền thông SOAP ở các dịch vụ Web, Globus Toolkit 4.0 mở rộng

khả năng bảo mật với các thông điệp (message) và truyền tải (transport) nhiều mức độ

bảo mật.

8.3.2. Thẩm định và cấp phép Pre-WS

Thẩm định và cấp phép Pre-WS bao gồm các API và các công cụ quản lý việc

thẩm định, cấp phép và chứng thực.

8.3.3. Dịch vụ cấp phép cộng đồng (Community Authorization Service - CAS)

CAS cung cấp việc điều khiển đến các quá trình truy nhập vào các tổ chức ảo.

Một CAS server cung cấp quyền hạn đối với các tài nguyên của tất cả các thành viên

trong cộng đồng. Hiện nay, CAS không hỗ trợ các dịch vụ Web, tuy nhiên, nó hỗ trợ

GridFTP.

8.3.4. Dịch vụ uỷ quyền

Dịch vụ uỷ quyền có khả năng uỷ quyền cho người có thẩm quyền sử dụng các

dịch vụ trong một host. Dịch vụ uỷ quyền cho phép một người có thẩm quyền có khả

năng sử dụng nhiều dịch vụ khác nhau.

8.3.5. SimpleCA

SimpleCA là một công cụ chứng thực quyền hạn đơn giản. SimpleCA là công

cụ được sử dụng phổ biến trong Grid computing. Chúng tôi sẽ sử dụng SimpleCA khi

xây dựng môi trường Grid computing.

8.3.6. GSI-OpenSSH

GSI-OpenSSH là phiên bản sửa của OpenSSH với việc thêm tính năng thẩm

định GSI. GSI-OpenSSH tạo một shell trên một hệ thống từ xa để chạy shell scripts

hoặc để tương tác với các câu lệnh shell, nó cung cho phép truyền các tệp giữa các hệ

thống mà không cần phải nhập mật khẩu và ID người dùng. Trước khi sử dụng GSI-

OpenSSH, cần xác lập proxy bằng lệnh grid-proxy-init.

48

Page 62: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

8.4. Các thành phần quản lý dữ liệu

Globus Toolkit 4.0 cung cấp một số công cụ cho phép quản lý dữ liệu trong

môi trường Grid computing. Phần này sẽ giới thiệu một số dịch vụ quản lý dữ liệu

trong GT4.

8.4.1. GridFTP

GridFTP là thành phần cung cấp khả năng bảo mật và đáng tin cậy trong việc

truyền tệp giữa các host trong mạng grid. GridFTP được mở rộng từ giao thức FTP,

thêm vào một số tính năng mới, bao gồm hỗ trợ việc thẩm định thông qua GSI. Một

trong những tính năng quan trọng của GridFTP là khả năng truyền có sự tham gia của

bên thứ ba.

Hình 21: Mô hình truyền tệp với sự tham gia của bên thứ ba trong GridFTP

Trong mô hình trên, tệp lưu trữ trong một server. Client có thể copy tệp này

sang một server khác. Client đóng vai trò như một bên thứ ba yêu cầu truyền tệp từ nốt

thứ nhất sang nốt thứ hai.

8.4.2. Truyền Tệp tin cậy (Reliable File Transfer - RFT)

RFT cung cấp một giao diện dịch vụ Web cho việc truyền tải các tệp. Hình

6.4.2 mô tả mô hình hoạt động của RFT và GridFTP.

49

Page 63: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 22: Mô hình hoạt động của RFT và GridFTP

Mô hình này được mô tả như sau:

Đầu tiên, Client yêu cầu truyền một tệp từ Server A sang Server B

RFT tiếp nhận yêu cầu từ Client dưới dạng thông điệp SOAP thông qua giao

thức HTTP và bắt đầu khởi tạo GridFTP.

RFT sử dụng một cơ sở dữ liệu để lưu trữ danh sách các tệp truyền và trạng thái

của chúng. Ngoài ra, RFT cũng lưu các yêu cầu truyền tệp đề phòng trường hợp

việc truyền tệp bị ngắt.

Cuối cùng RFT đóng vai trò như nốt thứ ba, yều cầu truyền tệp từ Server A

sang Server B thông qua GridFTP.

8.4.3. Dịch vụ mô hình hoá địa chỉ (Replica Location Service - RLS)

RLS cung cấp việc truy nhập thông tin đến các địa chỉ vật lý trong mạng thông

qua dữ liệu mô hình hoá địa chỉ. Nghĩa là RLS ánh xạ tất cả các địa chỉ vật lý trong

mạng vào một tệp logic. Việc truy nhập đến một địa chỉ vật lý nào đó được thông qua

tệp logic này.

8.4.4. Dịch vụ sao lưu dữ liệu (Data Replication Service - DRS)

DRS cung cấp một hệ thống để sao lưu các tệp trong mạng grid và đăng ký

chúng với RLS. DRS sử dụng RFT và GridFTP cho việc truyền tệp. DRS cũng sử

dụng RLS cho việc địa chỉ hoá và đăng ký sao lưu.

50

Page 64: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

8.4.5. Các dịch vụ kiểm tra và khám phá thông tin (Monitoring and Discovery

Services - MDS)

MDS là dịch vụ để tập hợp, phân tán, chỉ mục… các thông tin trạng thái của

các tài nguyên, dịch vụ và cấu hình hệ thống. GT4 cung cấp các thành phần WSRF và

WS-Notification trong MDS, còn gọi là MDS4. Các dịch vụ được khởi tạo khi khởi

động GT4 container được đăng ký thông qua MDS4. Dịch vụ tiêu biểu của MDS4 là

Dịch vụ chỉ mục (Index Service).

8.4.6. Index service

Index Service là thành phần trung tâm trong việc thực thi GT4 MDS. Mọi thể

hiện của Grid container đều chứa một Index Service mặc định (gọi là

DefaultIndexService). Index Service tương tác với các tài nguyên trên mạng. Index

Service có thể chọn lọc tài nguyên, dịch vụ, đánh chỉ mục các tài nguyên và dịch vụ đó

ở các nốt trên mạng Grid và tập hợp thông tin của chúng vào một nơi.

8.5. Các thành phần quản lý thi hành

Globus Tookit 4.0 cung cấp một số công cụ nhằm mục địch quản lý thi hành

trong mạng Grid. Công cụ tiêu biểu của thành phần này là WS GRAM.

8.5.1. WS GRAM

WS GRAM là một dịch vụ Grid cung cấp khả năng thực thi từ xa và quản lý

trạng thái các công việc. Khi một client yêu cầu công việc, yêu cầu đó được gửi đến

host ở dạng thông điệp SOAP và được quản lý bởi dịch vụ WS GRAM.WS GRAM trả

lại thông tin trạng thái của công việc sử dụng WS-Notification.

51

Page 65: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 9. Cài đặt và cấu hình Globus Toolkit 4.0

Chương này mô tả quá trình cài đặt và cấu hình Globus Toolkit 4.0. Chúng tôi

sẽ triển khai cài đặt Globus Toolkit trong mạng gồm 3 máy tính. Các vấn đề chính

trong chương này gồm có:

Download Globus Toolkit 4.0

Các gói tin của Globus Toolkit 4.0

Mô hình môi trường mạng Grid

Cài đặt Globus Toolkit 4.0

Cấu hình và thử nghiệm môi trường Grid

Gỡ bỏ Globus Toolkit 4.0

9.1. Download Globus Toolkit 4.0

Globus Toolkit 4.0 là phần mềm mã nguồn mở hỗ trợ nhiều hệ điều hành. Các

gói tin binary hỗ trợ môi trường Windows, Linux (SuSE Linux 9/8, Red Hat Linux 9,

Fedora Core 2/3 và Debian 3.1) và Solaris 9. Việc biên dịch GT4 từ các gói tin nguồn

có thể hỗ trợ thêm các hệ điều hành AIX và Mac OS X. Các thành phần phát triển trên

nền tảng Java như WSRF hoặc WS Java Core đều tương thích với các hệ điều hành hỗ

trợ Java, trong đó có Windows. Hiện nay, việc sử dụng hệ điều hành Linux để phát

triển môi trường Grid đang trở nên phổ biến. Vì vậy, chúng tôi sử dụng hệ điều hành

Fedora Core 3 để phát triển môi trường Grid. Các gói tin sử dụng là các gói tin binary.

Truy cập địa chỉ: http://www.globus.org/toolkit/downloads/4.0.0/ để download các gói

tin này.

Gói tin GT4 cho Fedora Core 3 là: gt4.0.0-ia32-fedora3-binary-installer.tar.gz

9.2. Mô hình môi trường mạng Grid

Chúng tôi sử dụng 3 máy tính để cài đặt môi trường mạng Grid.

52

Page 66: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 23: Mô hình mạng Grid

Các máy tính bao gồm:

CA: Đây là nơi chứng thực quyền hạn. Do đó, chúng tôi sử dụng SimpleCA có

sẵn trong gói tin GT4.

Host A, Host B: là các nốt mạng Grid. Chúng tôi cài đặt gói tin GT4 cho các

nốt này.

Host A và Host B sử dụng hai tên người dùng khác nhau là auser1 và buser1,

nhưng chúng cùng chia sẻ một ID người dùng chung là:

/O=Grid/O=Globus/OU=gridk47.com/CN=grid user 1

Bảng 7.2a mô tả các máy tính của mạng Grid.

Tên máy Tên host Chức năng Hệ điều hành Gói tin cài

đặt

CA ca.gridk47.com Chứng thực

quyền hạn

Fedora Core 3 Gói GT4

binary

Host A hosta.gridk47.com Nốt mạng

Grid

Fedora Core 3 Gói GT4

binary

Host B hostb.gridk47.com Nốt mạng

Grid

Fedora Core 3 Gói GT4

binary

Bảng 7.2a Các máy tính trong mạng Grid

Bảng 7.2b mô tả phiên bản các phần mềm sử dụng

Tên phần mềm Phiên bản Thư mục chủ

Globus Toolkit 4.0 4.0.0 /usr/local/globus-4.0.0

Java SDK 1.5 /usr/local/java

Apache Ant 1.6.3 /usr/local/ant

53

Page 67: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Bảng 7.2b: Phiên bản các phần mềm sử dụng

9.3. Cài đặt Globus Toolkit 4.0

Chương này mô tả thứ tự các bước để cài đặt Globus Toolkit 4.0

9.3.1. Cài đặt các phần mềm yêu cầu cho Globus Toolkit 4.0

Trước khi cài đặt Globus Toolkit 4.0, cần cài đặt các phần mềm sau:

Tên phần mềm Phiên bản

Java SDK 1.5

Apache Ant 1.6.3

Bảng 7.3a: Các phần mềm cho Globus Toolkit 4.0

a - Cài đặt Java SDK

Để cài đặt Java SDK

Lấy gói tin Java SDK, vào địa chỉ: http://java.sun.com

Cài đặt Java SDK:

[root@hosta]# rpm -ivh jdk-1_5_0_06-linux-i586-rpm.rpm

Để thiết lập biến môi trường cho Java SDK, mở tệp /etc/profile và thêm đoạn sau:

export JAVA_HOME=/usr/local/java

export PATH=$JAVA_HOME/bin:$PATH

Để biến môi trường hoạt động, đóng tệp /etc/profile và chạy lệnh:

[root@hosta]# . etc/profile

Để kiểm tra Java SDK đã được cài đặt thành công, dùng lệnh:

[root@hosta]# java --version

b - Cài đặt Apache Ant

Để cài đặt Apache Ant:

Lấy gói tin Apache Ant tài địa chỉ: http://ant.apache.org/

Bung tệp nén Apache Ant:

54

Page 68: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

[root@hosta]# tar xvzf apache-ant-1.6.3-bin.tar.gz -C /usr/local

Thiết lập biến môi trường cho Apache Ant, mở tệp /etc/profile và thêm đoạn sau:

export ANT_HOME=/usr/local/apache-ant-1.6.3

export PATH=$ANT_HOME/bin:$PATH

Để biến môi trường hoạt động, đóng tệp /etc/profile và chạy lệnh:

[root@hosta]# . etc/profile

Để kiểm tra Apache Ant đã cài đặt thành công, dùng lệnh:

[root@hosta]# ant --version

9.3.2. Cấu hình môi trường Linux cho Globus Toolkit 4.0

Trước khi cài đặt Globus Toolkit, cần cấu hình một số thứ trong môi trường

Fedora Core 3 đang sử dụng trên các máy tính trong mạng.

a-Thêm tài khoản người dùng

Trong Fedora, sử dụng lệnh: adduser để thêm một người dùng mới. Ví dụ:

adduser auser1 để thêm người dùng auser1. Bảng sau đây là những người dùng cần

thêm vào trong các máy tính trên mạng.

Tên host Tên người dùng

ca globus

hosta globus, auser1

hostb globus, buser1

Bảng 7.3b: Danh sách người dùng trên các máy tính

b- Thiết lập thời gian

Trong mạng Grid computing, việc đồng bộ hoá thời gian giữa các máy tính với

nhau là rất quan trọng. Nếu thời gian không được đồng bộ, khi dùng chứng thực GSI

sẽ xảy ra lỗi. Do đó, chúng tôi thiết lập time server là NTP cho môi trường Grid của

mình và thiết lập thời gian cho tất cả các máy tính trong hệ thống.

Để cấu hình NTP:

Trên máy tính CA làm NTP server, chỉnh sửa tệp: /etc/ntp.conf, bỏ comment 2 dòng

dưới đây bằng cách bỏ ký từ # đầu dòng:

55

Page 69: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

server 127.127.1.0 # local clock

driftfile /etc/ntp/drift

Thực hiện tương tự với 2 máy Host A và Host B:

server (địa chỉ IP của CA) # time server

driftfile /etc/ntp/drift

Trên tất cả các máy, cầu hình ntp deamon bằng cách dùng lệnh:

[root@hosta]# chkconfig ntpd -on

Bắt đầu chạy dịch vụ ntp

[root@hosta]# service ntpd start

Để kiểm tra thời gian đã được đồng bộ hay chưa, dùng lệnh ntpq. Nếu có dấu sao

(*) đằng trước tên host thì cấu hình NTP đã thành công:

[root@hosta]# ntpq -p

remote refid st t when poll reach delay offset jitter

==========================================

*ca.gridk47.com LOCAL(0) 6 u 516 1024 377 0.931 -2.258 0.262

c- Thiết lập tường lửa

Ở đây cúng tôi không thiết lập tường lửa. Nếu thiết lập tường lửa, cần phải

mở các cổng TCP sau đây để lắng nghe các dịch vụ và thành phần của Globus Toolkit.

Cổng TCP Các thành phần của GT4

2811 GridFTP

8080 Globus container (chế độ không bảo mật)

8443 Globus container (chế độ bảo mật)

Bảng 7.3c: Các cổng TCP cần mở khi thiết lập tường lửa

9.3.3. Cài đặt Globus Toolkit 4.0

Để cài đặt Globus Toolkit 4.0, chúng tôi sử dụng gói tin Binary cho Fedora

Core 3.

Lấy gói tin binary, vào địa chỉ:

56

Page 70: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

http://www.globus.org/toolkit/downloads/4.0.0/

Vào người dùng globus, bung tệp nén binary:

[globus@hosta]$ tar xvzf gt4.0.0-ia32-fedora3-binary-installer.tar.gz \

-C /tmp

Thiết lập biến môi trường cho thư mục chứa Globus:

[globus@hosta]$ export GLOBUS_LOCATION=/usr/local/globus-4.0.0

Thay đổi quyền hạn của thư mục này cho người dùng globus:

[globus@hosta]$ su

Password:

[root@hosta]# mkdir $GLOBUS_LOCATION

[root@hosta]# chown globus:globus $GLOBUS_LOCATION

[root@hosta]# exit

exit

[globus@hosta]$

Cấu hình và cài đặt Globus Toolkit 4.0, mô tả qua các bước sau:

[globus@hosta]$ cd /tmp/gt4.0.0-ia32-fedora3-binary-installer

[globus@hosta]$ ./configure --prefix=$GLOBUS_LOCATION

checking for javac... /usr/local/java/j2sdk1.5.0/bin/javac

checking for ant... /usr/local/apache-ant-1.6.3/bin/ant

configure: creating ./config.status

config.status: creating Makefile

[globus@hosta]$ make 2>&1 | tee build.log

cd gpt-3.2autotools2004 && OBJECT_MODE=32 ./build_gpt

build_gpt ====> installing GPT into /usr/local/globus-4.0.0

... (Bỏ qua thông tin)

[globus@hosta]$ make install

ln -s /usr/local/globus-4.0.0/etc/gpt/packages

57

Page 71: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

/usr/local/globus-4.0.0/etc/globus_packages

/usr/local/globus-4.0.0/sbin/gpt-postinstall

...(Bỏ qua thông tin)

config.status: creating fork.pm

..Done

9.4. Cấu hình và thử nghiệm môi trường Grid

Sau khi cài đặt xong Globus Toolkit, cần phải cấu hình môi trường grid. Để

cấu hình môi trường grid, cần cấu hình các thành phần sau:

Cấu hình các biến môi trường

Cấu hình bảo mật

Cấu hình Java WS Core

Cấu hình và kiểm tra GridFTP

9.4.1. Cấu hình các biến môi trường

Để tất cả các người dùng đều có thể sử dụng các biến môi trường của Grid.

Chẳng hạn: GLOBUS_LOCATION, mở tệp /etc/profile và thêm đoạn:

export GLOBUS_LOCATION=/usr/local/globus-4.0.0

source $GLOBUS_LOCATION/etc/globus-user-env.sh

source $GLOBUS_LOCATION/etc/globus-devel-env.sh

9.4.2. Cấu hình bảo mật

Chúng tôi sử dụng SimpleCA để cài đặt bảo mật. SimpleCA là thành phần

được tích hợp trong Globus Toolkit 4.0.

a- Cài đặt các gói tin CA

Vào tài khoản người dùng globus tại máy CA

Để cài đặt simpleCA, dùng lệnh setup-simple-ca và thực hiện các bước:

[globus@ca]$ $GLOBUS_LOCATION/setup/globus/setup-simple-ca

WARNING: GPT_LOCATION not set, assuming:

GPT_LOCATION=/usr/local/globus-4.0.0

58

Page 72: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

C e r t i f i c a t e A u t h o r i t y S e t u p

This script will setup a Certificate Authority for signing Globus users

certificates. It will also generate a simple CA package that can be

distributed to the users of the CA.

The CA information about the certificates it distributes will be kept in:

/home/globus/.globus/simpleCA/

/usr/local/globus-4.0.0/setup/globus/setup-simple-ca: line 250: test: res:

integer expression expected

The unique subject name for this CA is:

cn=Globus Simple CA, ou=simpleCA-ca.gridk47.com, ou=GlobusTest, o=Grid

Do you want to keep this as the CA subject (y/n) [y]: y

Enter the email of the CA (this is the email where certificate requests will be

sent to be signed by the CA): [email protected]

The CA certificate has an expiration date. Keep in mind that once the CA

certificate has expired, all the certificates signed by that CA become invalid.

A CA should regenerate the CA certificate and start re-issuing ca-setup

packages before the actual CA certificate expires. This can be done by

re-running this setup script. Enter the number of DAYS the CA certificate

should last before it expires.

[default: 5 years (1825 days)]: (type the number of days)1825

Enter PEM pass phrase: (nhập mật khẩu chứng thực)

Verifying - Enter PEM pass phrase: (nhập mật khẩu chứng thực)

... (Bỏ qua thông tin)

setup-ssl-utils: Complete

b- Thiết lập bảo mật cho các nốt mạng

Sau khi cài đặt simpleCA, một gói tin được tạo ra để cấu hình bảo mật cho các

nốt mạng khác. Sao các gói tin này vào mỗi nốt mạng.

59

Page 73: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Vào tài khoản globus trên các máy Host A và Host B, sao chép gói tin tại máy CA.

[globus@hosta]$ scp globus@ca:/home/globus/.globus/simpleCA \

/globus_simple_ca_(ca_hash)_setup-0.18.tar.gz .

[globus@hosta]$ $GLOBUS_LOCATION/sbin/gpt-build \

globus_simple_ca_(ca_hash)_setup-0.18.tar.gz gcc32dbg

[globus@hosta]$ $GLOBUS_LOCATION/sbin/gpt-postinstall

Vào tài khoản root, cấu hình CA cho mỗi nốt mạng. Sau khi cấu hình, thư mục

/etc/grid-security được tạo ra

[root@hosta]# $GLOBUS_LOCATION/setup\

/globus_simple_ca_[ca_hash]_setup/setup-gsi -default

c- Đăng ký và xác nhận chứng thực host

Mỗi host khi tham gia mạng grid đều phải đăng ký chứng thực và được CA

xác nhận chứng thực. Ví dụ để đăng ký chứng thực cho Host A

Vào tài khoản root, yêu cầu đăng ký chức thực với tên host là hosta

[root@hosta]# grid-cert-request -host hosta

Để xác nhận chứng thực

Chép tệp /etc/grid-security/hostcert_request.pem được tạo ra khi đang ký chứng

thực tại Host A vào máy CA.

Trong máy Host A, vào tài khoản globus, xác nhận chứng thực bằng lệnh: grid-ca-

sign

[globus@ca]$ grid-ca-sign -in hostcert_request.pem -out hostcert.pem

To sign the request

please enter the password for the CA key: (nhập mật khẩu chứng thực)

The new signed certificate is at:

/home/globus/.globus/simpleCA//newcerts/01.pem

Chép đè tệp hostcert.pem đè lên tệp có sẵn trong thư mục /etc/grid-security tại Host

A

d- Đăng ký và xác nhận chứng thực người dùng

60

Page 74: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Tương tự như host, mỗi người dùng khi tham gia vào mạng Grid đều phải

đăng ký chứng thực và được xác nhận chứng thực người dùng. Ví dụ để đăng ký và

xác nhận chứng thực với người dùng auser1 tại Host A

Để đăng ký chứng thực:

[auser1@hosta]$ grid-cert-request

Enter your name, e.g., John Smith: grid user 1

A certificate request and private key is being created.

You will be asked to enter a PEM pass phrase.

This pass phrase is akin to your account password,and is used to protect your

key file.

If you forget your pass phrase, you will need to obtain a new certificate.

Generating a 1024 bit RSA private key

.....................................++++++

...++++++

writing new private key to '/home/auser1/.globus/userkey.pem'

Enter PEM pass phrase: (nhập mật khẩu chứng thực)

Verifying - Enter PEM pass phrase: (nhập lại mật khẩu chứng thực)

...

Để xác nhận chứng thực người dùng

Chép tệp /home/auser1/.globus/usercert_request.pem từ máy Host A sang máy CA.

Tại máy CA, vào tài khoản globus, xác nhận chứng thực bằng cách dùng lệnh grid-

ca-sign

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

To sign the request

please enter the password for the CA key:

The new signed certificate is at:

/home/globus/.globus/simpleCA//newcerts/02.pem

61

Page 75: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chép tệp usercert.pem đè lên tệp đã có sẵn tại thư mục /home/auser1/.globus/

ở Host A.

Để kiểm tra người dùng đã được chứng thực, vào tài khoản auser1 và dùng lệnh:

grid-proxy-init -debug -verify

[auser1@hosta]$ grid-proxy-init -debug -verify

User Cert File: /home/auser1/.globus/usercert.pem

User Key File: /home/auser1/.globus/userkey.pem

Trusted CA Cert Dir: /etc/grid-security/certificates

Output File: /tmp/x509up_u511

Your identity:

/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/OU=gridk47.com/

CN=grid

user 1

Enter GRID pass phrase for this identity:

Creating proxy .........++++++++++++

.................++++++++++++

Done

Proxy Verify OK.

e- Ánh xạ người dùng local với người dùng grid

Globus Toolkit 4.0 yêu cầu ánh xạ giữa người dùng được xác thực grid với

người dùng local.

Để lấy tên người dùng được xác thực grid, dùng lệnh grid-cert-request.

[auser1@hosta]$ grid-cert-info -subject -f /home/auser1/.globus/usercert.pem

/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/OU=gridk47.com/

CN=grid user 1

Vào tài khoản root, ánh xạ tên người dùng này với tên người dùng local, dùng lệnh:

grid-mapfile-add-entry

[root@hosta]# grid-mapfile-add-entry -dn \

62

Page 76: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

"/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/

OU=gridk47.com/CN=grid user 1" -ln auser1

Modifying /etc/grid-security/grid-mapfile ...

/etc/grid-security/grid-mapfile does not exist... Attempting to create

/etc/grid-security/grid-mapfile

New entry:

"/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/

OU=gridk47.com/CN=grid user 1" auser1

(1) entry added

Để xem thông tin người dùng được ánh xạ, mở tệp /etc/grid-security/grid-mapfile

"/O=Grid/OU=GlobusTest/OU=simpleCA-ca.gridk47.com/OU=gridk47.com/

CN=grid user 1" auser1

Để kiểm tra tệp ánh xạ, dùng lệnh: grid-mapfile-check-consistency

[root@hosta]# grid-mapfile-check-consistency

9.4.3. Cấu hình Java WS Core

Để kiểm tra Java WS Core đã được cài đặt thành công, thực hiện như sau:

Vào tài khoản globus, thực hiện lệnh:

globus-start-container

hoặc

globus-start-container –nosec

nếu chạy ở chế độ không bảo mật.

Sau khi tiến trình hoàn thành, xuất hiện thông điệp như sau:

...

Starting SOAP server at: http://192.168.1.103:8080/wsrf/services/With the

following services:

[1]: http://192.168.1.103:8080/wsrf/services/TriggerFactoryService

[2]: http://192.168.1.103:8080/wsrf/services/DelegationTestService

63

Page 77: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

... (Bỏ qua thông tin)

[51]: http://192.168.1.103:8080/wsrf/services/ManagedJobFactoryService

...

9.4.4. Cấu hình và kiểm tra GridFTP

Phần này mô tả việc cài đặt và thử nghiệm với GridFTP

a- Cài đặt GridFTP

Để cài đặt GridFTP, gán dịch vụ GridFTP với tên gsiftp và cổng TCP là 2811 bằng

cách mở tệp /etc/services và thêm dòng:

gsiftp 2811/tcp # GridFTP

Tạo tệp /etc/xinetd.d/gsiftp với nội dung sau:

service gsiftp

{

instances = 100

socket_type = stream

wait = no

user = root

env += GLOBUS_LOCATION=/usr/local/globus-4.0.0

env += LD_LIBRARY_PATH=/usr/local/globus-4.0.0/lib

server = /usr/local/globus-4.0.0/sbin/globus-gridftp-server

server_args = -i

log_on_success += DURATION

nice = 10

disable = no

}

Khởi động lại xinetd daemon:

[root@hosta]# service xinetd restart

Stopping xinetd: [ OK ]

64

Page 78: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Starting xinetd: [ OK ]

b- Thử nghiệm GridFTP

Tiến hành các bước thử nghiệp GridFTP

Vào tài khoản người dùng đã được chứng thực quyền hạn bởi máy CA. Ví dụ:

auser1

Dùng lệnh: grid-proxy-init để khởi tạo proxy

Dùng lệnh globus-url-copy <URL nguồn> <URL đích> để kiểm tra hoạt động của

GridFTP

9.5. Gỡ bỏ Globus Toolkit 4.0

Phần này hướng dẫn gỡ bỏ bộ công cụ Globus Toolkit 4.0. Để thực hiện gỡ

bỏ, thực hiện các bước sau:

Đóng WS Core nếu đang chạy

Vào tài khoản root, xoá các thư mục chứa globus tookit, grid security và apache ant.

[root@hosta]# rm -rf /usr/local/globus-4.0.0/

[root@hosta]# rm -rf /etc/grid-security/

[root@hosta]# rm -rf /usr/apache-ant-1.6.3/

Xóa các biến môi trường đã khởi tạo trong tệp /etc/profile

Xóa dịch vụ GridFTP bằng cách xóa dòng: gsiftp 2811/tcp trong tệp: /etc/services

Xóa GridFTP daemon bằng việc thực hiện lệnh:

[root@hosta]# rm /etc/xinetd.d/gsiftp

[root@hosta]# service xinetd restart

Stopping xinetd: [ OK ]

Starting xinetd: [ OK ]

Xóa tài khoản người dùng globus

Xóa Java SDK

65

Page 79: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 10. Các bước lập trình một chương trình Grid

Chương này, chúng tôi sẽ lấy một chương trình có sẵn, rất đơn giản, đó là

chương trình Math Service, để mô tả các bước lập trình một dịch vụ Grid trên Grid

Computing. Chương trình được viết trên nền ngôn ngữ Java.

10.1. Giới thiệu sơ lược về chương trình Math Service

Math Service là một dịch vụ Web đơn giản có trạng thái, sử dụng WSRF để

lưu trữ các trạng thái thông tin. Nó cho phép người dùng thực hiện các phép toán:

Cộng

Trừ

Do đó, Math Service sẽ có các thuộc tính tài nguyên (resource properties, viết

tắt là RPs):

Giá trị (integer)

Phép toán cuối (string)

Ta cũng thêm một phép toán "Get Value" để truy cập vào giá trị RP. Logic của

Math Service rất đơn giản. Khi một tài nguyên mới được tạo ra, mọi "giá trị" RP đều

được khởi tạo bằng 0, và "phép toán cuối" RP được khởi tạo là "NONE". Các phép

toán cộng và trừ chỉ cần một tham số nguyên. Tham số này được cộng/trừ với "giá trị"

RP, và theo đó "phép toán cuối" RP được thay đổi bằng "ADDITION" hoặc

"SUBTRACTION". Ngoài ra, các phép toán cộng/ trừ không trả lại giá trị.

10.2. Các bước lập trình chương trình Math Service

Đối với chương trình Math Service nói riêng và một chương trình dịch vụ Grid

nói chung, nhìn chung có 5 bước lập trình. Các bước gồm có:

Định nghĩa giao diện dịch vụ. Sử dụng WSDL

Thực thi dịch vụ. Sử dụng Java

Định nghĩa các tham số của việc triển khai. Sử dụng WSDD và JNDI

Biên dịch và tạo tệp GAR. Sử dụng Ant

Triển khai dịch vụ. Sử dụng GT4

66

Page 80: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Trong phần này, chung tôi sẽ lần lượt mô tả các bước nêu trên

10.2.1. Bước 1: Định nghĩa giao diện dịch vụ

Bước đầu tiên để viết một dịch vụ Grid là định nghĩa giao diện dịch vụ. Một

dịch vụ Grid có nhiều người dùng tương tác. Mỗi người dùng tương tác với dịch vụ

bằng cách gửi yêu cầu. Dịch vụ tiếp nhận yêu cầu người dùng, xử lý yêu cầu và trả lại

đáp ứng yêu cầu của người dùng đó. Giao diện dịch vụ để xác định những chức năng

mà dịch vụ có thể cung cấp cho người dùng. Trong chương trình Math Service, giao

diện dịch vụ là những phép toán mà người dùng có thể yêu cầu đến dịch vụ. Theo mô

tả bài toán ở trên, giao diện dịch vụ của chương trình Math Service gồm 3 phép toán:

cộng, trừ và lấy giá trị. Giao diện dịch vụ còn gọi là port type (được viết là portType).

Một giao diện dịch vụ Web cũng như dịch vụ Grid được viết trong tệp dưới

dạng .wsdl. Đây là tệp mô tả giao diện dịch vụ Web/Grid. Có 2 cách để viết tệp mô tả

này:

Cách 1: Định nghĩa giao diện bằng tệp Java, sau đó chuyển đổi tệp Java sang tệp wsdl.

Giao diện dịch vụ Math Service viết bằng Java như sau:

public interface Math

{

public void add(int a);

public void subtract(int a);

public int getValueRP();

}

Cách 2: Viết trực tiếp một tệp wsdl. Tệp mô tả giao diện wsdl có các thành phần sau:

Phần HEADER: Đầy là phần định nghĩa tên, đường dẫn và namespace của dịch vụ

Phần TYPES: Phần này định nghĩa các biến, kiểu biến và các thuộc tính tài nguyên.

Phần MESSAGES: Là phần định nghĩa các thông điệp mà người dùng và dịch vụ

tương tác với nhau

Phần PORTTYPE: Là phần định nghĩa các phép toán mà người dùng và dịch vụ

tương tác với nhau.

Tệp định nghĩa giao diện của chương trình Math Service đầy đủ như sau:

67

Page 81: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

<?xml version="1.0" encoding="UTF-8"?>

<definitions name="MathService"

targetNamespace="http://www.globus.org/namespaces/examples/core/MathService_instance"xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://www.globus.org/namespaces/examples/core/MathService_instance"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd"

xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl"

xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl"

location="../../wsrf/properties/WS-ResourceProperties.wsdl" />

<!—

T Y P E S

-->

<types>

<xsd:schema

targetNamespace="http://www.globus.org/namespaces/examples/core/MathService_instance"

xmlns:tns=http://www.globus.org/namespaces/examples/core/MathService_instance

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<!-- REQUESTS AND RESPONSES -->

<xsd:element name="add" type="xsd:int"/>

<xsd:element name="addResponse">

<xsd:complexType/>

</xsd:element>

<xsd:element name="subtract" type="xsd:int"/>

<xsd:element name="subtractResponse">

<xsd:complexType/>

</xsd:element>

<xsd:element name="getValueRP">

<xsd:complexType/>

</xsd:element>

<xsd:element name="getValueRPResponse" type="xsd:int"/>

<!-- RESOURCE PROPERTIES -->

68

Page 82: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

<xsd:element name="Value" type="xsd:int"/>

<xsd:element name="LastOp" type="xsd:string"/>

<xsd:element name="MathResourceProperties">

<xsd:complexType>

<xsd:sequence>

<xsd:element ref="tns:Value" minOccurs="1" maxOccurs="1"/>

<xsd:element ref="tns:LastOp" minOccurs="1" maxOccurs="1"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

</types>

<!—

M E S S A G E S

-->

<message name="AddInputMessage">

<part name="parameters" element="tns:add"/>

</message>

<message name="AddOutputMessage">

<part name="parameters" element="tns:addResponse"/>

</message>

<message name="SubtractInputMessage">

<part name="parameters" element="tns:subtract"/>

</message>

<message name="SubtractOutputMessage">

<part name="parameters" element="tns:subtractResponse"/>

</message>

<message name="GetValueRPInputMessage">

<part name="parameters" element="tns:getValueRP"/>

</message>

<message name="GetValueRPOutputMessage">

<part name="parameters" element="tns:getValueRPResponse"/>

</message>

69

Page 83: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

<!—

P O R T T Y P E

-->

<portType name="MathPortType"

wsdlpp:extends="wsrpw:GetResourceProperty"

wsrp:ResourceProperties="tns:MathResourceProperties">

<operation name="add">

<input message="tns:AddInputMessage"/>

<output message="tns:AddOutputMessage"/>

</operation>

<operation name="subtract">

<input message="tns:SubtractInputMessage"/>

<output message="tns:SubtractOutputMessage"/>

</operation>

<operation name="getValueRP">

<input message="tns:GetValueRPInputMessage"/>

<output message="tns:GetValueRPOutputMessage"/>

</operation>

</portType>

</definitions>

10.2.2. Bước 2: Thực thi dịch vụ.

Trong khi bước định nghĩa giao diện cho biết dịch vụ làm những cài gì? thì ở

bước này – thực thi dịch vụ cho biết dịch vụ làm như thế nào? Sau đây là các thành

phần của bước thực thi dịch vụ

a- Thành phần Qnames

Trong dịch vụ Grid, QName là một tên bao gồm tên của namespace và tên

local. Ví dụ QName của Value RP là:

{http://www.globus.org/namespaces/examples/core/

MathService_instance}Value

Sử dụng lớp MathQNames để định nghĩa rút gọn QName.

70

Page 84: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

package org.globus.examples.services.core.first.impl;

import javax.xml.namespace.QName;

public interface MathQNames {

public static final String NS = "http://www.globus.org/namespaces/\

examples/core/MathService_instance";

public static final QName RP_VALUE = new QName(NS, "Value");

public static final QName RP_LASTOP = new QName(NS, "LastOp");

public static final QName RESOURCE_PROPERTIES = new

QName(NS,"MathResourceProperties");

}

b- Thực thi dịch vụ

Lớp MathService để thực thi dịch vụ:

public class MathService implements Resource, ResourceProperties{

}

MathService thực thi 2 giao diện là Resource (mô tả tài nguyên dịch vụ Grid)

và ResourceProperties (mô tả các thuộc tính tài nguyên dịch vụ Grid).

Tài nguyên dịch vụ gồm 2 thành phần: Value: kiểu xsd:int và LastOp: kiểu

xsd:string.

/* Resource properties */

private int value;

private String lastOp;

Các phép toán: lấy giá trị và đặt giá trị được thực thi như sau:

/* Get/Setters for the RPs */

public int getValue() {

return value;

}

public void setValue(int value) {

this.value = value;

}

public String getLastOp() {

return lastOp;

71

Page 85: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

}

public void setLastOp(String lastOp) {

this.lastOp = lastOp;

}

Các giá trị thuộc tính của tài nguyên dược khởi tạo trong

constructor của lớp MathService:

/* Constructor. Initializes RPs */

public MathService() throws RemoteException {

this.propSet = new SimpleResourcePropertySet(

MathQNames.RESOURCE_PROPERTIES);

try { /* Initialize the RP's */

ResourceProperty valueRP = new ReflectionResourceProperty(

MathQNames.RP_VALUE, "Value", this);

this.propSet.add(valueRP);

setValue(0);

ResourceProperty lastOpRP = new ReflectionResourceProperty(

MathQNames.RP_LASTOP, "LastOp", this);

this.propSet.add(lastOpRP);

setLastOp("NONE");

} catch (Exception e) {

throw new RuntimeException(e.getMessage());

}

}

Hàm add() và getValueRP() thực thi các phép toán cộng và lấy giá trị:

public AddResponse add(int a) throws RemoteException {

value += a;

lastOp = "ADDITION";

return new AddResponse();

}

public int getValueRP(GetValueRP params) throws RemoteException {

return value;

}

72

Page 86: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

10.2.3.Bước 3: Định nghĩa việc triển khai dịch vụ.

Hai bước quan trọng để lập trình một dịch vụ Grid đã được tiến hành bao gồm

định nghĩa và thực thi dịch vụ. Vậy làm thế nào để các Client có thể kết nối với dịch

vụ này? Bước 3 sẽ thực hiện công việc đó. Định nghĩa việc triển khai dịch vụ nói cho

Grid container (là thành phần chứa các dịch vụ Grid, có trong bộ công cụ Globus

Toolkit 4.0) biết được làm thế nào để quảng bá dịch vụ Math Service này. Chẳng hạn

như nói cho Grid container biết được địa chỉ URI của dịch vụ. Tệp định nghĩa việc

triển khai như sau:

<?xml version="1.0" encoding="UTF-8"?>

<deployment name="defaultServerConfig"

xmlns="http://xml.apache.org/axis/wsdd/"

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<service name="examples/core/first/MathService" provider="Handler" use="literal"

style="document">

<parameter name="className"

value="org.globus.examples.services.core.first.impl.MathService"/>

<wsdlFile>share/schema/examples/MathService_instance/Math_service.wsdl</wsdlFile>

<parameter name="allowedMethods" value="*"/>

<parameter name="handlerClass" value="org.globus.axis.providers.RPCProvider"/>

<parameter name="scope" value="Application"/>

<parameter name="providers" value="GetRPProvider"/>

<parameter name="loadOnStartup" value="true"/>

</service>

</deployment>

Các thành phần được định nghĩa bao gồm:

service name: xác định địa chỉ URI của dịch vụ trong Grid container. Ở đây là:

http://localhost:8080/wsrf/services/examples/core/first/MathService

className: xác định lớp thực thi giao diện dịch vụ

tệp WSDL: xác định tệp định nghĩa giao diện dịch vụ wsdl

Load on startup: cho phép dịch vụ được nạp khi khởi động Grid container

73

Page 87: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

10.2.4.Bước 4: Biên dịch và tạo tệp GAR

Ở các bước trên, mỗi khi hoàn thành mỗi bước lại tạo ra mỗi loại thành phần

riêng rẽ. Vậy làm thế nào để triển khai được các thành phần đó vào trong Grid

container cũng như biên dịch các tệp thực thi Java. Bước này sẽ thực hiện việc tạo tệp

nén GAR chứa các thành phần trên. Chức năng của tệp GAR:

Liên kết các tệp wsdl

Khởi tạo và biên dịch các lớp từ các thành phần trong tệp wsdl

Biên dịch các tệp thực thi Java

Tổ chức các tệp lại với nhau trong một cấu trúc đường dẫn xác định.

Công cụ Ant (có trong phần mềm Apache Ant đã cài đặt) có chức năng biên dịch và

tạo tệp GAR từ các thành phần ở trên. Mô hình sau đây mô tả chức năng đó của Ant.

Hình 24: Chức năng tạo tệp GAR của công cụ Ant

74

Page 88: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Để tạo tệp GAR, ta dùng script globus-build-service có trong bộ Globus

Service Build Tools (GSBT) tại http://gsbt.sourceforge.net/ . Cấu trúc dòng lệnh để tạo

tệp GAR như sau:

./globus-build-service.sh -d <đường dẫn tới dịch vụ> -s <tệp WSDL của dịch vụ>

Đối với Math Service, dòng lệnh như sau:

./globus-build-service.sh \

-d org/globus/examples/services/core/first/ \

-s schema/examples/MathService_instance/Math.wsdl

10.2.5.Bước 5: Triển khai dịch vụ

Đây là bước để triển khai dịch vụ trong Grid container. Việc triển khai dịch vụ

vào trong Grid container tương đương với việc bung tệp nén GAR được tạo ra ở bước

4 và đưa các thành phần thích hợp vào Grid container. Thực hiện dòng lệnh sau:

globus-deploy-gar $EXAMPLES_DIR/org_globus_examples_services_core_first.gar

Để xóa bỏ dịch vụ trong Grid container, dùng lệnh globus-undeploy-gar:

globus-undeploy-gar org_globus_examples_services_core_first

10.3. Chạy thử chương trình Math Service

Sau khi đã triển khai dịch vụ Math Service vào Grid container, khởi động Grid

container bằng lệnh: globus-start-container, dịch vụ sẽ bắt đầu hoạt động. Nhận biết

dịch vụ đã hoạt động bằng địa chỉ URI của dịch vụ:

http://127.0.0.1:8080/wsrf/services/examples/core/first/MathService

Để kiểm tra hoạt động của dịch vụ, ta viết một Client đơn giản, gửi yêu cầu

đến dịch vụ Math Service thực hiện các phép toán: cộng, trừ và lấy giá trị. Lớp Client

được viết như sau:

75

Page 89: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

public class Client {

public static void main(String[] args) {

MathServiceAddressingLocator locator = new MathServiceAddressingLocator();

try {

String serviceURI=args[0];

EndpointReferenceType endpoint = new EndpointReferenceType();

endpoint.setAddress(new Address(serviceURI));

MathPortType math = locator.getMathPortTypePort(endpoint);

math.add(10); // Perform an addition

math.add(5); // Perform another addition

// Access value

System.out.println("Current value:" + math.getValue(new GetValueRP()));

// Perform a subtraction

math.subtract(5);

// Access value

System.out.println("Current value:" + math.getValue(new GetValueRP()));

} catch (Exception e) {

e.printStackTrace();

}

}

}

Các đối tượng chính:

EndpointReferenceType: là đối tượng tham chiếu đến địa chỉ của tài nguyên dịch

vụ.

MathPortType: là đối tượng tham chiếu đến giao diện (gọi là portType) của dịch vụ.

Chương trình trên sẽ thực hiện phép cộng 10, cộng 5, in ra kết quả, sau đó trừ

5 và in ra kết quả. Biên dịch và chạy tệp Client, ta được kết quả:

Current value: 15

Current value: 10

Chạy chương trình lần thứ 2, ta được kết quả:

Current value: 25

Current value: 20

76

Page 90: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chứng tỏ kết quả tính toán ở lần thực hiện cuối cùng đều được lưu vào tài nguyên của

dịch vụ Grid.

77

Page 91: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Chương 11. Tự xây dựng một dịch vụ Grid: Bài toán số

nguyên tố

Ở chương 10, chúng tôi đã mô tả các bước lập trình cũng như chạy thử nghiệm

một chương trình có sẵn là: Math Service. Tuy nhiên, Math Serivce là một chương

trình mang tính thử nghiệm, không có ứng dụng gì trong thực tiễn. Trong chương này,

chúng tôi sẽ phát triển chương trình riêng của mình, phức tạp hơn và có ý nghĩa ứng

dụng trong thực tiễn, đó là chương trình Số nguyên tố.

Số nguyên tố là số nguyên lớn hơn 1, chỉ chia hết cho 1 và chính nó. Số nguyên tố

không chỉ là số có ý nghĩa lớn trong lĩnh vực toán học mà còn có ý nghĩa quan trọng

trong lĩnh vực công nghệ thông tin, đặc biệt là vấn đề bảo mật và mã hoá. Mỗi tổ chức

đều muốn sử dụng một số nguyên tố riêng, đủ lớn để đảm bảo bí mật trong việc mã

hoá thông tin nội bộ. Vậy, làm thế nào để tìm được số nguyên tố đủ lớn đảm bảo yêu

cầu đó?

Việc tìm một số nguyên tố nhỏ là không khó. Phương pháp đơn giản nhất là

dùng sàng Eratosthenes. Với phương pháp này, để kiểm tra số nguyên n có phải là số

nguyên tố hay không, ta kiểm tra n có chia hết cho số nguyên k từ 2 đến [ ]+1 hay

không? Nếu n không chia hết cho mọi ki (i = ) thì n là số nguyên tố. Ngược

lại, n là hợp số.

Tuy nhiên, việc tìm số nguyên tố lớn (khoảng từ 30 chữ số trở lên) không phải

là đơn giản. Bởi vì công việc đó nảy sinh một số vần đề sau đây:

Vấn đề 1: Làm thế nào để tìm được số nguyên tố lớn cũng như chứng minh tính

nguyên tố của số đó khi mà các phương pháp duyệt thông thường không còn khả thi.

Vấn đề 2: Thời gian cần thiết để hoàn thành việc tìm kiếm và kiểm tra một số

nguyên tố là rất lớn. Mặc dù ngày nay đã có sự hỗ trợ của máy tính điện tử, nhưng việc

tìm các số nguyên tố có hàng triệu chữ số phải mất đến hàng nghìn năm. Chẳng hạn,

số nguyên tố lớn nhất hiện nay là số có khoảng 9,1 triệu chữ số. Với một máy tính

Pentium 4 thông thường, phải mất khoảng 4500 năm để tìm được số này (Theo:

George Woltman - một lập trình máy tính của Great Internet Mersenne Prime Search

(GIMPS); thông tin từ:

http://www.gridcomputingplanet.com/news/article.php/3573946).

78

Page 92: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Vì vậy, chúng tôi phát triển bài toán Tìm số nguyên tố Mersenne trên môi

trường Grid Computing với hi vọng có thể giải quyết được các vấn đề trên trong thời

gian chấp nhận được.

Với vấn đề 1, chúng tôi không thực hiện việc tìm kiếm các số nguyên tố thông

thường. Thay vào đó, chúng tôi tìm các số nguyên tố dạng Mersenne.

Định nghĩa 1: Nếu n là số nguyên có dạng: 2p - 1 ( ) thì n gọi là số

Mersenne.

Định nghĩa 2: Số nguyên n gọi là số nguyên tố Mersenne nếu: n là số Mersenne

đồng thời là số nguyên tố.

Để tìm một số nguyên tố Mersenne, chúng tôi tìm hiểu và lựa chọn thuật toán

thích hợp.

Với vấn đề 2, chúng tôi không thực thi bài toán trên một máy tính mà sử dụng

giải pháp Grid Computing để thực thi bài toán trong mạng Grid Computing gồm nhiều

máy tính khác nhau. Grid Computing là một lĩnh vực khá mới mẻ ở nước ta hiện nay.

Được xem như là một “siêu máy tính giá rẻ”, Grid Computing đang được phát triển

rộng rãi cho các tổ chức trên thế giới.

Hiện nay, trên thế giới đã có một số tổ chức ứng dụng Grid Computing trong bài toán

Tìm số nguyên tố. Tiêu biểu là Great Internet Mersenne Prime Search (GIMPS). Tuy

nhiên, trong mô hình bài toán của họ đưa ra còn có một số vấn đề như là: thời gian tìm

kiếm lâu, mô hình phân chia công việc chưa hợp lý trong vấn đề xử lý song song…Với

những thách thức đó, chúng tôi cố gắng đưa một giải phát Tìm số nguyên tố ở dạng số

nguyên tố Mersenne trên Grid hy vọng có được một giải pháp tốt.

11.1. Giới thiệu công cụ phát triển

Ở chương 10, chúng tôi đã trình bày quá trình xây dựng một dịch vụ Grid gồm

các bước: định nghĩa giao diện, thực thi dịch vụ, cấu hình việc triển khai dịch vụ, tạo

tệp nén GAR và triển khai dịch vụ Grid trong Grid container. Trong mỗi bước, người

lập trình phải tạo ra các tệp ứng với các chức năng nhất định. Ví dụ, bước định nghĩa

giao diện, tạo các tệp .wsdl để định nghĩa giao diện dịch vụ web; Bước thực thi dịch

vụ, tạo các tệp .java để thực thi dịch vụ…Cuối cùng, người lập trình liên kết với các

thư viện Globus Toolkit để biên dịch các tệp, nén thành tệp GAR và triển khai dịch vụ.

Quá trình này có vẻ đơn giản khi xây dựng một chương trình dịch vụ Grid đơn giản.

Tuy nhiên, đối với các chương trình dịch vụ Grid phức tạp sẽ gây khó khăn cho người

79

Page 93: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

lập trình trong việc viết chương trình và sửa lỗi. Nó đòi hỏi người lập trình mất nhiều

thời gian để viết các tệp, tìm kiếm và phát hiện lỗi.

Khó khăn trên đòi hỏi phải có công cụ hỗ trợ những người phát triển dịch vụ Grid.

Chúng tôi giới thiệu một trong các công cụ đó. GT4IDE là một công cụ hỗ trợ đắc lực

cho người phát triển dịch vụ Grid trên nền ngôn ngữ Java.

11.1.1.Giới thiệu công cụ GT4IDE

GT4IDE là một khung làm việc, hỗ trợ việc phát triển các dịch vụ Grid

Serivice 4.0 trên nền ngôn ngữ Java. GT4IDE là một plug-in của Eclipse - một IDE

của Java, phát triển độc lập trên các môi trường.

Chức năng của GT4IDE gồm có:

1 - Tương tác với các thư viện của Globus Toolkit 4.0, tạo project Globus Toolkit 4.0

để phát triển các dịch vụ Grid trên nền ngôn ngữ Java

2 - Tự động tạo các tệp cần thiết trong một project Globus Toolkit như: tệp wsdl - mô

tả giao diện; tệp .java - thực thi dịch vụ…

3 - Cùng với Eclipse, khả năng phát hiện và sửa lỗi của GT4IDE là khá tốt.

4 - Tự động biên dịch, tạo tệp GAR cho một project Globus Toolkit 4.0.

Với các chức năng đó, GT4IDE là một công cụ rất hữu ích cho các nhà phát triển các

dịch vụ Grid Serivce 4.0

11.1.2.Cài đặt GT4IDE

GT4IDE là một plug-in của Eclipse. Trước khi cài đặt GT4IDE phải cài đặt

Globus Toolkit 4.0 và Eclipse

Globus Toolkit 4.0 đã được trình bày ở chương trước.

Cài đặt Eclipse

o Download tại: http://download.eclipse.org/eclipse/downloads/index.php

o Giải nén tệp zip vào thư mục bất kỳ.

o Cấu hình Eclipse với JDK

Cài đặt GT4IDE

o Download GT4IDE tại: http://gsbt.sourceforge.net/content/view/27/47/

80

Page 94: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

o GT4IDE gồm 2 gói binary: một cho JDK1.4 và một cho JDK1.5.

Download gói tương ứng với phiên bản JDK trên hệ thống của bạn.

o Cài đặt GT4IDE: giải nén tệp nén vào thư mục chủ của Eclipse.

o Cấu hình GT4IDE:

Khi chạy Eclipse, xuất hiện cửa sổ hỏi về đường dẫn thư mục chủ của Globus

Toolkit 4.0

Hình 25: Cửa sổ cấu hình đường dẫn GT4

Cấu hình lại các thông số của Globus Toolkit trong cửa sổ Preferences của Eclipse

Hình 26: Cửa sổ cấu hình GT4 Preferences

11.2. Tạo project GT4 với GT4IDE

Việc tạo một project mới có thể thực hiện với chức năng File -> New -> Project... -

> GT4 Project

81

Page 95: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 27: Cửa sổ tạo một project GT4

o Project Name: Nhập tên project

o Create first Service: Đánh dấu để tạo project mới

Tiếp tục với cửa sổ lựa chọn các thông số về dịch vụ:

Hình 28: Cửa sổ lựa chọn thông số cho một project

Trong đó:

Base Package: là gói chứa các lớp, các thành phần của dịch vụ…

Base Target Namespace: là namespace của tệp mô tả giao diện wsdl

Name of Interface/PortType: tên Interface của dịch vụ Grid

82

Page 96: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Service Path: là địa chỉ URL của dịch vụ Grid

Design Pattern: Có 2 lựa chọn:

Singleton with ServiceResourceHome: để chọn dịch vụ đơn tài nguyên

Factory/Instance: để chọn dịch vụ đa tài nguyên

Provide implementation skeleton:

o Chọn Yes, using ReflectionResourceProperties

Giao diện đầy đủ của một chương trình dịch vụ Grid với GT4IDE như sau

Hình 29: Giao diện chính của chương trình GT4IDE với Eclipse

11.3. Thuật toán tìm số nguyên tố Mersenne

Phần này trình bày các khái niệm và thuật toán liên quan đến số nguyên tố

Mersenne. Hiện nay có khá nhiều thuật toán tìm số nguyên tố dạng Mersenne, chúng

tôi so sánh các thuật toán và lựa chọn thuật toán thích hợp nhất. Nội dung chính của

chương này gồm hai phần:

Các khái niệm và mệnh đề: Trình bày một số khái niệm về số nguyên tố Mersenne,

các mệnh đề và chứng minh các mệnh đề

Các thuật toán: Giới thiệu một số thuật toán tìm số nguyên tố dạng Mersenne.

83

Page 97: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Lựa chọn thuật toán: Chúng tôi lựa chọn một thuật toán thích hợp để sử dụng trong

chương trình.

11.3.1.Các khái niệm và mệnh đề

a- Một số khái niệm

Số Mersenne: Là số nguyên có dạng 2p-1, p N.

Những số Mersenne đầu tiên : 1, 3 , 7, 15, 31, 63, 127, 255, 511...

Số nguyên tố Mersenne : là số nguyên tố có dạng Mersenne.

Ví dụ: 3, 7, 31 và 127 là những số nguyên tố Mersenne tương ứng với p= 2, 3, 5, 7.

b- Các mệnh đề

Mệnh đề 1: Nếu 2p-1 là số nguyên tố thì p là số nguyên tố.

Chứng minh:

Giả sử p là hợp số, tức là p có dạng p= r * s, với r, s N; r, s > 1.

Khi đó ta có: 2p-1= 2rs-1=(2s-1) * (2s(r-1) + 2s(r-2) + ... + 2s + 1)

2rs-1 chia hết cho (2s-1),

2rs-1 hay 2p-1 cũng là hợp số, mâu thuẫn với giả thiết.

Mệnh đề được chứng minh.

Chú ý: điều ngược lại không đúng, p là số nguyên tố thì 2p-1 chưa chắc đã là số

nguyên tố.

Mệnh đề 2: Giả sử X1... Xn-1Xn với Xi {0, 1} là biểu diễn nhị phân của p

Gọi N0= 1

Ni = (Ni-1)2 mod k nếu Xi = 0

2(Ni-1)2 mod k nếu Xi = 1

Ta có: Nn là số dư trong phép chia 2p cho k

Hệ quả 1: Nếu Nn = 1 thì 2p - 1 chia hết cho k

11.3.2.Một số thuật toán tiêu biểu

Thử thừa số (Trial Factoring): Là thuật toán sử dụng Mệnh đề 2 để tìm số dư khi

chia 2p cho k.

84

Page 98: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Thuật toán:

Với đầu vào là số mũ p, và số bị chia k. Thuật toán Trial factoring tìm số dư

của 2p-1 cho k như sau

o Bước 1: N:= 1, X:= 0

o Bước 2: Tìm biểu diễn nhị phân của p: X0, X1, … Xm-1

o Bước 3: Lặp

For i := m - 1-> 0

X:= getBit(p,i); // tính bit thứ i

Nếu X = 0 thì N = (N* N) mod k

X = 1 thì N = 2(N* N) mod k

o Bước 4 : trả về giá trị của N

Ví dụ cụ thể :

Với p= 23 và k= 47 ta thực hiện như sau:

p = 23 dạng nhị phân là 10111

o N0=1

o Đầu tiên với 10111, ta tách bit trái nhất, vì bit này = 1 nên lấy N02*2 mod

47 được N1= 2.

o Với 0111 bit trái cùng là 0 nên lấy N12 mod 47 được N2=4.

o Cứ làm tiếp tục ta được N5=1.

o Theo hệ quả 1 => 223-1 không phải số nguyên tố.

85

Bình phương Lấy bit trái p còn lại nhân với 2(optional) mod 47

1*1 = 1 1 0111 1*2 = 2 2

2*2 = 4 0 111 No 4

4*4 = 16 1 11 16*2 = 32 32

32*32 = 1024 1 1 1024*2 = 2048 27

27*27 = 729 1 (hết bit) 729*2 = 1458 1

Page 99: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Sơ đồ thuật toán:

Sơ đồ thuật toán Trial Factoring

P-1 Factoring

Có một phương pháp phân tích thừa số khác mà GIMPS sử dụng để tránh thời

gian kiểm thử . Phương pháp này được gọi là phương pháp Pollard’s P-1. Nếu q là một

thừa số của một số, phương pháp P-1 sẽ tìm thừa số q nếu q-1 là một hợp số.

Phương pháp này khi thực hiện với số Mersenne tỏ ra đặc biệt hiệu quả. Lưu ý rằng,

thừa số q có dạng 2kp+1. Có thể dễ dàng sửa đổi phương pháp P-1 để nó tìm q nếu k là

hợp số.

Phương pháp P-1 rất đơn giản. Đầu tiên, chọn giới hạn B1. P-1 sẽ tìm thừa số

q với tất cả các thừa số của k < B1. Thứ hai, tính E , tích của tất cả các thừa số nhỏ hơn

B1. Thứ ba, tính x = 3E*2*P. Cuối cùng, kiểm tra GCD(x-1,2p-1) để xem thừa số đã

tìm thấy.

86

N=1, X = 0

m =countBit(p);

I = m - 1;

X = getBit(p,I);

I = I - 1;

N = (N* N) mod k N = 2(N* N) mod k

I >=0

X ==0

TrueFalse

True

False

Return N;

Page 100: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Lucas-Lehmer

Định lý Lucas-Lehmer: Với P>2, 2p-1 là số nguyên tố khi và chỉ khi Sp-2=0, với dãy S

được định nghĩa như sau:

S0=4,…, SN=(SN-12 - 2) mod (2P-1).

Ví dụ: để chứng minh 27-1 là số nguyên tố:

S0 = 4

S1 = (4 * 4 - 2) mod 127 = 14

S2 = (14 * 14 - 2) mod 127 = 67

S3 = (67 * 67 - 2) mod 127 = 42

S4 = (42 * 42 - 2) mod 127 = 111

S5 = (111 * 111 - 2) mod 127 = 0.

Để thực hiện được kiểm tra Lucas-Lehmer một cách hiệu quả, việc đầu tiên là

phải tìm cách nhanh nhất tính bình phương của một số rất lớn modulo 2p-1. Phương

pháp nhanh nhất để tính bình phương của một số rất lớn là phân những số lớn thành

những mảng, sau đó thực hiện Fast Fourier Transform (TFT) và Inverse Fast Fourier

Transform (IFFT).

Kiểm tra kép (Double Checking)

Để bảo đảm lần thực hiện đầu tiên của Lucas-Lehmer không xảy ra lỗi,

GIMPS chạy kiểm thử thêm một lần nữa. Trong mỗi lần test, 64bits thấp của S p-2,

phần còn lại, được in ra. Nếu chúng trùng nhau, GIMPS xác nhận kiểm tra kép. Nếu

chúng không trùng nhau, quá trình thử được lặp lại cho đến khi trùng nhau.

11.3.3.Lựa chọn thuật toán

Trong các thuật toán nói trên thì thuật toán thử thừa số (Trial Factoring) cài

đặt nhanh, đơn giản, và có tốc độ tính toán cao vì vậy chúng tôi sử dụng thuật toán này

để thực hiện chương trình tìm số nguyên tố trong mạng Grid Computing.

11.4. Phân tích và thiết kế bài toán

11.4.1.Mô tả hệ thống

Phần này trình bày các vấn đề về:

Mục đích của bài toán

87

Page 101: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Mô hình hoạt động của bài toán trong mạng Grid

Mô hình phân chia công việc

Dữ liệu tài nguyên

a- Mục đích của bài toán

Mục đích của bài toán là tìm các số nguyên tố n có dạng n = 2p - 1 (p N, p >

1). Tận dụng các ưu thế của Grid Computing về tính toán song song và phân tán dữ

liệu, yêu cầu đặt ra cho bài toán là tìm được các số nguyên tố lớn cũng như chứng

minh tính nguyên tố của các số đó trong một khoảng thời gian chấp nhận được.

b- Mô hình hoạt động của bài toán trong mạng Grid

Hệ thống hoạt động trong một mạng Grid Computing bao gồm một máy cung

cấp dịch vụ Server và các máy còn lại Client tham gia tính toán.

Hình 30: Sơ đồ mô tả mô hình bài toán trong mạng Grid

Chức năng của Server là quản lý các tài nguyên tính toán, điều phối hoạt động của

các Client trong mạng, tìm kiếm công việc và yêu cầu Client giải quyết công việc.

Chức năng của Client là giải quyết công việc và trả lại kết quả công việc cho

Server.

c- Mô hình Phân chia công việc

Với mô hình trên, việc “Tìm số nguyên tố” sẽ không thực thi trên một máy

tính mà được thực thi đồng thời bởi nhiều máy tính trong mạng Grid. Do đó, giải pháp

phân chia công việc cho các máy tính cùng tính toán là rất quan trọng. Chúng tôi đưa

ra các khái niệm “công việc” và “công việc con” trong bài toán “Tìm số nguyên tố”

nhằm mục đích mô tả giải pháp đó.

88

Server

Client 1 Client m

Yêu cầu thực hiện

công việc

Trả lại kết quả

Page 102: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Công việc

Ta gọi một công việc p là công việc xác định 2p - 1 có phải là số nguyên tố hay

không.

Công việc con

Để thực hiện công việc p, ta tiến hành kiểm tra 2p - 1 k hay không?

k = 2 = q

Công việc này có thể chia thành m công việc con

p1 k = 2 k1

p2 k = k1+1 k2

……………………….

pm k = km-1+1 q

Ví dụ: Công việc p với p = 5, n = 25 - 1 = 31, q = [√n] + 1 = 6 có thể được chia thành 2

công việc con:

p1 k = 2 4

p2 k = 5 6

Mỗi khoảng k gồm 2 cận đầu và cuối gọi là kd (k đầu) và kc (k cuối).

Mô hình phân chia công việc

Hình 31: Sơ đồ mô tả mô hình phân chia công việc

d- Dữ liệu tài nguyên

Tài nguyên là tập hợp các dữ liệu mô tả các thành phần dữ liệu của Client

tham gia vào mạng Grid. Các tài nguyên được đặt trên máy Service và được Service

quản lý (khởi tạo, cập nhật hay thu hồi). Mỗi Client khi tham gia vào mạng được

89

Công việc

Công việc con thứ 1 Công việc con thứ m

Tập số bị chia con 1 Tập số bị chia con m

Page 103: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Serivce cấp phát một tài nguyên cùng với khoá riêng (unique key) xác định tài nguyên

đó với các tài nguyên khác trong mạng.

Trong bài toán Tìm số nguyên tố, mỗi tài nguyên chứa tập dữ liệu gồm hai

thành phần:

- time: kiểu long, là dữ liệu lưu trữ thời gian mà Client mới cập nhật

- data: kiểu string, là dữ liệu lưu trữ tập các thành phần p, k, kd, kc-trong đó p là số

mũ, k là số bị chia đang được client tính toán, kd là số nguyên đầu tiên của khoảng

được cấp phát, kc là số nguyên cuối của khoảng được cấp phát -theo định dạng

“p:k:kd:kc”.

11.4.2.Phân tích hệ thống

Hệ thống gồm 2 phần: Service và Client. Service là một Grid service đóng vai

trò quản lý tài nguyên tính toán và điều phối hoạt động của các Client. Client đóng vai

trò là một Client thực thi công việc và trả lại kết quả cho Service.

a- Service

Các chức năng chính của service

Để đảm bảo cho hệ thống hoạt động một cách đúng đắn, Service phải quản lý

các trạng thái và hoạt động của tất cả các Client trong mạng. Chức năng của Service

gồm có:

1 - Quản lý các tài nguyên: khởi tạo tài nguyên quản lý trạng thái của client, cập nhật

các trạng thái của client, thu hồi tài nguyên khi client không còn tham gia vào mạng.

2 - Tìm kiếm và phân phối các công việc con khi có yêu cầu từ Client

3 - Phát hiện các Client không còn tham gia vào mạng

Các thành phần của Service

PrimeFactoryService: là dịch vụ để tạo tài nguyên cho mỗi client.

PrimeResource: Chứa tài nguyên của client, bao gồm tập các dữ liệu của tài nguyên

PrimeResourceHome: quản lí tất cả các tài nguyên cùng với các khoá riêng tương

ứng với tài nguyên đó.

PrimeService: Là dịch vụ thể hiện (instance) của Service. Đây là thành phần có vai

trò quan trọng trong hệ thống. Chức năng của PrimeService bao gồm:

90

Page 104: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

o Quản lý và điều khiển mọi hoạt động của chương trình

o Đáp ứng các yêu cầu từ Client

Mô hình các thành phần của Service

Hình 32: Sơ đồ mô tả hoạt động của Service

Hình 33: Biểu đồ mô tả hoạt động của việc tạo tài nguyên

91

PrimeFactoryService PrimeResource

PrimeService PrimeResouceHome

Yêu cầu tạo

tài nguyên

Quản lýYêu cầu tìm

kiếm tài nguyên

Tạo

Client

Page 105: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 34 : Biểu đồ mô tả hoạt động của việc lấy dữ liệu

b- Client

Chức năng của Client

Đơn giản hơn so với Service, chức năng của Client gồm có:

Yêu cầu công việc con

Thực hiện công việc con

Trả lại kết quả cho Service khi hoàn thành công việc con

Cập nhật thời gian hoạt động của Client sau một chu kỳ nhất định

Các thành phần của Client

PrimeClient: là chương trình chính của Client thực hiện các chức năng trên

PrimeData: lưu trữ các dữ liệu tính toán

11.4.3.Thiết kế hệ thống

Trong phần này sẽ mô tả thiết kế các dữ liệu, đối tượng đảm nhận các chức

năng nêu trong phần Phân tích hệ thống.

a- Mô hình các đối tượng trong Service

92

Page 106: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 35: Sơ đồ biểu thị mối quan hệ giữa các đối tượng trong Service

b- Các lớp trong Service

Lớp PrimeResource:

Lớp lưu trữ các trạng thái của client

Các thành phần dữ liệu và phương thức

Dữ liệu / Phương thức Kiểu Chú thích

id Object id của tài nguyên, xác định tài nguyên duy

nhất

data String Chứa tập trạng thái của tài nguyên, gồm p,

k, kd, kc. Là xâu có định dạng “p:k: kd: kc”.

93

PrimeFactoryService

createResource()

PrimeResource

+ id

+ data

+ time

isTimeout()

create()

updateTime()

PrimeResouceHome

+ resouces

create()

getResouces()

PrimeConstants

+ TIMEOUT

+ K_LENGHT

PrimePKC

+ p

+ kcm

PrimePKC()

PrimeService

+ newp+ pkcm+ homegetResouce()getDataRP()findData()getResourceTimeoutKey()getNewJob()findDataOnceResouce()findDataResouceTimeout()findDataMutilResouces()notPrime()

Page 107: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Trong đó n = 2p-1 là số cần kiểm tra tính

nguyên tố. k là số lớn nhất trong khoảng [kd

, kc] đã được kiểm tra. Khoảng [kd , kc] là

khoảng số cần được kiểm tra tính chia hết

của n.

isTimeout() Boolean Xác định Client tương ứng với tài nguyên

này đã timout hay chưa

create() Object Tạo một tài nguyên mới

updateTime() Void Cập nhật thời gian time khi có yêu cầu từ

Client

Lớp PrimeResourceHome

Chức năng của lớp này là tạo một tài nguyên mới

Các thành phần dữ liệu và phương thức

Dữ liệu / Phương thức Kiểu Chú thích

resources HashTable Mảng băm chứa thông tin

các resources, gồm key và

PrimeResource tương ứng

create() ResourceKey Tạo một tài nguyên mới và

trả về key tương ứng

getResources() HashTable Lấy giá trị của resources

Lớp PrimeFactoryService

Chức năng của lớp này là yêu cầu PrimeResouceHome tạo một tài nguyên mới

Các thành phần dữ liệu và phương thức

Dữ liệu /Phương thức Kiểu Chú thích

createResouce() CreateResourceResponse Tạo một tài nguyên mới

khi có yêu cầu từ client

94

Page 108: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Lớp PrimePKC

Là lớp lưu trữ danh sách các số mũ p đang được tính toán và số kc tương ứng với p,

kc là khoảng cuối của số bị chia k được cấp phát. Việc lưu trữ 2 giá trị này có tác dụng

xác định công việc con tiếp theo tương ứng với số p.

Các thành phần dữ liệu và phương thức

Dữ liệu /Phương thức Kiểu Chú thích

p Int Số mũ p

kcm Int Số kc lớn nhất được cấp

phát tương ứng với p

PrimePKC() Constructor khởi tạo các

giá trị của lớp

Lớp PrimeService

Chức năng của lớp này là thực thi các hoạt động của dịch vụ

Các thành phần dữ liệu và phương thức

Dữ liệu /Phương thức Kiểu Chú thích

Newp Int Là số mũ p mới được cấp

phát

Pkcm Vector Là mảng lưu trữ danh sách

các đối tượng PrimePK

Home PrimeResourceHome Đối tượng

PrimeResourceHome để quản

lý các tài nguyên

getResouce() PrimeResource Lấy tài nguyên tương ứng với

Client yêu cầu tài nguyên

getDataRP() String Lấy dữ liệu thuộc tính của tài

nguyên

findData() String Hàm này tìm kiếm công việc

con và trả về xâu dạng

“p:k:kd:kc”

findDataOnceResouce() String Hàm tìm kiếm công việc con

95

Page 109: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

trong trường hợp đang chỉ có

1 tài nguyên trên Service.

findDataResouceTimeout() String Hàm tìm kiếm công việc con

trong trường hợp có Client

không còn tham gia mạng.

findDataMutilResouces() String Hàm tìm kiếm công việc con

trong trường hợp có nhiều tài

nguyên và không có client

nào timeout

getResourceTimeoutKey() ResourceKey Hàm kiểm tra Client timeout

và trả về key của tài nguyên

tương ứng với Client đó (nếu

không có thì trả về null)

getNewJob() String Hàm lấy công việc mới

notPrime() NotPrimeResponse Hàm được gọi khi Client

thông báo hợp số.

Lớp PrimeConstants

Là lớp chứa các hằng sử dụng trong chương trình

Các thành phần dữ liệu và phương thức

Dữ liệu /Phương thức Kiểu Chú thích

TIMEOUT Long Thời gian xác định Client đã timeout -

tính theo giây

K_LENGHT Int Độ dài của khoảng số bị chia trong một

công việc con

c- Mô hình các đối tượng trong Client

96

Page 110: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 36: Sơ đồ biểu thị mối quan hệ giữa các đối tượng trong Client

d- Các lớp trong Client

Lớp StartListener

Là một Thread, xử lý sự kiện khi click Start Button

Lớp StopListener

Là một Thread, xử lý sự kiện khi click Stop Button

Lớp JobThread

Là một Thread, thực thi việc giải quyết công việc.

Lớp PrimeClient

Là lớp chính của Client, thực thi công việc

Các thành phần dữ liệu và phương thức

97

PrimeData

+ p

+ k

+ kd

+ kc

PrimeClient

+ timer+ timeFreq+ prime

doStart()Eratosthenes()trialFactoring()doJob()main()initWindowComponents()

StartListener

actionPerformed()

StopListener

actionPerformed()

Thread

JobThread

actionPerformed()

Page 111: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Dữ liệu /Phương thức Kiểu Chú thích

Timer Timer Xác định thời gian thực

timeFreq Long Là chu ký thời gian(tính theo giây) mà

Client yêu cầu Service cập nhật thời

gian

Prime PrimePortType Đối tượng chính tương tác với Service

doStart() Void Hàm được gọi khi bắt đầu chạy client

Eratosthenes() boolean Hàm kiểm tra một số p có phải là số

nguyên tố hay không bằng phương

pháp sàng Eratosthenes. Hàm trả về

true nếu p là số nguyên tố, false nếu

ngược lại.

trialFactoring() boolean Hàm kiểm tra n = 2p - 1 có chia hết cho

k hay không bằng phương pháp Trial

Factoring. Hàm trả về true nếu n chia

hết cho k, false nếu ngược lại

doJob() void Hàm được gọi khi thực thi công việc

Main() void Hàm chính của chương trình

initWindowComponents() Void Hàm khởi tạo các giá trị giao diện đồ

họa của chương trình.

11.5. Kết quả thử nghiệm

11.5.1.Viết mã chương trình

Qua một thời gian tìm hiểu, chúng tôi đã bắt tay vào viết chương trình “Tìm số

nguyên tố”. Chương trình này được chúng tôi hoàn toàn tự viết. Dưới đây là một số

đoạn mã inteface của chương trình.

public interface PrimeService

{

public String getDataRP(GetDataRP params) throws RemoteException;

98

Page 112: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

public SetTimeRPResponse setTimeRP(long time) throws

RemoteException;

public SetTimeRPResponse setTimeRP(long time) throws

RemoteException;

…….

}

public interface PrimeResource

{

public void setK(int k);

public int getP();

public long getTime();

public void setTime();

public void updateTime();

public boolean isTimeout();

….

}

11.5.2.Giao diện của chương trình client:

99

Page 113: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Hình 37: Giao diện chương trình Client

11.5.3.Biên dịch và chạy chương trình

Phần này mô tả việc biên dịch và thử nghiệm chương trình Số nguyên tố.

a- Biên dịch và chạy dịch vụ

Để biên dịch dịch vụ, trong môi trường GT4IDE, click vào biểu tượng STUB để tạo

các stub classes. Sau đó click vào biểu tượng GAR để biên dịch và toạ tệp GAR.

Tệp prime.gar được tạo ra là tệp nén của dịch vụ.

Triển khai dịch vụ:

[globus]# globus-deploy-gar prime.gar

Chạy dịch vụ:

[globus]# globus-start-container -nosec

b- Biên dịch và chạy Client

Trong khi dịch vụ đang chạy, mở một cửa sổ mới

Để biên dịch, dùng lệnh:

[auser1]# cd PrimeService/src

[auser1]# . compile

Để chạy, thực thi tệp bat

[auser1]# . run

c- Kết quả

Chúng tôi thử nghiệm chương trình trên 1 máy tính và thu được kết quả sau:

Số nguyên tố Thời gian (giây)

22-1 0.01

23-1 0.01

25-1 0.02

27-1 0.3

213-1 3

217-1 7

100

Page 114: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

219-1 28

Hình ảnh minh hoạ:

Hình 38: Kết quả đạt được sau khi chạy thử nghiệm

11.6. Kết luận về bài toán Số nguyên tố

Chương trình “Tìm số nguyên tố” nhìn chung đã giải quyết được các vần đề

đặt ra ở trên. Bài toán có thể được ứng dụng trong thực tế để tìm được các số nguyên

tố lớn, góp phần đóng góp trong lĩnh vực bảo mật, mã hoá cho các tổ chức, công ty ở

nước ta hiện nay. Tuy nhiên, bài toán “Tìm số nguyên tố” không chỉ dừng lại ở đó. Mô

hình bài toán và thuật toán hoàn toàn có thể được cải tiến để tăng hiệu năng tính toán.

Trong thời gian sắp tới, chúng tôi sẽ nghiên cứu và đưa ra mô hình, thuật toán tối ưu

hơn, để có thể tìm được số nguyên tố lớn hơn trong một thời gian ngắn hơn.

101

Page 115: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Kết luận

Khóa luận đã hệ thống hóa một số công nghệ, chuẩn về Grid Computing, về

các yêu cầu cơ bản của một mạng lưới tính toán, đồng thời trình bày, phân tích và thử

nghiệm quy trình phát triển ứng dụng trên môi trường mạng lưới dựa trên nền tảng là

bộ công cụ Globus Toolkit. Qua đó chúng tôi đã nhận được kết quả bước đầu rất khả

quan, làm chủ được quy trình phát triển, triển khai ứng dụng trên môi trường mạng

lưới.

Trên cơ sở về quy trình phát triển, và ứng dụng tìm số nguyên tố Merssene

chúng tôi dự định sẽ tiếp tục nghiên cứu để hoàn thiện chương trình tìm số nguyên tố

Merssene cũng như bổ xung các vấn đề mang tính lí thuyết và thực tiễn về phân chia,

lập lịch công việc, về an ninh, bảo mật trên môi trường mạng lưới. Chúng tôi hi vọng

sẽ góp phần vào quá trình xây dựng một cộng đồng nghiên cứu, phát triển và sử dụng

Grid ở Việt Nam.

102

Page 116: NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG TRÊN GRID

Tài liệu tham khảo

[1] Ahmar Abbas. Grid Computing: A Practical Guide to Technology and

Applications. Charles River Media, 2003.

[2] B.Jacob, M.Brown, K.Fukui, N.Trivedi. Introduction to Grid Computing. IBM

Redbook, 2005.

[3] Borja Sotomayor. The Globus Toolkit 4 Programmer's Tutorial. University of

Chicago, 2005.

[4] Jarek Gawor, Sam Meder. GT4 WS Java Core Design. Globus Alliance, 2004.

[5] Jennifer M. Schopf, Jan We Glarz, Jarek Nabrzyski. Grid resource management -

State of the Art and Future Trends. Springer, 2003.

[6] Joshy Joseph, Craig Fellenstein. Grid Computing. IBM Press, 2003.

[7] Maozhen Li, Mark Baker. The Grid Core Technologies. John Wiley & Son, 2005

[8] Web site: http://www.toantin.org. Grid fundamental

[9] Web site: http://gsbt.sourceforge.net/content/view/12/29/. GT4IDE

[10] Web site: http://primes.utm.edu. Primes

[11] Web site: http://www.mersenne.org/. Mersenne and GIMPS project

[12] Web site: http://www.onjava.com/pub/a/onjava/2002/08/28/wsdc.html. Search for

really big prime number

103