欢迎来真孝善网,为您提供真孝善正能量书籍故事!

深入解析OpenStack技术与应用(笔记分享)

时间:11-16 神话故事 提交错误

其实深入解析OpenStack技术与应用(笔记分享)的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享深入解析OpenStack技术与应用(笔记分享)的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

opensack架构图概念架构图

openstack 概念架构图

二、openstack认证服务(keystone)

1.keystone的功能

openstack 是一种SOA 架构。理论上,各个子项目独立提供相关服务,相互独立,并且是分布式的。比如nova提供计算服务,glance提供镜像服务等。

事实上,所有组件都依赖于keystone(单点),它集成了三个功能:

管理身份验证:验证用户身份

授权: 基于角色的权限管理

服务目录(catalog of services):提供服务目录(ServiceCatalog:包括服务和端点)服务,类似于UDDI服务的概念。用户(无论是Dashboard、APIClient)需要访问Keystone来获取服务列表以及各个服务的地址(Openstack中称为Endpoint)

2.keystone的基本概念

用户

使用服务的用户可以是人、服务或系统。任何使用openstack服务的对象都可以称为用户。当用户访问OpenStack时,Keystone将验证其身份。项目

租户可以理解为个人、项目或组织拥有的资源的集合。一个租户可以有很多用户,这些用户可以根据自己的权限使用租户中的资源。代币

指用作访问资源的令牌的一串位值或字符串。 Token包含可访问资源的范围和有效时间。角色

角色用于分配操作权限。可以为用户分配角色,使用户获得角色对应的操作权限。安全性由两部分组成:身份验证和授权服务

Openstack Service是Openstack中运行的组件服务。 nova和glance都属于服务,需要在keystone上创建并指定类型。

创建服务如果您有服务,请创建端点并根据服务类型搜索该服务。服务决定了每个角色可以做什么。服务通过其各自的policy.json 文件控制对角色的访问。端点

地址,通常是URL,可用于通过网络访问和定位Openstack 服务。例如,当Nova需要访问Glance服务获取Image时,Nova通过访问Keystone获取Glance的Endpoint,然后通过访问Endpoint获取Glance服务。我们可以通过Endpoint的region属性定义多个region。端点对象分为三类:

管理员URL:供管理员用户使用,与常规访问分开。

内部URL:Openstack内部服务用于与其他服务通信,只能通过局域网访问。

公共URL:其他用户可以访问并且可以全局访问的地址。目录

用户和服务可以使用keystone管理的目录来定位其他服务。目录是openstack部署的相关服务的集合。每个服务都有一个或多个端点(即可访问的URL地址),即catalog=services+endpoint。

3.keystone与其他组件交互

keystone 与其他组件配合使用.png

4.keystone工作流程

(1) 用户从Keystone 获取token 和服务列表

(2) 当用户访问服务时,他或她出示他或她的令牌。

(3)相关服务要求Keystone验证代币的合法性

keystone工作流程.png

三、openstack镜像服务(glance)

1.glance的组件

Glance-API

主要用于响应各种REST请求,然后通过其他模块(主要是glance-registry组件和后端存储接口)完成图片的上传、删除、查询等操作。可以简单分为两部分:一层中间件,主要做一些请求的解析(比如分析发布版本号),另一部分提供实际服务(比如和后端存储接口交互)用于图像上传和下载)。 )。默认绑定端口为9292。 Glance-Registry

图像注册服务用于为图像元数据提供REST接口。主要工作是存储或获取图像的元数据以及与MySQL数据库交互。也可以简单细分为API和具体Server两部分。元数据是指与镜像相关的一些信息(如id、大小、状态、位置、校验和、min_disk、min_ram、所有者等)。真实的图像数据存储在实际使用的后端存储中(例如Swift、S3、Filesystem等)。默认绑定端口为9191。 镜像存储

严格来说,Image Store 不是Glance 的组件。这里分开只是为了方便理解。它只是一个接口层,提供图像存储和查询的接口。具体实现需要外部存储(Swift、S3)的支持。

2.glance的工作流程

Glance需要配置服务:glance-api、glance-registry

Glance-api:接受云系统镜像的创建、删除、读取请求

Glance-registry:云系统镜像注册服务

一目了然的工作流程.png

(1)Glance-api接收REST API请求,与nova-api类似

(2) Glance-api在功能上与nova-api非常相似。它们都接收REST API请求,然后使用其他模块(glance-registry和Image Store)完成图像搜索、获取、上传和删除等操作。api默认监听端口为9292

(3)Glance-registry用于与MySQL数据库交互,存储或获取图像的元数据;它提供了与图像元数据相关的REST接口。通过glance-registry,您可以将图像的各个方面写入或获取到数据库中。对于这个数据,glance-registry的监听端口是9191。glance数据库中有两张表,一张是图像表,一张是图像属性表。

