溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

openstack(二)openstack組件詳解

發(fā)布時間:2020-06-12 13:48:03 來源:網(wǎng)絡(luò) 閱讀:3801 作者:小生博客 欄目:數(shù)據(jù)庫

   小生博客:http://xsboke.blog.51cto.com

   

  

 

                             -------謝謝您的參考,如有疑問,歡迎交流


目錄:

一、keystone詳解     --------------- (openstack認證服務(wù))

二、glance詳解       ---------------(openstack鏡像服務(wù))

三、nova詳解        ---------------(openstack計算服務(wù))

四、neutron詳解      ---------------(openstack網(wǎng)絡(luò)服務(wù))

五、cinder詳解       ---------------(openstack存儲服務(wù))






一、 Keystone概述

   openstack(二)openstack組件詳解

  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用戶使用,Post35357

  • internal url > OpenStack內(nèi)部服務(wù)使用來跟別的服務(wù)通信,Port5000

  • public url >其它用戶可以訪問的地址,Post5000

openstack(二)openstack組件詳解

  3. keystone驗證流程:以創(chuàng)建虛擬機的流程為例

   openstack(二)openstack組件詳解

  • 用戶向keystone發(fā)送用戶名和密碼,通過驗證后,keystone會返回一個臨時token和一個service catalog的列表。

  • 用戶用這個臨時的tokencatalog列表中keystoneendpoint請求用戶對應(yīng)的tenant信息,keystone驗證token通過后會返回用戶對應(yīng)的tenant列表。

  • 用戶從列表中選取tenant,再次向keystone請求,keystone驗證通過后,返回與該tenant相關(guān)的catalog信息和token

  • 用戶用該token以及tenant/user信息向catalog中的nova服務(wù)器端點請求開啟虛擬機服務(wù)。novakeystone請求驗證:<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ù)

功能:虛擬機的查找、注冊和檢索等操作

Glanceopenstack中的位置:

openstack(二)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:分配多少占用多少空間,性能好

  • vhdvmware,xen,microsoft,virtualbox支持的格式

  • vmdkcommon format 開源社區(qū)通用的,規(guī)范化的磁盤格式

  • vdivirtualbox,qemu emulator這兩類hypervisor支持的格式

  • iso optical disc光盤鏡像,主要用來做歸檔之用

  • qcow2:主要用于qemu類型的虛擬機,特點是磁盤大小動態(tài)擴展,占多少用多少,但是其性能比raw

  • akiari、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、akiariami幾種。

  • --disk_format:用于指明磁盤鏡像文件的格式,包括raw,qcow2,vhd,vmdk,isovdi,akiari,ami等。

  5. Glance的基本組件

   openstack(二)openstack組件詳解

  • 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ā)拓展到其他存儲上。

  • glanceDBglance存在數(shù)據(jù)庫中的鏡像元數(shù)據(jù)

三、 nova概述

novaopenstack中用于提供計算服務(wù),由多個組件組成

nova的核心組件:

  • nova-api:對外提供入口

  • scheduler:調(diào)度服務(wù)

  • compute:計算服務(wù)

  • compute driver:用于調(diào)度hypervisor的驅(qū)動

novaopenstack中的位置

openstack(二)openstack組件詳解

  1. nova的架構(gòu)(組件)

    openstack(二)openstack組件詳解

    openstack(二)openstack組件詳解

    openstack(二)openstack組件詳解

    openstack(二)openstack組件詳解

    openstack(二)openstack組件詳解

    openstack(二)openstack組件詳解

 2. 通過一個云主機的創(chuàng)建流程了解openstack及其組件nova的工作流程

大概流程來說:

  • 第一步:用戶通過horizonweb)登錄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)建虛擬機

    openstack(二)openstack組件詳解

