Openstack是一個雲平臺管理的項目,它不是一個軟件。也就是說咱們可使用Openstack來管理咱們數據中內心面的各類資源池;它裏面包含了不少子項目。html
Openstack經過一個抽象層將普通計算機中的各類資源分紅單一的組,當咱們須要建立虛擬機的時候能夠選擇爲其分配多少內存、幾個CPU、幾塊網卡、多大的存儲等;Openstack就是將這些資源劃分紅組,而後在這些組裏爲虛擬機分配資源(這些資源也是有限制的,好比網咱們有一個20G的內存資源組,它是由4個5G的主機組合而來的;當咱們建立虛擬機時,是沒法爲其分配大於5G的內存的,由於虛擬機是受單個物理機限制的。);mysql
Openstack的各services:web
1.Compute(計算):管理虛擬機的整個生命週期,用於對虛擬機進行調度、資源分配、建立、銷燬、遠程鏈接等,其項目名稱爲Nova;sql
nova-api:接收並響應終端用戶對compute節點的調用服務;它會將請求放入Message Queue供其餘組件獲取;數據庫
nova-api-metadata:接收並響應運行起來的虛擬機實例發起的meta相應的調用請求;api
nova-compute:藉助於Hypervisor的API啓動及終止虛擬機實例,更新虛擬機在數據庫中的信息等;從隊列中接收請求並執行操做;瀏覽器
nova-scheduler:從隊列中取出VM的啓動請求,並決定由哪一個運行compute服務的Hypervisor來啓動並運行虛擬機;緩存
nova-conductor:做爲nova-compute與database的中間層,避免nova-compue直接與數據庫進行交互,從而致使數據庫出錯;(nova-compute與nova-conductor不是直接交互,而是nova-compute先將消息發送到queue中,而後再由nova-conductor訂閱處理)網絡
nova-consoleauth:用於控制檯的受權驗證;架構
nova-novncproxy:爲經由vnc接口要連入各虛擬機實例的請求提供代理服務,從而使得僅在Dashboard接口上直接向各VM所在的compute節點的VNC服務發起請求;
Compute服務中有一個核心組件Queue(隊列),幾乎各個API都要通過這個Queue才能與其餘API通訊;其各API直接經過訂閱其餘與本身相關的API的消息隊列來完成信息交互;其中發佈消息的咱們能夠稱之爲生產者,接收消息的能夠稱之爲消費者;其中生產者能夠有多種,也就意味着有多種隊列,消費者也能夠有多種,而一個消費者能夠訂閱多種生產者隊列,一個生產者隊列也能夠被多個消費者訂閱;
2.Networking(網絡):管理虛擬機的網絡配置,用於爲虛擬機按需分配網絡,支持衆多流行的網絡管理框架,其項目名稱爲Neutron;
Network:隔離的二層網絡,相似於VLAN;
Subnet:有着關聯配置的狀態的三層網絡,或者說是由Ipv4或Ipv6定義的地址塊造成的網絡;
Port:將主機連入網絡設備的鏈接接口;
ML2:做爲管理網絡設備的統一管理接口;
3.Object Storage(對象存儲):基於RESTful的API對非結構化數據對象進行存儲和檢索,其中的數據自帶元數據信息,使用分佈式存儲,通常用於存儲磁盤映像文件,適用於存儲一次寫入,屢次讀取的文件,其項目名稱爲Swift;
4.Block Storage(塊存儲):用於爲虛擬機提供數據的存儲功能,其項目名稱爲Cinder;
cinder-api:接受API請求,並將它們路由到cinder-volumefor操做。
cinder-volume:直接面對存儲服務,經過消息隊列直接與cinder-scheduler交互;
cinder-scheduler daemon:用於調度選擇能夠建立卷的最佳存儲節點;
cinder-backup daemon:爲卷提供備份功能;
messaging queue:用於塊存儲進程之間傳遞信息。
5.Identity(身份認證):爲Openstack中的服務提供認證受權功能以及端點編錄功能(Openstack中的各類服務要到Keystone中查詢其餘服務的訪問端點),其項目名稱爲Keystone;
認證方式:
token:使用一串設定的字符串做爲令牌進行認證(建議使用openssl rand -hex 10生成隨機字符串);能夠基於K/V方式存儲;
這個機制通常是第一次進行安裝登陸Keystone時才使用的,當設置完用戶密碼之後會被禁用;
帳號/密碼:使用用戶名和密碼進行認證;
核心術語:
User:一個用戶能夠關聯至多個project;
Project:標識一個項目,之前叫Tenant(租戶);
Role:角色,標識用戶的身份,不一樣角色擁有不一樣權限;
Service:服務,即Openstack中的各類service;
Endpoint:Openstack中各類服務的訪問入口(URI形式);
Endpoint分爲三種:public url能夠被全局全部人訪問、private url能夠被局域網內訪問、admin url只能夠被管理員訪問;
6.Image(映像):爲虛擬機存儲和檢索其要使用的映像文件的位置,其項目名稱爲Glance;
Glance組件:
glance-api:Glance的API服務接口,負責接收對Image Service API中映像文件的建立、刪除、查找、下載及存儲請求;監聽在9292端口;
glance-registry:用於與Mysql數據庫交互(在Glance的數據庫中存儲着兩張表:image表保存了映像文件的格式、大小等信息;image properties表保存了映像的定製化信息;),存儲、處理及獲取映像文件的元數據,例如映像文件的大小及類型等;監聽在9191端口;
image store:是一個存儲的接口層,經過這個接口glance能夠獲取和保存映像,具體的實現須要外部存儲的支持;image store支持亞馬遜的S3、Swift、sheepdog、GlusterFS等;
database:存儲映像文件的元數據;
映像文件存儲倉庫:支持多中類型的映像文件存儲機制,包括使用普通的文件系統、對象存儲、RADOS塊設備、HTTP以及Amazon的S3等;
7.Dashboard:Openstack的Web管理接口,其項目名稱爲Horizon;
8.Teiemetry:提供監控和計量服務,其項目名稱爲Ceilometer;
9.Orchestration:提供基於模板自動化部署虛擬機的組件,其項目名稱爲Heat;
10.Database Service:提供數據庫應用服務,其項目名稱爲Trove;
……
概念架構:
邏輯架構:
如概念結構所示,OpenStack由幾個獨立的部分組成,稱爲OpenStack服務。全部服務都經過公共身份服務進行身份驗證。各個服務經過公共API相互交互,除非須要特權管理員命令。
在內部,OpenStack服務由幾個進程組成。全部服務都至少有一個API進程,它監聽API請求,預處理它們並將它們傳遞給服務的其餘部分。除Identity服務外,實際工做由不一樣的進程完成。
對於一個服務的進程之間的通訊,使用AMQP消息代理。服務的狀態存儲在數據庫中。在部署和配置OpenStack雲時,您能夠選擇多種消息代理和數據庫解決方案,例如RabbitMQ,MySQL,MariaDB和SQLite。
用戶能夠經過Horizon Dashboard實現的基於Web的用戶界面,命令行客戶端以及經過瀏覽器插件或curl等工具發出API請求來訪問OpenStack 。對於應用程序, 可使用多個SDK。最終,全部這些訪問方法都會向各類OpenStack服務發出REST API調用。
Openstack各服務的請求流程:
網絡拓撲類型:
提供商網絡選項以最簡單的方式部署OpenStack Networking服務,主要是第2層(橋接/交換)服務和網絡的VLAN分段。從本質上講,它將虛擬網絡橋接到物理網絡,並依賴於物理網絡基礎設施來實現第3層(路由)服務。
此選類型乏對自助(私有)網絡,第3層(路由)服務以及LBaaS和 FWaaS等高級服務的 支持。若是您須要這些功能,請考慮下面的自助服務網絡選項。
自助服務網絡選項經過第3層(路由)服務加強了提供商網絡選項,這些服務使用覆蓋分段方法(如VXLAN)實現 自助服務網絡。從本質上講,它使用NAT將虛擬網絡路由到物理網絡。此外,此選項爲LBaaS和FWaaS等高級服務奠基了基礎。
Openstack(Stein版)的安裝:
配置步驟:
1.爲各個節點配置合理的IP地址及主機名;
2.配置時間同步;
3.安裝OpenstackClient軟件包;
4.配置SQL Database;
5.配置消息隊列(RabbitMQ);
啓動之後能夠經過其監聽的15672接口訪問RadditMQ的web界面;
iptables -A INPUT -p tcp --dport 5672 -j ACCEPT
6.配置Memcached,提供緩存加速;
7.配置Openstack的各個Service;
Keystone
同步數據庫時要使用keystone用戶的身份,要否則就要修改/var/log/keystone/keystone.log這個文件的屬組爲keystone且具備讀寫權限;
Glance
/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf文件中的#auth_uri = <None>參數描述爲:Reason: The auth_uri option is deprecated in favor of www_authenticate_uri and will be removed in the S release。可是若是使用auth_uri替換官網中的auth_url則會報錯。表面上的錯誤是glance已經啓動(狀態爲running),可是使用netstat -nultp看不見9292和9191端口;
錯誤爲:MissingRequiredOptions: Auth plugin requires parameters which were not given: auth_url
WARNING keystonemiddleware.auth_token [-] AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True.
Plancement
WSGI:https://blog.csdn.net/jinixin/article/details/84677104
Note:這一步在以前的版本中沒有;
Nova
若是你使用的是VMware中的虛擬機做爲計算機點的話,則其計算節點中nova的配置文件/etc/nova/nova.conf中的virt_type要配置爲qemu,官網中爲kvm,可是若是使用kvm就會卡在加載映像文件那,沒法啓動系統;
Note:
1.配置計算節點與控制節點時,要注意節點的防火牆,在計算節點要注意放行rabbit的5672端口,不然會報關於rabbit鏈接超時的錯誤;
2.OpenStack的各類服務本身會生成相關的iptables規則,最好不要亂改,尤爲是計算節點;我作實驗時在將控制節點與計算節點的iptables規則清除後,會有各類錯誤,其中就包含rabbit超時,mysql數據庫(多是性能問題)錯誤等;
3.最好爲控制節點與計算節點分配儘量多的資源,不然會發生建立虛擬機失敗的狀況,或者是執行命令極慢的狀況;
Neutron
Horizon
Cinder
具體配置見官網:https://docs.openstack.org/install-guide/
官網描述:https://docs.openstack.org/install-guide/overview.html
根據馬哥視頻作的學習筆記,若有錯誤,歡迎指正;侵刪