(4)图像存储是存储接口层。通过该接口,glance可以获取图像。镜像存储支持Amazon的S3、OpenStack自己的swift、ceph、GlusterFS等分布式存储。 Image Store只是一个接口,具体实现需要外部存储支持。

四、openstack计算服务(nova)

1nova的组件

nova-api:

它是整个新星的门户。所有对nova 的请求首先由nova-api 处理。 Nova-api 在keystone 中公开了几个HTTP Rest api 接口。客户端可以向端点指定的地址发送请求,并向nova-api请求操作。

Nova-api 将处理收到的HTTP api 请求,如下所示:

(1)检查客户端传入的参数是否合法;

(2)调用nova的其他子服务处理客户端HTTP请求;

(3)将nova其他子服务返回的结果进行格式化,返回给客户端。 nova 导体:

nova-compute需要获取并更新数据库中的实例信息,但nova-compute并不直接访问数据库,而是通过nova-conductor访问数据。

使用nova-conductor 有两个显着的好处:

(1)更好的系统安全性:在早期的openstack版本中,nova-compute可以直接访问数据库,但想象一下,如果任何一个计算节点被黑客攻击,控制节点上的数据库将面临很大的风险。为了解决这个问题,引入了nova-conductor;

(2)更好的扩展性:nova-conductor成立后,nova的扩展性得到了提升。 Nova-compute通过消息中间件与conductor交互。这种松散的架构允许配置多个nova-conductor实例,以应对访问数据库的计算节点数量不断增加。 nova 调度程序

虚拟机调度服务负责决定虚拟机运行在哪个计算节点上。

——启动实例调度策略如何选择

Filter调度器(scheduler),调度过程分为两步:

(1)通过filter选择符合条件的计算节点(运行nova-compute)

(2)通过加权选择最优(权重值最大)的计算节点创建nova-compute。

nova-compute 运行在计算节点上,负责管理节点上的实例。 OpenStack对实例的操作最终都是由nova-compute完成的。 nova-compute 与Hypervisor 配合实现OpenStack 的实例生命周期管理。控制台界面

nova-console: 用户可以通过多种方式访问虚拟机的控制台:

nova-novncproxy: 基于Web浏览器的VNC访问

nova-consoleauth: 负责为访问虚拟机控制台的请求提供Token认证。

nova-cert: 提供x509 证书支持

2.nova创建云主机

image.png

1. 通过界面或命令行通过RESTful API从keystone获取认证信息。

2. Keystone 通过用户请求认证信息,生成auth-token 返回给对应的认证请求。

3、界面或命令行通过RESTful API向nova-api发送启动实例请求(携带auth-token)。

4. nova-api接受请求后,向keystone发送认证请求,检查token是否是有效的用户和token。

5. Keystone验证token是否有效。如果有效,则返回有效的认证和对应的角色(注:部分操作需要角色权限才能操作)。

6. 认证通过后,nova-api与数据库进行通信。

7. 初始化新创建的虚拟机的数据库记录。

8、nova-api使用rpc.call请求nova-scheduler是否有资源(Host ID)来创建虚拟机。

9、nova-scheduler进程监听消息队列,获取nova-api请求。

10、nova-scheduler查询nova数据库中的计算资源,利用调度算法计算出满足虚拟机创建需求的主机。

11、对于满足虚拟机创建要求的主机,nova-scheduler会更新数据库中该虚拟机对应的物理主机信息。

12、nova-scheduler通过rpc.cast向nova-compute发送相应的虚拟机创建请求消息。

13、nova-compute会从对应的消息队列中获取请求创建虚拟机的消息。

14、nova-compute通过rpc.call请求nova-conductor获取虚拟机消息。 (味道)

15. nova-conductor从消息队列中获取nova-compute请求消息。

16、nova-conductor根据消息查询虚拟机对应的信息。

17、nova-conductor从数据库获取虚拟机对应信息。

18、nova-conductor通过消息将虚拟机信息发送到消息队列。

19、nova-compute从对应的消息队列中获取虚拟机信息消息。

20、nova-compute通过keystone的RESTfull API获取认证token,通过HTTP请求glance-api获取创建虚拟机所需的镜像。

21、glance-api向keystone验证token是否有效,并返回验证结果。

22、token验证通过,nova-compute获取虚拟机镜像信息(URL)。

23、nova-compute通过keystone的RESTfull API获取认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需的网络信息。

24. Neutron-server向keystone验证token是否有效,并返回验证结果。

25、token验证通过,nova-compute获取虚拟机网络信息。

26、nova-compute通过keystone的RESTfull API获取认证token,通过HTTP请求cinder-api获取创建虚拟机所需的持久存储信息。

27、Cinder-api向keystone验证token是否有效,并返回验证结果。

