Ⅰ 網格的基礎設施
首先,我們來看看有哪些典型的網格基礎設施組件,每一種組件如何對應用程序的架構、設計和部署產生影響。下面是網格基礎設施中的一些主要組件:
安全性。安全性是網格計算中的重要問題。每一種網格資源都可能需要遵從多種不同的安全策略。單點登錄認證是一種必不可少的方法。得到普遍遵守的協商授權機制也是很必要的。
資源管理。當提交一項任務的時候,網格資源管理器需要考慮如何為該任務指派資源、如何監視其狀態以及如何返回它的執行結果。
信息服務。由於網格資源管理器在指派資源之前要經過綜合全面的考慮,因此它需要知道哪些網格資源是可用的,以及這些資源的容量與當前使用的情況。這些有關網格資源的知識是通過網格信息服務(Grid Information Service,GIS)維護和提供的,又稱為監視與發現服務(Monitoring and Discovery Service,MDS)。
數據管理。數據管理主要解決任務如何傳輸數據以及如何訪問共享存儲的問題。
下面讓我們以Globus Toolkit為例分別詳細討論一下每一種組件。 如果您是一名用戶,要在遠程系統上運行一項任務,您會關心遠程系統是否安全,是否能保證其他人不能訪問到您的數據。如果您是提供資源的一方,用戶可以在您的系統中執行任務,那麼您必須確信所有的任務都不會遭到破壞和干擾,也不能訪問您系統中的其他私有數據。除了這兩方面的內容之外,網格環境也面臨著一般分布式計算環境中存在的其他所有安全問題。
網格安全基礎設施(Grid Security Infrastructure,GSI)是 Globus Toolkit 的基礎,它提供了很多工具,可以幫助我們對網格環境中的安全問題進行管理。在您開發面向網格環境的應用程序時,您的腦子里必須時刻考慮到安全問題,並用 GSI 提供的工具來解決這些問題。網格架構中與安全性有關的功能主要負責完成認證、授權以及實現網格資源之間的安全通信。
在應用程序中啟用網格時的考慮:安全性。當我們設計一個能夠使用網格的應用程序時,安全性問題必須考慮在內。下面的列表總結了需要考慮的一些問題:
單點登錄。跨系統的 ID 映射。如上所述,GSI 提供了認證、授權以及安全的通信。然而,您需要對安全性管理及其含義有深刻完整的理解。比如說:您是否可以將多個用戶映射到目標系統中的同一個用戶 ID 上?是否需要特定的審計機制來確定實際發起應用程序的是哪一個用戶?應用程序不應該要求在使用網格上的不同資源時使用不同的用戶 ID 映射機制。
多種平台。盡管 GSI 基於開放的標准化軟體,可以在多種平台上運行,然而各種不同的平台其底層的安全機制並不總是一致。比如說,在傳統的 UNIX 或基於 Linux 的系統上,讀、寫、執行等操作的安全機制就與微軟的 Windows 環境不同。您應該考慮應用程序可能運行的平台。
使用 GSI。對於任何應用程序特有的、且可能需要進行認證或特殊授權的功能而言,應用程序的設計應該使用 GSI,這樣能夠簡化開發,並通過維護單一的登錄機制,使用戶的體驗也得到簡化。
數據加密。盡管 GSI 與後文將要討論到的數據管理工具一起,提供了跨網路的安全通信與數據加密,但是您也應該考慮到,當數據到達目的地的時候會發生什麼事情。比如說,如果一些敏感的數據傳遞到某項資源上供任務使用,隨後又以非加密的格式保存到本地磁碟上,那麼其他的用戶或應用程序也就能訪問這些數據了。 網格資源管理器致力於在任務提交時進行資源指派。它的角色就像是異質網格資源的抽象介面。資源管理組件提供的工具可以將任務分配給特定的資源,可以提供一種手段,在任務運行過程中獲取任務狀態信息,並獲取任務完成的信息,還可以提供終止任務或對其進行管理的能力。在 Globus 中,遠程任務提交是由 Globus Resource Allocation Manager(GRAM)負責處理的。
在應用程序中啟用網格時的考慮:資源管理。在與資源管理相關的應用程序架構、設計和部署方面,有一些問題需要考慮。GRAM 最簡單的形式是用於發出 globusrun 命令,在特定系統上發起一項任務。然而,應用程序必須與 MDS 一起(通常是通過一個代理函數)保證使用了適當的目標資源。下面列出一些需要考慮的內容:
選擇適當的資源。通過與代理聯合工作,來保證選擇適當的目標資源。這就要求應用程序能夠正確地指定所需的環境(操作系統、處理器、速度、內存,等等)。您為排除特定的依賴關系付出的努力越多,找到可用資源完成任務的機率也就越高。
多子任務。如果應用程序中包含多個任務,您必須理解(並降低)它們之間的相互依賴關系。否則,您就不得不構建一段邏輯來處理下面這些問題:
進程間通信
數據共享
並行任務提交
訪問任務的執行結果。
如果一項任務返回的是一個簡單的狀態值,或是輸出數據量很少,那麼應用程序可以僅僅通過 stdout 和 stderr 來獲取這些數據。要是必須獲取相當復雜的結果,這時就可能需要將結果寫入一個文件,並通過適當的工具,供目標機獲取/傳輸這個文件。
任務管理。GRAM 提供了查詢任務狀態的機制,還可以執行諸如終止任務之類的操作。應用程序可能會在必要的時候使用這些功能為用戶提供反饋、清除或釋放資源的操作。比如說,如果應用程序內有一項任務失敗了,其他依賴於這項任務的結果的任務可能就需要終止,以免無端消耗過多資源。 信息服務是網格基礎設施中至關重要的組件。它們維護了關於資源可用性、處理能力、當前使用情況的知識。不論在哪個網格中,CPU 和數據資源的情況都是不斷變動的,這種變動與其處理任務與共享數據的能力有關。隨著網格中的資源不斷被釋放,資源的狀態可以在網格信息服務中得到更新。客戶機、代理、網格資源管理器等等綜合這部分信息來進行資源的指派。信息服務提供方是指那些為目錄提供資源狀態信息的程序。下面列出一些如何收集信息的實例:
靜態主機
操作系統名稱、版本號、處理器提供商/類型/版本/速率/緩存大小、處理器數量、物理內存總量、虛存總量、設備、服務類型/協議/埠號等。
動態主機
負載水平、隊列入口等。
存儲系統
磁碟空間總量、可用磁碟容量等。 網路信息。
網路帶寬、延遲、是否可測量與可預報。
高度動態
空閑物理內存,空閑虛擬內存、空閑處理器數量等。
網路服務
網格信息服務,又稱為監視與發現服務,在 Globus 中負責提供信息服務。MDS 使用輕量級目錄訪問協議(Lightweight Directory Access Protocol,LDAP)作為訪問資源信息的介面。
在應用程序中啟用網格時的考慮:信息服務。對信息服務來說,需要考慮下面這些問題:
必須完全理解特定任務的需求,這樣才能對查詢進行正確地格式化,以返回適當的資源。這一點非常重要。 必須保證 MDS 中保存有適當的信息。在 MDS 中,預設情況下包含大量關於網格中所含資源的數據。不過,如果您的應用程序要求使用特定的資源或信息,而預設情況下沒有提供,您就需要編寫您自己的信息提供方,並把適當的資源加入模式中。這樣,您的應用程序或代理就可以進行查詢,看特定的資源或請求是否已經存在。
MDS 可以用匿名帳號訪問,或是經由一台已經通過 GSI 認證的代理來訪問。應用程序開發人員需要保證,能夠在必要的時候通過一台經過認證的代理。您的網格環境可能具有多級別的目錄結構。根據環境及其拓撲的復雜程度不同,您應該保證能夠訪問適當的目錄,在其中搜索您所要求的資源。 當您在構建網格的時候,網格中最重要的資產就是您的數據。在您的設計當中,您將必須確定您對數據的需求,以及如何在整個基礎設施中移動數據,要麼就是如何用一種安全有效的方式訪問所需的數據。您可以通過一組標准化的網格協議與您設計的任何數據資源進行通信。您也可以選擇構建一個聯邦資料庫,創建一個虛擬的數據存儲。還有其他一些選擇,如存儲區域網(Srorage Area Network)、網路文件系統,以及專用的存儲伺服器等。
Globus 為網格環境提供了 GridFTP 和 Global Access to Secondary Storage(GASS)兩種數據傳輸機制。此外,它還提供了一種復制管理機制,可以幫助您管理和訪問數據集的副本。在應用程序中啟用網格時的考慮:數據管理。數據管理問題源自如何最大化地使用有限的存儲空間、網路帶寬、計算資源等。下面列出一些在應用程序設計和實現中需要考慮的數據管理問題:
數據集的大小。對於大的數據集來說,要想將它移動到實際運行任務的系統上是不現實,甚至是不可能的。可能的解決方案是使用數據復制、或將完整數據集的一個子集拷貝到目標系統中。地理上分散的用戶、數據、計算以及存儲資源。如果您的目標網格在地理上是分散的,網路連接的速度也有限,那麼您在設計的時候就必須考慮到如何進行慢速和受限的數據訪問。
在廣域網上進行數據傳輸。當您要在 Internet 或者其他的 WAN 上移動數據時,必須考慮安全性、可靠性以及性能等問題。您必須構建一些必要的邏輯來處理數據訪問速度慢,甚至被阻斷的情況。數據傳輸的調度。下面兩種情況至少要考慮一種:第一個是數據傳輸的調度,這樣當需要某項數據的時候數據就在它適當的位置上了。比如說,如果數據傳輸需要進行一個小時,而使用這項數據的任務必須在凌晨兩點鍾開始運行,那麼您就應該提前對數據傳輸進行調度,這樣,當需要它的任務運行的時候,數據就是可用的了。第二個是了解進出任何一項資源的任何並發文件傳輸的數量與規模。
選擇數據副本。如果您使用 Globus Data Replication 服務,也許想向應用程序中增加一段選擇適當副本的邏輯,也就是說,您想要選擇一個包含所需數據的副本,同時還要滿足您對性能的要求。