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