28. token验证通过,nova-compute获取虚拟机的持久存储信息。

29、nova-compute根据实例信息调用配置的虚拟化驱动创建虚拟机。

五、openstack网络服务(neutron)

1.基本概念

bridge:网络桥接器,在Linux中用于表示可以连接不同网络设备的虚拟设备。 Linux传统上实现的网桥类似于集线器设备,而ovs管理的网桥一般类似于交换机。 br-int:bridge-intergration,集成网桥,常用于表示实现内部网络主要功能的网桥。 br-ex:bridge-external,外部网桥,通常代表负责与外部网络通信的网桥。 GRE:通用路由封装,通过封装实现隧道的一种方式。在openstack中,一般是基于L3 GRE的,即原来的pkt/GRE/IP/EthernetVETH:虚拟以太网接口。通常以成对的形式出现。一端发送的数据包将被另一端接收,这可以在两个网桥之间形成间隙。渠道。 qvb:neutron veth,Linux Bridge-sideqvo:neutron veth,OVS-sideTAP设备:模拟一个二层网络设备,可以接收和发送二层数据包。 TUN设备:模拟一个三层网络设备,可以接收和发送三层数据包。 iptables:一种常见的防火墙软件,在Linux上实现安全策略。 Vlan:虚拟局域网。标签用于在同一物理局域网下实现隔离。可用标签为1-4094。 VXLAN:一种Overlay实现,使用UDP协议作为底层传输协议。它通常被认为是VLAN技术的扩展或替代。命名空间:用于实现隔离的一组机制。不同命名空间中的资源彼此不可见。

2.neutron管理实体

网络

隔离的L2 广播域通常由创建它的用户拥有。用户可以拥有多个网络。网络是最基本的。子网和端口需要与网络关联。

网络上可以有多个子网。同一网络中的主机一般可以通过交换机或路由器连接。子网

隔离的L3 域、子网代表一组分配了IP 的虚拟机。每个子网必须有一个CIDR 并与一个网络关联。可以从CIDR 或用户指定的池中选择IP。

子网可能有一个网关、一组DNS 和主机路由。不同子网之间的L3相互不可见,必须通过L3端口通过三层网关(路由器)进行通信。

允许传入和传出流量的接口通常绑定到多个MAC 地址和IP 地址以进行寻址。通常是虚拟交换机上的虚拟接口。

虚拟机将网卡挂载到该端口,并通过该端口访问网络。当一个端口有IP时,就意味着它属于某个子网。

3.抽象系统构架

无论具体的网络虚拟化实现如何,一个简化抽象的系统架构可以表示为下图:

image.png

3.neutron的组件

Neutron 服务器

它包括守护进程neutron-server和各种插件neutron--plugin,既可以安装在控制节点上,也可以安装在网络节点上。 neutron-server提供API接口,将API调用请求传递给配置的插件进行后续处理。插件需要访问数据库来维护各种配置数据和对应关系,如路由器、网络、子网、端口、浮动IP、安全组等。插件代理:

虚拟网络上数据包的处理就是由这些插件代理完成的。名字叫中子剂。在每个计算节点和网络节点上运行。一般来说,无论你选择什么插件,都需要选择相应的代理。 Agent和Neutron Server及其插件之间的交互是通过消息队列来支持的。 DHCP 代理:

名称为neutron-dhcp-agent,为每个租户网络提供DHCP服务,部署在网络节点上。每个插件也使用这个代理。三层代理(L3 Agent):名称为neutron-l3-agent,

为客户端访问外部网络提供三层转发服务。也部署在网络节点上。

六、openstack块存储服务(cinder)

1、存储类型介绍

在Opestanck中创建云主机的硬盘时,可以有两种存储类型,即本地存储和持久存储。 (与后端存储类型[块存储、文件存储、对象存储]无关) 本地磁盘是指创建云主机时使用的物理机上的本地磁盘。它是一种临时存储。当虚拟机被删除时,临时存储磁盘也会被删除。云盘,通过cinder创建的持久化存储。由cinder 创建并由cinder 管理。云服务也称为EVS服务。

2、cinder的组件

Cinder-Api

用于提供Restful API的接口,是唯一接收用户请求的接口。包括卷的增删改查(包括源卷创建、镜像、快照)、快照增删改查、备份、卷类型管理、挂载/卸载等。 Cinder-Scheduler

负责手机后端上报的容量和能力信息,并根据设定的算法完成卷到指定cinder-volume的调度。煤渣量

Cinder-Volume 用于直接与块存储服务和Cinder-Scheduler 进程进行交互。它还可以通过消息队列与这些进程交互。 Cinder-Volume 服务维护状态以响应发送到块存储服务的读写请求。它还可以在驱动程序架构下与多个存储提供商交互。 Cinder-备份

实现卷数据备份到其他存储介质(Swift/ceph/TSM等)