虛擬機啟動過程如下:

  • 界面或命令行通過RESTful APIkeystone獲取認證信息。

  • keystone通過用戶請求認證信息,并生成auth-token返回給對應(yīng)的認證請求。

  • 界面或命令行通過RESTful APInova-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.callnova-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.castnova-compute發(fā)送對應(yīng)的創(chuàng)建虛擬機請求的消息。

  • nova-compute會從對應(yīng)的消息隊列中獲取創(chuàng)建虛擬機請求的消息。

  • nova-compute通過rpc.callnova-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通過keystoneRESTfull API拿到認證的token,并通過HTTP請求glance-api獲取創(chuàng)建虛擬機所需要鏡像。

  • glance-apikeystone認證token是否有效,并返回驗證結(jié)果。

  • token驗證通過,nova-compute獲得虛擬機鏡像信息(URL)。

  • nova-compute通過keystoneRESTfull API拿到認證ktoken,并通過HTTP請求neutron-server獲取創(chuàng)建虛擬機所需要的網(wǎng)絡(luò)信息。

  • neutron-serverkeystone認證token是否有效,并返回驗證結(jié)果。

  • token驗證通過,nova-compute獲得虛擬機網(wǎng)絡(luò)信息。

  • nova-compute通過keystoneRESTfull API拿到認證的token,并通過HTTP請求cinder-api獲取創(chuàng)建虛擬機所需要的持久化存儲信息。

  • cinder-apikeystone認證token是否有效,并返回驗證結(jié)果。

  • token驗證通過,nova-compute獲得虛擬機持久化存儲信息。

  • nova-compute根據(jù)instance的信息調(diào)用配置的虛擬化驅(qū)動來創(chuàng)建虛擬機。


四、 neutron概述

  • neutron是在openstack m版才開始使用的,主要用于網(wǎng)絡(luò)管理。

  • Neutron就是openstacknetworking 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功能:在flatdhcpvlan模式下,虛擬機是通過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)橋上的dhcpdiscoverdnsmasq)的包的方式為虛擬機分配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所請求的功能。

   openstack(二)openstack組件詳解

  • 所有獲取網(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的基本概念

  1. Networking APINetworkingAPI通過軟件方式定義了虛擬網(wǎng)絡(luò)(network),子網(wǎng)(subnet),port(端口)等抽象層,用來描述網(wǎng)絡(luò)資源

  2. 網(wǎng)絡(luò)(network):用于劃分虛擬網(wǎng)絡(luò),neutron網(wǎng)絡(luò)是一個可以被用戶創(chuàng)建的對象,相當(dāng)于交換機

  3. 子網(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)建和銷毀的軟部件。

  4. Dhcp:為租戶(也叫項目,project)網(wǎng)絡(luò)提供DHCP服務(wù),即IP地址動態(tài)分配,另外還會提供metadata請求服務(wù)

  • Dhcp aget:負責(zé)處理dhcp請求,為網(wǎng)絡(luò)分配IP

  • DHCP agent schedulerDHCP agentnetwork的調(diào)度,即某個網(wǎng)絡(luò)的DHCP請求要發(fā)向那個DHCP agent,如采用輪詢調(diào)度算法

  5. Neutron部署模式/模型

   1) Single FLAT Network:單一扁平網(wǎng)絡(luò)

  • 所有虛擬機在同意網(wǎng)段

  • 可以使用dhcp分配ip地址

  • 不支持浮動IPfloating 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ò)

  • 支持浮動ipfloating 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的主要配置選項有

   openstack(二)openstack組件詳解

  • Multihost:多主機模式,可以降低neutron的負載

  • multihost模式下,首先需要將multi_host設(shè)置為True,然后在每個計算節(jié)點上都安裝好nova-network nova-api-metadata nova-compute

五、 cinder塊存儲

  • 只負責(zé)提供虛擬機存儲

  • openstack中,硬盤以vdavdb、vdc這種方式顯示

  • 存儲具體實現(xiàn)機制如圖:

    openstack(二)openstack組件詳解


nova存儲實現(xiàn)機制包括以下幾個關(guān)鍵環(huán)節(jié):

  • nova-api調(diào)用nova-compute主機接口run_instance。

  • nova-compute調(diào)用存儲接口volume-apicreate方法,創(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 DriverSCSI實現(xiàn),實現(xiàn)ISCSI initiator連接至對應(yīng)的存儲邏輯單元LUN,將該塊設(shè)備分配給虛擬機。


向AI問一下細節(jié)

免責(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)容。

AI