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