一、前言
之前研究了一下openstack的M版本,對openstack的各個基礎組件版本都有了比較簡單的理解,現做如下總結,歡迎大牛前來糾正和指導。
二、openstack基礎服務
基礎服務即是部署openstack必須要裝的服務,但是其實horizon也不是必須要裝的,但是一般web圖形界面管理應該是大家都需要的,所以就算在了基礎服務里面。

三、openstack存盤服務
存盤服務也是openstack中非常最要的組件,如果我們希望我們的資料能夠獨立于虛擬機實體存在,即使虛擬機實體洗掉之后也可以繼續保存資料,就需要將資料存盤于存盤服務中,存盤服務主要分為物件存盤,塊存盤和共享檔案系統三種,分別對應三種不同型別的存盤需求型別

四、openstack共享服務
共享服務即是為其他openstack服務提供公共服務的組件,有如下3個服務。

五、openstack后臺服務
所謂后臺服務,即是平臺租戶不會直接使用的openstack服務,但是openstack平臺內部均是有這些服務支撐運行,提供必要的后端資料存盤和通信等,包含以下3個組件:

六、openstack組件詳細介紹
以下部分是對openstack各個組件組成的詳細介紹。
1) glance組件詳細介紹
以下是對glance組件中詳細組成內容的介紹:
glance-api
負責整個glance服務的對外API介面,接收鏡像的拉取,上傳,洗掉等請求;由于采用無狀態的 REST 請求協議,可以進行橫向擴展來均衡負載。
glance-registry
負責虛擬機鏡像的存盤和元資料的管理,例如鏡像的存盤位置,大小和型別等等。
Storage repository for image files
支持多種后端存盤型別,例如普通檔案系統,物件存盤,Ceph塊存盤,HTTP,S3等等。
2) nova組件詳細介紹
以下是對nova組件中詳細組成內容的介紹:
nova-api service
為nova模塊提供統一的API介面,所有nova的請求均要先發到該服務,可以支持openstack compute型別的API以及亞馬遜EC2型別的API;由于采用無狀態的 REST 請求協議,可以進行橫向擴展來均衡負載。
nova-compute service
負責通過虛擬化hypervisor來管理各個虛擬機實體的服務,例如創建,洗掉虛擬機實體等。
該服務支持不同型別的虛擬機hypervisor,例如:
XenAPI for XenServer/XCP
libvirt for KVM or QEMU
VMwareAPI for VMware
nova-scheduler service
接收到虛擬機實體的相關請求,決定在哪個物理機上創建虛擬機
nova-conductor module
負責整個nova組件與后端資料庫的互動。
nova-novncproxy daemon
提供基于web形式的VNC連接用以訪問運行中的虛擬機實體。
3) neutron組件詳細介紹
以下是對neutron組件中詳細組成內容的介紹:
Neutron-server
和所有的API組件功能類似,提供neutro組件的對外API介面,負責分發不同的API請求到不同的networking plug-in上;由于采用無狀態的 REST 請求協議,可以進行橫向擴展來均衡負載。
OpenStack Networking plug-ins and agents
負責調度為虛擬機提供基本網路連接的服務插件,可以支持對接各類不同的網路插件,例如:
Cisco virtual and physical switches
NEC OpenFlow products
Open vSwitch
Linux bridging
VMware NSX product
同時,也會提供通常的network agents,例如:
L3 Agents
DHCP Agents
4) cinder組件詳細介紹
以下是對cinder組件中詳細組成內容的介紹:
cinder-api
和所有的API組件功能類似,提供cinder組件的對外API介面;由于采用無狀態的 REST 請求協議,可以進行橫向擴展來均衡負載。
cinder-volume
Cinder服務的核心部件,負責與塊設備直接互動,通過利用自己管理的塊設備,向虛擬機實體提供統一的塊存盤服務。同時,他還支持通過加載不同設備廠商的驅動,來呼叫不同的廠商的集中性磁陣,直接對虛擬機提供lun,而不經過cinder服務這一層轉發。
cinder-scheduler daemon
和nova-scheduler功能類似,當創建新的塊設備的時候,選擇合適的塊設備存盤節點。
cinder-backup daemon
可以提供塊設備的備份服務,與cinder-volume類似的是,通過加載不同設備廠商的驅動,可以將塊設備備份到各個不同的存盤系統或者磁盤陣列上。
5) swift組件詳細介紹
以下是對swift組件中詳細組成內容的介紹:
Proxy servers (swift-proxy-server)
對外提供物件服務 API,會根據環的資訊來查找服務地址并轉發用戶請求至相應的賬戶、容器或者物件服務;由于采用無狀態的 REST 請求協議,可以進行橫向擴展來均衡負載。
Account servers (swift-account-server)
提供賬戶元資料和統計資訊,并維護所含容器串列的服務,每個賬戶的資訊被存盤在一個 SQLite 資料庫中。
Container servers (swift-container-server)
提供容器元資料和統計資訊,并維護所含物件串列的服務,每個容器的資訊也存盤在一個 SQLite 資料庫中。
Object servers (swift-object-server)
提供物件元資料和內容服務,每個物件的內容會以檔案的形式存盤在檔案系統中,元資料會作為檔案屬性來存盤,建議采用支持擴展屬性的 XFS 檔案系統。
Various periodic processes
各種周期性運行的額服務,以保證物件存盤系統正常穩定,包括:
Replicator:會檢測本地磁區副本和遠程副本是否一致,具體是通過對比散列檔案和高級水印來完成,發現不一致時會采用推式(Push)更新遠程副本,例如物件復制服務會使用遠程檔案拷貝工具 rsync 來同步;另外一個任務是確保被標記洗掉的物件從檔案系統中移除
Updater:當物件由于高負載的原因而無法立即更新時,任務將會被序列化到在本地檔案系統中進行排隊,以便服務恢復后進行異步更新;例如成功創建物件后容器服務器沒有及時更新物件串列,這個時候容器的更新操作就會進入排隊中,更新服務會在系統恢復正常后掃描佇列并進行相應的更新處理.
Auditor:檢查物件,容器和賬戶的完整性,如果發現位元級的錯誤,檔案將被隔離,并復制其他的副本以覆寫本地損壞的副本;其他型別的錯誤會被記錄到日志中。
Account Reaper:移除被標記為洗掉的賬戶,洗掉其所包含的所有容器和物件。
七、openstack典型部署節點規劃