3、cinder架构

image.png 以创建卷为例

1.接收cinder-api的请求(创建卷类型和卷规格)

2. cinder-api通过rabbitmq将请求发送到cinder-scheduler

3. cinder-scheduler查询数据库查找与主机匹配的节点

4. cinder-scheduler通过rabbitmq向cinder-volume发送消息

5. cinder-volume 通过后端驱动创建卷。

七、openstack对象存储服务(swift)

1、swift组件

代理服务器

对外提供对象服务API。由于采用无状态REST请求协议,可以水平扩展,实现负载均衡。账户服务器

提供帐户元数据和统计信息并维护所包含容器列表的服务。有关每个帐户的信息都存储在SQLite 数据库中。容器服务器

提供容器元数据和统计信息并维护所包含对象列表的服务。有关每个容器的信息也存储在SQLite 数据库中。对象服务器

提供对象元数据和内容服务。每个对象的内容都会以文件的形式存储在文件系统中,元数据会以文件属性的形式存储。推荐使用支持扩展属性的XFS文件系统。复制器

检测本地分区副本与远程副本是否一致。如果发现不一致,将使用推送来更新远程副本并确保从文件系统中删除标记为删除的对象。更新程序

当由于高负载而无法立即更新对象时,该任务将在本地文件系统中序列化并排队,以便在服务恢复后可以异步更新。

2、Swift数据模型

image.pngSwift具有三层逻辑结构:Account/Container/Object(即account/container/object)。每层节点数量没有限制,可任意扩展

八、openstack的编排服务(heat)

1、Heat组件

热力为开发者和系统管理提供了一种简单的方法,为开发者创建和管理一批资源,并配置和更新自己的资源以有序且可预测的方式进行。

热API

提供Rest ful API服务,是与其他组件和Heat交互的入口。它接收API 请求并将其转发给Heat-engine。 Heat-api-cfn

提供与AWS CloudFormation兼容的API,接收API请求并将其转发到Heat-engineHeat-engine

Heat的核心主要实现任务调度、资源生命周期管理等任务。它不提供资源创建功能。它只负责安排资源并将其分解为具体的任务以供其他组件处理。

2、Heat架构

image.png需要通过模板文件定义资源,然后使用heat来排列。具体的heat模板定义请参考官网https://docs.openstack.org/heat/latest/template_guide/index.html

九、openstack的其它服务

openstack功能强大,服务丰富。除了列出的重要服务外,还有ceilometer(测量)。服务)、horizon(接口服务)、zun(容器服务)、Manila(文件存储服务)等。

用户评论

〆mè村姑

学习OpenStack,感觉很有挑战性!

    有19位网友表示赞同!

青衫故人

想了解一下OpenStack在实际应用里的场景?

    有18位网友表示赞同!

迷路的男人

有没有推荐一些适合初学者的OpenStack学习资源?

    有19位网友表示赞同!

仅有的余温

OpenStack的部署和配置过程比较复杂吗?

    有9位网友表示赞同!

青楼买醉

最近对云计算很感兴趣,就是不知道OpenStack会不会很难上手。

    有14位网友表示赞同!

笑叹★尘世美

感觉OpenStack的架构还是很宏伟的,让人佩服!

    有12位网友表示赞同!

发呆

希望这篇笔记能带给我更多OpenStack的入门知识。

    有11位网友表示赞同!

站上冰箱当高冷

笔记里有没有提到一些OpenStack常用的命令?

    有7位网友表示赞同!

执笔画眉

学习OpenStack是实现自己搭建云平台的关键吗?

    有6位网友表示赞同!

有阳光还感觉冷

OpenStack和Kubernetes的关系怎么样?

    有14位网友表示赞同!

滴在键盘上的泪

笔记提到了哪些Openstack的常见组件?

    有15位网友表示赞同!

拉扯

现在企业里OpenStack的应用很普遍吗?

    有12位网友表示赞同!

开心的笨小孩

有没有人分享一下使用OpenStack遇到的问题和解决方法?

    有19位网友表示赞同!

ヅ她的身影若隐若现

学习OpenStack,可以提高自己在云计算领域的竞争力吗?

    有16位网友表示赞同!

我就是这样一个人

感觉笔记里的文字比较学术化,会不会有人写得更通俗易懂的?

    有15位网友表示赞同!

陌上蔷薇

在实际项目中使用OpenStack会遇到哪些安全问题?

    有11位网友表示赞同!

冷眼旁观i

OpenStack适合所有类型的企业部署吗?

    有12位网友表示赞同!

优雅的叶子

笔记里有没有提到OpenStack未来的发展方向?

    有5位网友表示赞同!

一点一点把你清空

感觉学习OpenStack是一个很值得的投资。

    有20位网友表示赞同!

【深入解析OpenStack技术与应用(笔记分享)】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活