OpenStack部署
基于openstack安裝部署私有雲詳細圖文教程
https://blog.csdn.net/bbwangj/article/details/79568821
Openstack部署及運用
https://blog.csdn.net/weixin_43800781/article/details/86149672
OpenStack
是由NASA(美國國家航空航天局)和Rackspace合作研發并發起的項目,是一套IaaS解決方案,開源的雲計算管理平台,以Apache許可證為授權。OpenStack既是一個社群,也是一個項目和一個開源軟體,提供開放源碼軟體,建立公共和私有雲,它提供了一個部署雲的操作平台或工具集,其宗旨在于:幫助組織運作為虛拟計算或存儲服務的雲,為公有雲、私有雲,也為大雲、小雲提供可擴充的、靈活的雲計算。
OpenStackd開源項目由社群維護,包括OpenStack計算(代号為Nova),OpenStack對象存儲(代号為Swift),并OpenStack鏡像服務(代号Glance)的集合。 OpenStack提供了一個操作平台,或工具包,用于編排雲。
Kubernetes 面向應用層,變革的是業務架構。
OpenStack 面向資源層,改變的是資源供給模式。
使用容器且叢集規模不大,直接用 Kubenetes 就可以;叢集規模大,不管應用是否隻是跑在容器中,都是 OpenStack + Kubernetes 更好。
OpenStack + Kubernetes 是各取所長,并不隻是因為慣性,而是對于多租戶需求來說,Container(容器)的隔離性還需要加強,需要加一層 VM(虛拟機) 來彌補,而 OpenStack 是很好的方案。不過,VM + Container 的模式,必然有性能的損耗,是以 OpenStack 基金會也推出一個項目叫 Kata Containers,希望減少虛拟化的開銷,兼顧容器的性能和隔離性。
總結起來,OpenStack 是相容傳統的架構,而 Kubernetes 是面向未來的架構。
簡單的說,kubernetes是管理container的工具,openstack是管理VM的工具。
container可以運作在實體機上,也可以運作在VM上。是以kubernetes不是需要openstack的支援。但對于雲計算來說,很多IasS都通過openstack來管理虛拟機。然後使用者可以在這些虛拟機上運作docker,可以通過kubernetes進行管理。
k8s叢集架構
Master節點包括API Server、Scheduler、Controller manager、etcd。
- API Server是整個系統的對外接口,供用戶端和其它元件調用,相當于“營業廳”。
- Scheduler負責對叢集内部的資源進行排程,相當于“排程室”。
- Controller manager負責管理控制器,相當于“大總管”。
然後是Node節點。
Node節點包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可選),還有就是Pod。
OpenStack架構
OpenStack 是一系列開源工具(或開源項目)的組合,主要使用池化虛拟資源來建構和管理私有雲及公共雲。其中的六個項目主要負責處理核心雲計算服務,包括計算、網絡、存儲、身份和鏡像服務。還有另外十多個可選項目,使用者可把它們捆綁打包,用來建立獨特、可部署的雲架構。
OpenStack 架構由大量開源項目組成。其中包含 6 個穩定可靠的核心服務,用于處理計算、網絡、存儲、身份和鏡像; 同時,還為使用者提供了十多種開發成熟度各異的可選服務。OpenStack 的 6 個核心服務主要擔綱系統的基礎架構,其餘項目則負責管理控制台、編排、裸機部署、資訊傳遞、容器及統籌管理等操作。
- keystone:Keystone 認證所有 OpenStack 服務并對其進行授權。同時,它也是所有服務的端點目錄。
- glance:Glance 可存儲和檢索多個位置的虛拟機磁盤鏡像。
- nova:是一個完整的 OpenStack 計算資源管理和通路工具,負責處理規劃、建立和删除操作。
- neutron:Neutron 能夠連接配接其他 OpenStack 服務并連接配接網絡。
- dashboard:web管理界面
- Swift: 是一種高度容錯的對象存儲服務,使用 RESTful API 來存儲和檢索非結構資料對象。
- Cinder 通過自助服務 API 通路持久塊存儲。
- Ceilometer:計費
- Heat:編排
通過消息隊列和資料庫,各個元件可以互相調用,互相通信。每個項目都有各自的特性,大而全的架構并非适合每一個使用者,如Glance在最早的A、B版本中并沒有實際出現應用,Nova可以脫離鏡像服務獨立運作。當使用者的雲計算規模大到需要管理多種鏡像時,才需要像Glance這樣的元件。
總圖:
Openstack建立執行個體的流程
- 通過登入界面dashboard或指令行CLI通過RESTful API向keystone擷取認證資訊。
- keystone通過使用者請求認證資訊,并生成auth-token傳回給對應的認證請求。
- 然後攜帶auth-token通過RESTful API向nova-api發送一個boot instance的請求。
- nova-api接受請求後向keystone發送認證請求,檢視token是否為有效使用者和token。
- keystone驗證token是否有效,将結果傳回給nova-api。
- 通過認證後nova-api和資料庫通訊,初始化建立虛拟機的資料庫記錄。
- nova-api調用rabbitmq,向nova-scheduler請求是否有建立虛拟機的資源(node主機)。
- nova-scheduler程序偵聽消息隊列,擷取nova-api的請求。
- nova-scheduler通過查詢nova資料庫中計算資源的情況,并通過排程算法計算符合虛拟機建立需要的主機。
- 對于有符合虛拟機建立的主機,nova-scheduler更新資料庫中虛拟機對應的實體主機資訊。
-
nova-scheduler通過rpc調用向nova-compute發送對應的建立虛拟機請求的消息。
nova-compute會從對應的消息隊列中擷取建立虛拟機請求的消息。
-
nova-compute通過rpc調用向nova-conductor請求擷取虛拟機消息。(Flavor)
nova-conductor從消息隊隊列中拿到nova-compute請求消息。
-
nova-conductor根據消息查詢虛拟機對應的資訊。
nova-conductor從資料庫中獲得虛拟機對應資訊。
-
nova-conductor把虛拟機資訊通過消息的方式發送到消息隊列中。
nova-compute從對應的消息隊列中擷取虛拟機資訊消息。
- nova-compute請求glance-api擷取建立虛拟機所需要鏡像。
- glance-api向keystone認證token是否有效,并傳回驗證結果。
- token驗證通過,nova-compute獲得虛拟機鏡像資訊(URL)。
- nova-compute請求neutron-server擷取建立虛拟機所需要的網絡資訊。
- neutron-server向keystone認證token是否有效,并傳回驗證結果。
- token驗證通過,nova-compute獲得虛拟機網絡資訊。
- nova-compute請求cinder-api擷取建立虛拟機所需要的持久化存儲資訊。
- cinder-api向keystone認證token是否有效,并傳回驗證結果。
- token驗證通過,nova-compute獲得虛拟機持久化存儲資訊。
- nova-compute根據instance的資訊調用配置的虛拟化驅動來建立虛拟機。
Openstack的詳細構架圖
Openstack的網絡拓撲結構圖
整個OpenStack是由控制節點,計算節點,網絡節點,存儲節點四大部分組成。(這四個節點也可以安裝在一台機器上,單機部署)
其中:
- 控制節點負責對其餘節點的控制,包含虛拟機建立,遷移,網絡配置設定,存儲配置設定等等
- 計算節點負責虛拟機運作
- 網絡節點負責對外網絡與内網絡之間的通信
- 存儲節點負責對虛拟機的額外存儲管理等等
控制節點架構:
控制節點包括以下服務
- 管理支援服務
- 基礎管理服務
- 擴充管理服務
管理支援服務
1)管理支援服務包含MySQL與Qpid兩個服務
- MySQL:資料庫作為基礎/擴充服務産生的資料存放的地方
- Qpid:消息代理(也稱消息中間件)為其他各種服務之間提供了統一的消息通信服務
基礎管理服務
2)基礎管理服務包含Keystone,Glance,Nova,Neutron,Horizon五個服務
- Keystone:認證管理服務,提供了其餘所有元件的認證資訊/令牌的管理,建立,修改等等,使用MySQL作為統一的資料庫
- Glance:鏡像管理服務,提供了對虛拟機部署的時候所能提供的鏡像的管理,包含鏡像的導入,格式,以及制作相應的模闆
- Nova:計算管理服務,提供了對計算節點的Nova的管理,使用Nova-API進行通信
- Neutron:網絡管理服務,提供了對網絡節點的網絡拓撲管理,同時提供Neutron在Horizon的管理面闆
- Horizon:控制台服務,提供了以Web的形式對所有節點的所有服務的管理,通常把該服務稱為DashBoard
擴充管理服務
3)擴充管理服務包含Cinder,Swift,Trove,Heat,Centimeter五個服務
- Cinder:提供管理存儲節點的Cinder相關,同時提供Cinder在Horizon中的管理面闆
- Swift:提供管理存儲節點的Swift相關,同時提供Swift在Horizon中的管理面闆
- Trove:提供管理資料庫節點的Trove相關,同時提供Trove在Horizon中的管理面闆
- Heat:提供了基于模闆來實作雲環境中資源的初始化,依賴關系處理,部署等基本操作,也可以解決自動收縮,負載均衡等進階特性。
- Centimeter:提供對實體資源以及虛拟資源的監控,并記錄這些資料,對該資料進行分析,在一定條件下觸發相應動作
控制節點一般來說隻需要一個網絡端口用于通信/管理各個節點
網絡節點架構
網絡節點僅包含Neutron服務
Neutron:負責管理私有網段與公有網段的通信,以及管理虛拟機網絡之間的通信/拓撲,管理虛拟機之上的防火等等
網絡節點包含三個網絡端口
eth0:用于與控制節點進行通信
eth1:用于與除了控制節點之外的計算/存儲節點之間的通信
eth2:用于外部的虛拟機與相應網絡之間的通信
計算節點架構
計算節點包含Nova,Neutron,Telemeter三個服務
1)基礎服務
- Nova:提供虛拟機的建立,運作,遷移,快照等各種圍繞虛拟機的服務,并提供API與控制節點對接,由控制節點下發任務
- Neutron:提供計算節點與網絡節點之間的通信服務
2)擴充服務
- Telmeter:提供計算節點的監控代理,将虛拟機的情況回報給控制節點,是Centimeter的代理服務
計算節點包含最少兩個網絡端口
eth0:與控制節點進行通信,受控制節點統一調配
eth1:與網絡節點,存儲節點進行通信
存儲節點架構
存儲節點包含Cinder,Swift等服務
- Cinder:塊存儲服務,提供相應的塊存儲,簡單來說,就是虛拟出一塊磁盤,可以挂載到相應的虛拟機之上,不受檔案系統等因素影響,對虛拟機來說,這個操作就像是新加了一塊硬碟,可以完成對磁盤的任何操作,包括挂載,解除安裝,格式化,轉換檔案系統等等操作,大多應用于虛拟機空間不足的情況下的空間擴容等等
- Swift:對象存儲服務,提供相應的對象存儲,簡單來說,就是虛拟出一塊磁盤空間,可以在這個空間當中存放檔案,也僅僅隻能存放檔案,不能進行格式化,轉換檔案系統,大多應用于雲磁盤/檔案
存儲節點包含最少兩個網絡接口
eth0:與控制節點進行通信,接受控制節點任務,受控制節點統一調配
eth1:與計算/網絡節點進行通信,完成控制節點下發的各類任務
OpenStack主要元件
Openstack發展至今,總共內建了下面幾個元件:
Nova - 計算服務
Neutron-網絡服務
Swift - 對象存儲服務
Cinder-塊存儲服務
Glance - 鏡像服務
Keystone - 認證服務
Horizon - UI服務
Ceilometer-監控服務
Heat-叢集服務
Trove-資料庫服務
元件間的關系圖如下:
重要元件介紹
1、OpenStack認證服務(Keystone)
Keystone為所有的OpenStack元件提供認證和通路政策服務,它依賴自身REST(基于Identity API)系統進行工作,主要對(但不限于)Swift、Glance、Nova等進行認證與授權。事實上,授權通過對動作消息來源者請求的合法性進行鑒定。
Keystone采用兩種授權方式,一種基于使用者名/密碼,另一種基于令牌(Token)。
除此之外,Keystone提供以下三種服務:
- 令牌服務:含有授權使用者的授權資訊
- 目錄服務:含有使用者合法操作的可用服務清單
- 政策服務:利用Keystone具體指定使用者或群組某些通路權限
keystone認證服務注意點:
- 服務入口:如Nova、Swift和Glance一樣每個OpenStack服務都擁有一個指定的端口和專屬的URL,我們稱其為入口(endpoints)。
- 區位:在某個資料中心,一個區位具體指定了一處實體位置。在典型的雲架構中,如果不是所有的服務都通路分布式資料中心或伺服器的話,則也稱其為區位。
-
使用者:Keystone授權使用者
PS:代表一個個體,OpenStack以使用者的形式來授權服務給它們。使用者擁有證書(credentials),且可能配置設定給一個或多個租戶。經過驗證後,會為每個單獨的租戶提供一個特定的令牌。
- 服務:總體而言,任何通過Keystone進行連接配接或管理的元件都被稱為服務。舉個例子,我們可以稱Glance為Keystone的服務。
-
角色:為了維護安全限定,就雲内特定使用者可執行的操作而言,該使用者關聯的角色是非常重要的。
PS:一個角色是應用于某個租戶的使用權限集合,以允許某個指定使用者通路或使用特定操作。角色是使用權限的邏輯分組,它使得通用的權限可以簡單地分組并綁定到與某個指定租戶相關的使用者。
-
租間:租間指的是具有全部服務入口并配有特定成員角色的一個項目。
PS:一個租間映射到一個Nova的“project-id”,在對象存儲中,一個租間可以有多個容器。根據不同的安裝方式,一個租間可以代表一個客戶、帳号、組織或項目。
2、OpenStack計算設施----Nova
Nova是OpenStack計算的彈性控制器。OpenStack雲執行個體生命期所需的各種動作都将由Nova進行處理和支撐,這就意味着Nova以管理平台的身份登場,負責管理整個雲的計算資源、網絡、授權及測度。雖然Nova本身并不提供任何虛拟能力,但是它将使用libvirt API與虛拟機的主控端進行互動。Nova通過Web服務API來對外提供處理接口,而且這些接口與Amazon的Web服務接口是相容的。
功能及特點:
- 執行個體生命周期管理
- 計算資源管理
- 網絡與授權管理
- 基于REST的API
-
異步連續通信
-支援各種宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V
Nova彈性雲(OpenStack計算部件)包含以下主要部分:
- API Server(nova-api)
- 消息隊列(rabbit-mq server)
- 運算工作站(nova-compute)
- 網絡控制器(nova-network)
- 卷管理(nova-volume)
- 排程器(nova-scheduler)
解釋如下:
1)API伺服器(nova-api)
API伺服器提供了雲設施與外界互動的接口,它是外界使用者對雲實施管理的唯一通道。通過使用web服務來調用各種EC2的API,接着API伺服器便通過消息隊列把請求送達至雲内目标設施進行處理。作為對EC2-api的替代,使用者也可以使用OpenStack的原生API,我們把它叫做“OpenStack API”。
2)消息隊列(Rabbit MQ Server)
OpenStack内部在遵循AMQP(進階消息隊列協定)的基礎上采用消息隊列進行通信。Nova對請求應答進行異步調用,當請求接收後便則立即觸發一個回調。由于使用了異步通信,不會有使用者的動作被長置于等待狀态。例如,啟動一個執行個體或上傳一份鏡像的過程較為耗時,API調用就将等待傳回結果而不影響其它操作,在此異步通信起到了很大作用,使整個系統變得更加高效。
3)排程器(nova-scheduler)
排程器負責把nova-API調用送達給目标。排程器以名為“nova-schedule”的守護程序方式運作,并根據排程算法從可用資源池中恰當地選擇運算伺服器。有很多因素都可以影響排程結果,比如負載、記憶體、子節點的遠近、CPU架構等等。強大的是nova排程器采用的是可插入式架構。
目前nova排程器使用了幾種基本的排程算法:
随機化:主機随機選擇可用節點;
可用化:與随機相似,隻是随機選擇的範圍被指定;
簡單化:應用這種方式,主機選擇負載最小者來運作執行個體。負載資料可以從别處獲得,如負載均衡伺服器。
4)運算工作站(nova-compute)
運算工作站的主要任務是管理執行個體的整個生命周期。他們通過消息隊列接收請求并執行,進而對執行個體進行各種操作。在典型實際生産環境下,會架設許多運算工作站,根據排程算法,一個執行個體可以在可用的任意一台運算工作站上部署。
5)網絡控制器(nova-network)
網絡控制器處理主機的網絡配置,例如IP位址配置設定,配置項目VLAN,設定安全群組以及為計算節點配置網絡。
6)卷工作站(nova-volume)
卷工作站管理基于LVM的 執行個體卷,它能夠為一個執行個體建立、删除、附加卷,也可以從一個執行個體中分離卷。卷管理為何如此重要?因為它提供了一種保持執行個體持續存儲的手段,比如當結束一個 執行個體後,根分區如果是非持續化的,那麼對其的任何改變都将丢失。可是,如果從一個執行個體中将卷分離出來,或者為這個執行個體附加上卷的話,即使執行個體被關閉,資料 仍然儲存其中。這些資料可以通過将卷附加到原執行個體或其他執行個體的方式而重新通路。
是以,為了日後通路,重要資料務必要寫入卷中。這種應用對于資料伺服器執行個體的存儲而言,尤為重要。
3、OpenStack鏡像伺服器----Glance
OpenStack鏡像伺服器是一套虛拟機鏡像發現、注冊、檢索系統,我們可以将鏡像存儲到以下任意一種存儲中:
- 本地檔案系統(預設)
- S3直接存儲
- S3對象存儲(作為S3通路的中間管道)
- OpenStack對象存儲等等。
功能及特點:
- 提供鏡像相關服務。
Glance構件:
1)Glance-API:
主要負責接收響應鏡像管理指令的Restful請求,分析消息請求資訊并分發其所帶的指令(如新增,删除,更新等)。預設綁定端口是9292。
2)Glance-Registry:
主要負責接收響應鏡像中繼資料指令的Restful請求。分析消息請求資訊并分發其所帶的指令(如擷取中繼資料,更新中繼資料等)。預設綁定的端口是9191。
4、OpenStack存儲設施----Swift
Swift為OpenStack提供一種分布式、持續虛拟對象存儲,它類似于Amazon Web Service的S3簡單存儲服務。Swift具有跨節點百級對象的存儲能力。Swift内建備援和失效備援管理,也能夠處理歸檔和媒體流,特别是對大資料(千兆位元組)和大容量(多對象數量)的測度非常高效。
swift功能及特點:
- 海量對象存儲
- 大檔案(對象)存儲
- 資料備援管理
- 歸檔能力-----處理大資料集
- 為虛拟機和雲應用提供資料容器
- 處理流媒體
- 對象安全存儲
- 備份與歸檔
- 良好的可伸縮性
Swift元件
Swift賬戶
Swift容器
Swift對象
Swift代理
Swift RING
Swift代理伺服器
使用者都是通過Swift-API與代理伺服器進行互動,代理伺服器正是接收外界請求的門衛,它檢測合法的實體位置并路由它們的請求。
此外,代理伺服器也同時處理實體失效而轉移時,故障切換的實體重複路由請求。
Swift對象伺服器
對象伺服器是一種二進制存儲,它負責處理本地存儲中的對象資料的存儲、檢索和删除。對象都是檔案系統中存放的典型的二進制檔案,具有擴充檔案屬性的中繼資料(xattr)。
注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支援,但是并沒有有效測試證明在XFS,JFS,ReiserFS,Reiser4和ZFS下也同樣能運作良好。不過,XFS被認為是目前最好的選擇。
Swift容器伺服器
容器伺服器将列出一個容器中的所有對象,預設對象清單将存儲為SQLite檔案(譯者注:也可以修改為MySQL,安裝中就是以MySQL為例)。容器伺服器也會統計容器中包含的對象數量及容器的存儲空間耗費。
Swift賬戶伺服器
賬戶伺服器與容器伺服器類似,将列出容器中的對象。
Ring(索引環)
Ring容器記錄着Swift中實體存儲對象的位置資訊,它是真實實體存儲位置的實體名的虛拟映射,類似于查找及定位不同叢集的實體真實實體位置的索引服務。這裡所謂的實體指賬戶、容器、對象,它們都擁有屬于自己的不同的Rings。
5、OpenStack管理的Web接口----Horizon
Horizon是一個用以管理、控制OpenStack服務的Web控制台,它可以管理執行個體、鏡像、建立密匙對,對執行個體添加卷、操作Swift容器等。除此之外,使用者還可以在控制台中使用終端(console)或VNC直接通路執行個體。
總之,Horizon具有如下一些特點:
- 執行個體管理:建立、終止執行個體,檢視終端日志,VNC連接配接,添加卷等
- 通路與安全管理:建立安全群組,管理密匙對,設定浮動IP等
- 偏好設定:對虛拟硬體模闆可以進行不同偏好設定
- 鏡像管理:編輯或删除鏡像
- 檢視服務目錄
- 管理使用者、配額及項目用途
- 使用者管理:建立使用者等
- 卷管理:建立卷和快照
- 對象存儲處理:建立、删除容器和對象
- 為項目下載下傳環境變量