如上圖所示,一個典型的openstack部署拓撲基本是包含控制節點,計算節點和存盤節點,必要的時候可以將物件存盤節點和塊存盤節點分離,如果在租戶網路內部路由方面有比較多的需求可以將網路節點也從控制節點中剝離單獨部署。技術上上所有節點都可以分離部署或者合并部署,可以根據實際需求調整。
八、openstack網路型別介紹
典型的openstack網路可以分為3個網路,各個網路各司其職。
1) 內部網路。即是openstack平臺的物理節點之間互相通信的網路,該網路一般資料量理論上不會太多,基本為openstack平臺內部的資料流。當然如果openstack集群數量很大則另當別論。
2) provider網路。即是openstack的租戶對外提供服務的網路,租戶可以將足跡需要暴露給外部提供訪問的服務放置于這個網路中,openstack平臺外部用戶可以訪問的也只有這個網路。
3) selfservice網路。即是openstack的租戶網路,是基于vxlan的overlay網路,一般不與外部打通,用戶租戶內部的虛擬機實體之間互相訪問,該網路是軟體定義的,所以可以隨意設定網段和路由等等,外部無法直接訪問到。
九、openstack虛擬機實體創建程序
在openstack平臺上,創建一個虛擬機,需要各個組件相互配合,由先到后,逐一完成自己的作業,最終創建成一個正常運行的虛擬機實體。具體流程圖如下:
uj5u.com熱心網友回復:
您考慮Openstack開發工程師職位么?我是一家外企IT公司HR。如果您或者您的朋友看機會請聯系我公司郵箱[email protected]
抱歉打擾了!
新年快樂!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/116549.html
標籤:OpenStack
