您好,登錄后才能下訂單哦!
小生博客:http://xsboke.blog.51cto.com
-------謝謝您的參考,如有疑問,歡迎交流
目錄:
一、keystone詳解 --------------- (openstack認證服務(wù))
二、glance詳解 ---------------(openstack鏡像服務(wù))
三、nova詳解 ---------------(openstack計算服務(wù))
四、neutron詳解 ---------------(openstack網(wǎng)絡(luò)服務(wù))
五、cinder詳解 ---------------(openstack存儲服務(wù))
一、 Keystone概述
1. Keystone提供認證、權(quán)限、服務(wù)列表三大功能:
1)認證:身份驗證(identify)、令牌(token)
2) 權(quán)限:admin(管理員)、user(用戶)
3)服務(wù)列表:體現(xiàn)在用戶登錄openstack后,能夠使用的計算、存儲、網(wǎng)絡(luò)等服務(wù)列表
2. Keystione的關(guān)鍵術(shù)語:
1)一個user(用戶)可以關(guān)聯(lián)一個或多個tenant(租戶/項目)
2) 一個項目(tenant/project)由一個或多個虛擬機組成
3)一個項目(tenant/project)可以關(guān)聯(lián)一個或多個user(用戶),每個user可以擁有不同的權(quán)限
4)Role(角色):定義用戶的權(quán)限,openstack有幾個內(nèi)置的角色,admin,member等
5)Token(令牌):定義了令牌的有效時間和令牌中用戶的權(quán)限,項目等基本信息
6)Service:對應(yīng)業(yè)務(wù)模型服務(wù),如計算(compute),存儲(volume),鏡像(Glance)等
7)Endpoint:服務(wù)的訪問入口每個服務(wù)都會有自己的訪問入口,也稱之為訪問端點。
Endpoint使用對象分為三類:
admin url –>給admin用戶使用,Post:35357
internal url –> OpenStack內(nèi)部服務(wù)使用來跟別的服務(wù)通信,Port:5000
public url –>其它用戶可以訪問的地址,Post:5000
3. keystone驗證流程:以創(chuàng)建虛擬機的流程為例
用戶向keystone發(fā)送用戶名和密碼,通過驗證后,keystone會返回一個臨時token和一個service catalog的列表。
用戶用這個臨時的token向catalog列表中keystone的endpoint請求用戶對應(yīng)的tenant信息,keystone驗證token通過后會返回用戶對應(yīng)的tenant列表。
用戶從列表中選取tenant,再次向keystone請求,keystone驗證通過后,返回與該tenant相關(guān)的catalog信息和token。
用戶用該token以及tenant/user信息向catalog中的nova服務(wù)器端點請求開啟虛擬機服務(wù)。nova向keystone請求驗證:<1>.token是否合法<2>.這個租戶和用戶是否有權(quán)限來向nova請求服務(wù)?
keystone返回給nova:<1>.租戶-用戶具備訪問nova權(quán)限。<2>. token合法<3>. token屬于該租戶-用戶。
nova根據(jù)自己的規(guī)則判斷用戶是否具備開啟虛擬機的權(quán)限,如果具備,啟動虛擬機,并向用戶報告狀態(tài)。
二、 glance概述
openstack中的鏡像管理模塊,存儲了鏡像的元數(shù)據(jù)
功能:虛擬機的查找、注冊和檢索等操作
Glance在openstack中的位置:
1. Glance的概念
image identifiers/image URI:鏡像標(biāo)識
2. Image 狀態(tài)
l queued:鏡像ID已經(jīng)被保留,鏡像的metadata已經(jīng)被寫到數(shù)據(jù)庫中,但鏡像還沒有上傳
l saving:鏡像正在被上傳
l active:鏡像可以使用了
l killed:鏡像損壞或者不可用
l deleted:鏡像被刪除
3. disk format:鏡像磁盤格式(取決于虛擬化類型)
raw:分配多少占用多少空間,性能好
vhd:vmware,xen,microsoft,virtualbox支持的格式
vmdk:common format 開源社區(qū)通用的,規(guī)范化的磁盤格式
vdi:virtualbox,qemu emulator這兩類hypervisor支持的格式
iso: optical disc光盤鏡像,主要用來做歸檔之用
qcow2:主要用于qemu類型的虛擬機,特點是磁盤大小動態(tài)擴展,占多少用多少,但是其性能比raw差
aki、ari、ami:亞馬遜
4. container format:容器格式
1)容器的作用:
整合創(chuàng)建虛擬機的相關(guān)選項,如:購買華為云時選擇云主機的配置
2)容器的格式:
Bare:當(dāng)不確定磁盤格式時,使用。
Ovf:模版
aki、ami、ari:亞馬遜
3) image-create命令至少要接收三個參數(shù):
--name:指定創(chuàng)建的鏡像名
--container_format:用于表明鏡像文件是否包含了虛擬機的元數(shù)據(jù)信息,然而,目前compute服務(wù)并未使用此信息,因此,在不確定的情況下可以將其指定為bare,而常用的格式主要有bare(沒有container或元數(shù)據(jù)信息)、ovf、aki、ari或ami幾種。
--disk_format:用于指明磁盤鏡像文件的格式,包括raw,qcow2,vhd,vmdk,iso,vdi,aki,ari,ami等。
5. Glance的基本組件
Glance API:對外提供鏡像接口服務(wù),包括鏡像的上傳和下載,更改信息以及虛擬機、云硬盤快照管理等接口服務(wù)。
Glance Registry(注冊服務(wù)):存儲鏡像元數(shù)據(jù)信息與數(shù)據(jù)庫交互實現(xiàn)鏡像基礎(chǔ)信息存儲
store adapter(存儲適配器):鏡像本身的存儲,提供多種存儲適配,支持亞馬遜云存儲S3(Simple Storage Service簡單存儲服務(wù)),openstack自由的swift(對象存儲)以及常用的文件存儲系統(tǒng),當(dāng)然也可以自行開發(fā)拓展到其他存儲上。
glanceDB:glance存在數(shù)據(jù)庫中的鏡像元數(shù)據(jù)
三、 nova概述
nova在openstack中用于提供計算服務(wù),由多個組件組成
nova的核心組件:
nova-api:對外提供入口
scheduler:調(diào)度服務(wù)
compute:計算服務(wù)
compute driver:用于調(diào)度hypervisor的驅(qū)動
nova在openstack中的位置
1. nova的架構(gòu)(組件)
2. 通過一個云主機的創(chuàng)建流程了解openstack及其組件nova的工作流程
大概流程來說:
第一步:用戶通過horizon(web)登錄openstack,經(jīng)過keystone認證并獲取token
第二步:用戶請求連接nova進行相關(guān)操作,nova找到keystone驗證用戶和token
第三部:用戶的請求在nova中的MQ被提取,然后放入novacompute
第四步:novacompute連接glance,然后glance找到keystone驗證用戶和token,獲取鏡像信息
第五步:novacompute連接neutron,然后neutrom找到keystone驗證用戶和token,獲取網(wǎng)絡(luò)信息
第六步:novacompute連接cinder,然后cinder找到keystone驗證用戶和token,獲取存儲
第七步:novacompute交由底層的hypervisor創(chuàng)建虛擬機
虛擬機啟動過程如下:
界面或命令行通過RESTful API向keystone獲取認證信息。
keystone通過用戶請求認證信息,并生成auth-token返回給對應(yīng)的認證請求。
界面或命令行通過RESTful API向nova-api發(fā)送一個boot instance的請求(攜帶auth-token)。
nova-api接受請求后向keystone發(fā)送認證請求,查看token是否為有效用戶和token。
keystone驗證token是否有效,如有效則返回有效的認證和對應(yīng)的角色(注:有些操作需要有角色權(quán)限才能操作)。
通過認證后nova-api和數(shù)據(jù)庫通訊。
初始化新建虛擬機的數(shù)據(jù)庫記錄。
nova-api通過rpc.call向nova-scheduler請求是否有創(chuàng)建虛擬機的資源(HostID)。
nova-scheduler進程偵聽消息隊列,獲取nova-api的請求。
nova-scheduler通過查詢nova數(shù)據(jù)庫中計算資源的情況,并通過調(diào)度算法計算符合虛擬機創(chuàng)建需要的主機。
對于有符合虛擬機創(chuàng)建的主機,nova-scheduler更新數(shù)據(jù)庫中虛擬機對應(yīng)的物理主機信息。
nova-scheduler通過rpc.cast向nova-compute發(fā)送對應(yīng)的創(chuàng)建虛擬機請求的消息。
nova-compute會從對應(yīng)的消息隊列中獲取創(chuàng)建虛擬機請求的消息。
nova-compute通過rpc.call向nova-conductor請求獲取虛擬機消息。(Flavor)
nova-conductor從消息隊隊列中拿到nova-compute請求消息。
nova-conductor根據(jù)消息查詢虛擬機對應(yīng)的信息。
nova-conductor從數(shù)據(jù)庫中獲得虛擬機對應(yīng)信息。
nova-conductor把虛擬機信息通過消息的方式發(fā)送到消息隊列中。
nova-compute從對應(yīng)的消息隊列中獲取虛擬機信息消息。
nova-compute通過keystone的RESTfull API拿到認證的token,并通過HTTP請求glance-api獲取創(chuàng)建虛擬機所需要鏡像。
glance-api向keystone認證token是否有效,并返回驗證結(jié)果。
token驗證通過,nova-compute獲得虛擬機鏡像信息(URL)。
nova-compute通過keystone的RESTfull API拿到認證k的token,并通過HTTP請求neutron-server獲取創(chuàng)建虛擬機所需要的網(wǎng)絡(luò)信息。
neutron-server向keystone認證token是否有效,并返回驗證結(jié)果。
token驗證通過,nova-compute獲得虛擬機網(wǎng)絡(luò)信息。
nova-compute通過keystone的RESTfull API拿到認證的token,并通過HTTP請求cinder-api獲取創(chuàng)建虛擬機所需要的持久化存儲信息。
cinder-api向keystone認證token是否有效,并返回驗證結(jié)果。
token驗證通過,nova-compute獲得虛擬機持久化存儲信息。
nova-compute根據(jù)instance的信息調(diào)用配置的虛擬化驅(qū)動來創(chuàng)建虛擬機。
四、 neutron概述
neutron是在openstack m版才開始使用的,主要用于網(wǎng)絡(luò)管理。
Neutron就是openstack的networking server 代碼名稱
Neutron為使用者提供了整合多個不同的網(wǎng)絡(luò)技術(shù)來最大化發(fā)揮網(wǎng)絡(luò)功能的機制,并提供了通過三層轉(zhuǎn)發(fā)及NAT配置和管理網(wǎng)絡(luò)功能的API以實現(xiàn)負載均衡,邊緣防火墻及ipsec ***等
1. neutron的功能
提供網(wǎng)絡(luò)模型:flat、flatdhcp、vlan
IP地址管理:novanetwork需要管理虛擬機使用的IP地址,這些地址包含兩類,一類是fixed ip,在虛擬機的整個生命周期中該IP地址都不會發(fā)生變化;另一類是floating ip,是動態(tài)的分配給虛擬機的,隨時都可以收回
Dhcp功能:在flatdhcp和vlan模式下,虛擬機是通過DHCP來獲取其fixed ip的;novanetwork會啟動dnsmasq作為虛擬機的DHCP服務(wù)器,該虛擬機分配ip
安全防護:出于安全的考慮,nova中的虛擬機可以防止IP/MAC洪泛,不能隨便修改虛擬機的MAC地址,修改后虛擬機就不能上網(wǎng)了,這項功能主要是通過ebtables/iptables實現(xiàn)的。
2. Openstack早期版本的網(wǎng)絡(luò)方案
Flat:扁平
所有虛擬機在同一網(wǎng)段,
沒有網(wǎng)路隔離功能,不需要dhcp,
需要通過文件注入的方式設(shè)置網(wǎng)絡(luò),
通過網(wǎng)絡(luò)控制器(nova-network節(jié)點)對虛擬機實例進行NAT轉(zhuǎn)換,實現(xiàn)與外部的通信
FLAT模式需要在安裝openstack時需要手工配置好網(wǎng)橋(br100),所有的系統(tǒng)實例都是和同一個網(wǎng)橋連接,網(wǎng)橋與連接到網(wǎng)橋的實例組成一個虛擬網(wǎng)絡(luò)。
Flatdhcp模式
與扁平模式類似,也只有一個子網(wǎng)
不需要文件注入
通過dhcp server的方式監(jiān)聽網(wǎng)橋上的dhcpdiscover(dnsmasq)的包的方式為虛擬機分配IP地址,虛擬機啟動時通過DHCP獲取其fixed ip
Vlan模式
每個項目(project)分配一個vlan id,每個項目也可以有自己的獨立的ip地址段,屬于不同project的虛擬機連接到不同的網(wǎng)橋上,因此不同的project之間是隔離的,不會相互影響
訪問一個項目的所有虛擬機需要創(chuàng)建一個***虛擬機,以此虛擬機作為跳板去訪問該project的其他虛擬機
每個project啟動一個dnsmasq來配置虛擬機的fixedip
3. Neutron服務(wù)簡介
neutron是一個分層架構(gòu),所有的請求都先到neutron server上,neutron server有多個API,用于提供各種功能,用戶調(diào)用API后,內(nèi)部通過RPC機制調(diào)用agent層的一些服務(wù),這些agent有二層、三層的,agent相當(dāng)于一個中間代理層,agent再會調(diào)用設(shè)備層相應(yīng)的驅(qū)動來完成用戶API所請求的功能。
所有獲取網(wǎng)絡(luò)的請求——neutron server(多個API組成)——通過調(diào)用api接口來訪問neutron提供的功能——然后基于RPC調(diào)用agent——通過agent提供的相關(guān)驅(qū)動調(diào)用服務(wù)——通過服務(wù)調(diào)用設(shè)備層的設(shè)備完成請求
4. Neutron的基本概念
Networking API:NetworkingAPI通過軟件方式定義了虛擬網(wǎng)絡(luò)(network),子網(wǎng)(subnet),port(端口)等抽象層,用來描述網(wǎng)絡(luò)資源
網(wǎng)絡(luò)(network):用于劃分虛擬網(wǎng)絡(luò),neutron中“網(wǎng)絡(luò)”是一個可以被用戶創(chuàng)建的對象,相當(dāng)于交換機
子網(wǎng)(subnet):子網(wǎng)就是一個地址池,不同的子網(wǎng)間通信需要路由器的支持,子網(wǎng)隸屬于網(wǎng)絡(luò)端口(port):相當(dāng)于交換機的邏輯端口路由器(router):和物理環(huán)境下的路由器類似,Neutron中的路由器也是一個路由選擇和轉(zhuǎn)發(fā)部件。只不過在Neutron中,它是可以創(chuàng)建和銷毀的軟部件。
Dhcp:為租戶(也叫項目,project)網(wǎng)絡(luò)提供DHCP服務(wù),即IP地址動態(tài)分配,另外還會提供metadata請求服務(wù)
Dhcp aget:負責(zé)處理dhcp請求,為網(wǎng)絡(luò)分配IP
DHCP agent scheduler:DHCP agent與network的調(diào)度,即某個網(wǎng)絡(luò)的DHCP請求要發(fā)向那個DHCP agent,如采用輪詢調(diào)度算法
5. Neutron部署模式/模型
1) Single FLAT Network:單一扁平網(wǎng)絡(luò)
所有虛擬機在同意網(wǎng)段
可以使用dhcp分配ip地址
不支持浮動IP(floating ip,不使用后釋放)
2)Mutiple FLAT network:多個扁平網(wǎng)絡(luò)模式
可以創(chuàng)建多個子網(wǎng),每個項目可以連接一個或多個子網(wǎng)
不支持floatingip
3) provider router with privatenetwork:租戶私有網(wǎng)絡(luò)單個路由器
允許每個租戶擁有多個自己的私有網(wǎng)絡(luò),私有網(wǎng)絡(luò)通過路由器router連接至外部網(wǎng)絡(luò)
支持浮動ip(floating ip)
4)Per-tenant Routers with privatenetwork:多路由器私網(wǎng)模式
子網(wǎng)重疊(overlapping):支持不同網(wǎng)絡(luò)的子網(wǎng)重疊
每個租戶可以自己定義自己的虛擬路由器和私有網(wǎng)絡(luò),為虛擬機綁定floating IP,目前此種部署模式是最常用且先進的。
部署novanetwork時至少需要兩塊網(wǎng)卡,一塊作為public network,主要承載公網(wǎng)流量和openstack各個組建之間的流量,要能夠訪問公網(wǎng),ip地址可以為內(nèi)網(wǎng)地址也可以為公網(wǎng)地址;另一塊作為internal network,承載虛擬機之間相互通信的流量,不需要為其分配ip地址,只需要保證它們物理上可以互聯(lián)即可
5. nova network的主要配置選項有
Multihost:多主機模式,可以降低neutron的負載
在multihost模式下,首先需要將multi_host設(shè)置為True,然后在每個計算節(jié)點上都安裝好nova-network nova-api-metadata nova-compute
五、 cinder塊存儲
只負責(zé)提供虛擬機存儲
在openstack中,硬盤以vda、vdb、vdc這種方式顯示
存儲具體實現(xiàn)機制如圖:
nova存儲實現(xiàn)機制包括以下幾個關(guān)鍵環(huán)節(jié):
nova-api調(diào)用nova-compute主機接口run_instance。
nova-compute調(diào)用存儲接口volume-api的create方法,創(chuàng)建存儲。
volume-api存儲接口將存儲信息通過調(diào)度方式發(fā)送至調(diào)度引擎scheduler。
調(diào)度引擎scheduler根據(jù)一定的算法,選擇具體一個存儲節(jié)點,發(fā)指令至該節(jié)點cinder-volume
cinder-volume接收到創(chuàng)建云硬盤(create_volume)指令值,創(chuàng)建邏輯卷LV,并發(fā)布邏輯單元(LUN)
nova-compute接收到云硬盤創(chuàng)建成功的反饋后,調(diào)用其虛擬化實現(xiàn),如Libvirt Driver的SCSI實現(xiàn),實現(xiàn)ISCSI initiator連接至對應(yīng)的存儲邏輯單元LUN,將該塊設(shè)備分配給虛擬機。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。