讀古今文學網 > OpenStack系統架構設計實戰 > 12.2.3 邏輯架構 >

12.2.3 邏輯架構

Manila的邏輯架構如圖12-5所示。

圖12-5 Manila的邏輯架構

Manila包含如下關鍵組件:

1)接口(Manila-API):通過WSGI應用提供穩定的REST API。

2)客戶端(Manila-client):命令行接口,通過Manila-api與Manila交互。

3)調度器(Manila-scheduler):將請求調度、路由到合適的Manila-share。

4)共享文件系統實例(Manila-share):負責與後端存儲子系統進行通信並管理。

5)認證管理(Auth manager):負責用戶、項目和角色的管理。

6)SQL數據庫(SQL database):Manila採用基於SQL的中央數據庫,數據庫由各Manila、share共享。

Manila為OpenStack提供對共享文件系統的支持,所以Manila系統中有和NAS相似的概念和術語。

Manila主要概念如下:

1.共享文件系統實例(Share)

一個共享文件系統實例對應一個指定了訪問協議、空間大小和可訪問列表的存儲。共享文件系統實例是Manila提供的基礎原語單元。文件系統實例可被多個虛擬機並發訪問,訪問協議主要為NFS和CIFS。所有實例均由一個後端提供。某些實例會與共享網絡(Share Networks)、共享服務器(Share Server)相關聯。

2.快照

快照是共享文件系統實例在某一時刻的只讀鏡像。快照可用於創建新的實例。只有當所有相關聯的快照被刪除時,共享文件系統實例才能被刪除。

3.共享類型(Share Type)

共享類型是一個由管理員定義的「服務類型」,它包括一個租戶可見的描述和一組租戶不可見的鍵值對列表。Manila調度器利用此鍵值對信息進行調度決策。

4.額外規格(Extra Spec)

額外規格即共享類型中的一組鍵值對。額外規格由Manila和後端驅動定義。

5.共享網絡(Share Network)

共享網絡描述與文件系統實例相關的網絡實現,告知Manila一組共享文件系統實例使用的安全和網絡配置。一個共享網絡包括安全服務(Security Service)和涉及的網絡及子網(Network/Subnet)。共享網絡是一個面向多租戶定義的對象,Manila通過共享網絡支持多租戶,網絡多租戶通過標準特性如VLAN和VXLAN實現。一個共享文件系統實例只能屬於一個共享網絡。

6.安全服務

安全服務指LDAP、Active Directory、Kerberos等用戶安全服務。安全服務包含Manila創建一個服務器加入指定安全域必需的所有信息。一個共享文件系統實例可以被關聯到多個安全服務。

7.後端(Backend)

後端對應著一個共享文件系統實例的提供者。後端在manila.conf中進行定義。一個實例必然對應一個後端,而一個後端有且只有一個驅動。通過採用多個後端的方式,可以提供數據服務以保障高可用。

8.共享驅動(Share Driver)

共享驅動的概念很明確。共享驅動是後端文件共享服務的具體實現,如Clustered ONTAP、EMC VNX、GlusterFS等。

9.共享訪問規則(Share Access Rule)

Manila通過共享訪問規則定義哪些客戶端可以訪問共享文件系統實例。目前Manila支持的訪問控制類型包括IP地址、用戶名和SSL認證。

Manila用戶首先創建一個共享網絡,之後創建共享文件系統實例。和Cinder一樣,Manila用戶可以配置多個後端。Manila為每一個租戶分配一個共享服務器。

Manila管理員可以創建一個唯一的共享類型,廠商驅動將後端能力上報給Manila調度器,匹配並記錄到鍵值對。事實上,和Cinder一樣,不同廠商可以通過驅動暴露更多的差異化能力,例如去重、壓縮等。對於每個共享文件系統實例請求,Manila調度器根據鍵值對的存儲容量和能力信息決策部署策略。Manila採用FilterScheduler智能調度文件系統實例,Filter Scheduler使得雲系統管理員可以基於預設的參數過濾後端,從而管理大規模共享存儲。

Manila提供共享文件系統服務示例如圖12-6所示。

圖12-6 Manila提供共享文件系統服務

Manila提供完整的共享文件系統實例生命週期管理,包括:

1)創建、刪除實例;

2)列出所有實例;

3)獲得實例細節信息;

4)生成實例快照;

5)修改實例訪問信息;

6)掛載和卸載文件系統實例。

Manila的部署並不僅限於傳統存儲陣列,目前很多供應商正積極開展基於CEPH和GlusterFS開源存儲平台的開發。其中包括支持傳統NAS(NFS/SMB)以外的協議,例如在KVM Hypervisor內設備驅動採用原生Ceph協議。用戶空間(User Space)實現NFS服務器的開源項目NFS-Ganesha也可用於抽像底層NFS服務器硬件,當然這會在數據路徑上引入延遲和更多的複雜性。Manila也支持採用其自身提供的通用驅動,用戶可以直接採用通用驅動,而不需要引入外設存儲陣列。

Manila的通用驅動思路,是通過Nova創建一台服務器虛擬機(Service VM),通過Cinder創建一個卷,並掛載到服務器虛擬機上,如圖12-7所示。服務器虛擬機格式化Volume,將其作為共享目錄,對外提供NFS/CIFS共享服務。

圖12-7 Manila通用驅動原理圖

Manila通用驅動具體實現如下:

Manila為每個共享網絡創建一個Nova計算實例。Nova計算實例通過Cinder的Volume來提供NFS/CIFS共享服務,通過Neturon連接到現有網絡及子網。創建Nova實例所必需的Nova的Flavor、Glance的鏡像、SSH Keypair均通過Manila進行配置。Manila則通過SSH對Nova實例進行配置。