OpenStack最新版本Folsom架構解析(續)
兩年前OpenStack基于NASA的Nova項目和Rackspace的Swift項目合并得以建立,而今OpenStack已經成為云計算領域的一顆新星,繼2012年四月發布Essex版本之后,在今年九月底OpenStack第6版Folsom正式發布,本文簡要分析了OpenStack Folsom的架構。

Folsom邏輯結構圖
Object Store
Swift結構是分布式的,這樣既可以防止任何單一的節點上出問題,又可以進行橫向的擴展。它包含的組件有:
Prox server:它負責接受由OpenStack Object API傳入的請requests或者直接就接受HTTP requests。接受的請求有文件上傳,修改元數據和創建container單元。此外還為瀏覽器提供文件和continer的列表。通常我們會使用一個可選的緩存來提高它的性能。
Account servers:它們負責管理由object存儲服務創建的賬戶。
Container servers:它們負責管理object存儲服務里面containers(也就是文件夾)映射。
Object servers:它們負責管理storage節點上的真正的objects。(也就是文件)
在服務器上通常有許多用來執行日常任務的周期性進程。其中最重要的就是replication services,它通過集群保證了一致性和可以用性。其他的一些周期進程有:auditors,updaters和reapers。
Object store也通過HTTP為靜態頁面和對象服務。實時上,本文的那張圖片就是來自Rackspace Cloud的Switf service。
Image Store
自從Cactus版本發布以后,Glance結構相對來說比較穩定。最大的結構變化大概就是在Diablo版本加入了身份驗證。讓我們快速瀏覽下Glacnce的四個主要部分:
glance-api:她接受Image API的發現圖片,檢索圖片和存儲圖片的請求。
glance-registry:她存儲,處理和檢索元圖片元數據。(像大小,類型等)
一個存儲圖片元數據的數據庫。像Nova一樣,你可以根據你的需求參數選擇你的數據庫。(但大部分人都選擇MySQL或者SQlite)
一個存貯實際圖片文件的圖片庫。在上面的圖片中,Swift被當作了圖片庫,而且這是可以配置的。除了Swift,Glance支持普通的文件系統,RADOS塊設備,Amazon S3和HTTP。需要清楚的一點兒是這些選擇中的一部分是有只讀限制的。
就像你在上面的概念結構圖部分看到的一樣,Glance在所有IaaS圖片服務中是個核心角色。她接受來自終端用戶或者Nova組件的圖片(或者圖片元數據)的API requests,并且她可以把她的文件存在object storage service(Swift)中。
Identity
Keystone把OpenStack policy,catalog,token和authentication等功能集成于一身。不僅處理API requests,同時也提供可以配置的catalog,policy,token和identity服務。
每一個Keystone功能都有一個允許用不同方式使用它的獨特服務的插件化后臺。大部分功能都支持標準的后臺,比如LDAP,SQL和Key Value Stores等。
Network
Quantum在其他OpenStack服務管理的接口設備之間提供網絡連接服務。她首先允許用戶創建他們自己的網絡,然后給他們提供接口。和其他的OpenStack服務一樣,Quantum使用了插件化結構,這使得他可以被詳細配置。這些插件使用了不同的網絡設備和軟件。這樣,結構和部署就非常的靈活了。在上面的結構中,使用了一個非常簡單了Linux網絡。
quantum-server:接受API requests然后把他們轉發到合適的quantum插件去執行。
quantum 插件和代理執行插件的添加或者卸載,創建網絡或者子網和IP地址分配等實際操作。這些插件和代理在特定的云服務里面依賴不同公司和使用不同的技術。Quantum裝載了的插件和代理有:Cisco的虛擬的和物理的交換機,Nicira的NVP產品,NECO的OpenFlow產品,Open vSwitch,Linux的bridging和Rye的網絡操作系統。Midokua也為Quantum集成服務提供了一款插件。Quantum中普通的代理有L3,DHCP和定制的代理插件。
大部分的Quantum設備都通過一個消息隊列來轉發在quantum-server和各種代理之間的信息,也有一個用來存儲每個插件自己的網絡狀態的數據庫。Quantum主要和Nova進行交互,Nova為他的實例提供網絡和鏈接。
Block Storage
Cinder 將之前在OpenStack Compute中的部分持久性塊存儲功能分離了出來,集成到了自己的服務中。OpenStack塊存儲API允許對卷,卷的類型,卷的快照進行處理。
cinder-api 接受API requests并且將他們轉發到cinder-volume去執行。
cinder-volume處理cinder數據庫的維護狀態的讀寫請求,通過消息隊列和直接在塊存儲設備或軟件上與其他進程交互。
和nova-scheduler非常相似,后臺進程cinder-scheduler會選擇在最優的塊存儲提供節點上去創建卷。
Cinder deployments也使用消息隊列去轉發cinder進程之間的消息并且使用一個數據庫來存儲這些卷的狀態信息。和Quantum類似,Cinder主要和Noa交互,為她提供她的卷需要的實例。