Openstack架构-个人理解

原文链接:https://open.weixin.qq.com/connect/oauth2/authorize

在这里插入图片描述
各位小伙伴们,我们今天给大家分享的是Openstack 架构,非常感谢小伙伴在技术沙龙上的讲解,令在场参加的各位受益匪浅,但独乐乐,不如众乐乐,故将此经验共享出来,愿大家都能从中收益!也欢迎大家踊跃报名参加哟!!!

1、首先我们先了解一下什么是云计算

在这里插入图片描述
Cloud Computing NIST Definition:

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models.
云计算是一种新的模式,这种模式提供普适、便捷、按需的通过网络访问一个共享计算资源池(资源包括网络,服务器,存储,应用软件,服务),只需投入很少的管理工作,或与服务供应商进行很少的交互,这个资源池能够被快速的使能或者释放。云计算包括五种基本特性,三种服务模式,5中部署模式。

2、什么是云管平台?

在这里插入图片描述
Cloud management platforms are integrated products that provide for the management of public, private and hybrid cloud environments. The minimum requirements to be included in this category are products that incorporate self-service interfaces, provision system images, enable metering and billing, and provide for some degree of workload optimization through established policies. More-advanced offerings may also integrate with external enterprise management systems, include service catalogs, support the configuration of storage and network resources, allow for enhanced resource management via service governors and provide advanced monitoring for improved “guest” performance and availability

云管理平台是一个集成产品,提供云环境的管理功能。

基本功能:自服务界面,镜像服务,测量与计费,负载优化

高级功能:服务分类,网络,存贮,监控

3、什么是OpenStack?

在这里插入图片描述
OpenStack是一个开源的云管理平台,用于管理基础设施中的计算、网络和存储等资源,从而为用户提供虚拟机服务。

OpenStack的设计目标是提供一个满足公有云(还有私有云、混合云、社区云等)运营需求的IASS(还有PASS,SASS平台)平台软件,但实际常被用作企业及私有云数据中心的资源管理平台试用。

4、OpenStack概念架构

在这里插入图片描述

5、OpenStack核心系统架构图

在这里插入图片描述

6、OpenStack 最简物理架构

在这里插入图片描述

7、OpenStack主要逻辑模块– Horizon Dashboard服务

基于Django框架实现

在这里插入图片描述
在整个Openstack应用体系框架中,Horizon就是整个应用的入口。它提供了一个模块化的,基于web的图形化界面服务门户。用户可以通过浏览器使用这个Web图形化界面来访问、控制他们的计算、存储和网络资源,如启动实例、分配IP地址、设置访问控制等。

8、OpenStack主要逻辑模块 –Horizon 两种功能界面

Horizon为以下两种角色的用户提供了不同的功能及使用界面:
在这里插入图片描述

9、OpenStack主要逻辑模块 –Keystone身份验证服务

在这里插入图片描述

10、Keystone基本概念介绍

  • User

User即用户,他们代表可以通过keystone进行访问的人或程序。Users通过认证信息(credentials,如密码、API Keys等)进行验证。

  • Tenant

Tenant即租户,它是各个服务中的一些可以访问的资源集合。例如,在Nova中一个tenant可以是一些机器,在Swift和Glance中一个tenant可以是一些镜像存储,在Neutron中一个tenant可以是一些网络资源。Users默认的总是绑定到某些tenant上。

  • Role

Role即角色,Roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的或租户的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限。

  • Service

Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。

  • Endpoint

Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板,这个模板提供了所有存在的服务endpoints信息。一个endpoint template包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。public url可以被全局访问(如 http://compute.example.com),private url只能被局域网访问(如 http://compute.example.local),admin url被从常规的访问中分离。

  • Token

    Token是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。

11、各种概念之间关系解释

在这里插入图片描述

  1. 租户下,管理着一堆用户(人,或程序)。

  2. 每个用户都有自己的credentials(凭证)用户名+密码或者用户名+API key,或其他凭证。

  3. 用户在访问其他资源(计算、存储)之前,需要用自己的credential去请求keystone服务,获得验证信息(主要是Token信息)和服务信息(服务目录和它们的endpoint)。

  4. 用户拿着Token信息,就可以去访问特点的资源了。

12、Keystone在OpenStack中的访问流程范例

在这里插入图片描述

13、OpenStack主要逻辑模块- Nova

在这里插入图片描述

  1. 计算管理(codenamed “Nova”) 基于用户需求为VM提供计算资源管理. 基于Python语言编写。

  2. Nova-API:对外统一提供标准化接口.接受和响应最终用户Compute API的请求,同时还实现与Openstack其他各逻辑模块的通讯与服务提供

  3. Nova-Scheduler:从队列上得到一个虚拟机实例请求并且决定它应该在哪里运行(使用多种过滤器或算法调度)

  4. Queue:提供了一个守护进程之间传递消息的中央枢纽。消息队列系统作用还可以实现与Openstack其他各逻辑模块之间的通信建立连接枢纽

  5. Nova-Database:存储云基础设施的编译时和运行时的状态,从理论上讲,OpenStack Nova可以支持任何SQL-Alchemy支持的数据库,但是目前被广泛使用的数据库有sqlite3(只适用于测试和开发工作),MySQL和PostgreSQL。

  6. Nova-Compute:主要是一个人工守护进程,它可以通过虚拟机管理程序的API(XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware等)来创建和终止虚拟机实例。支持多种虚拟化平台

  7. Nova还提供控制台的服务,让最终用户通过代理服务器访问他们的虚拟实例的控制台。这涉及到多个守护进程(nova-console,nova-novncproxy、nova-xvpnvncproxy和nova-consoleauth)

14、Nova的架构

在这里插入图片描述

15、Nova处理过程

在这里插入图片描述

16、请求一个虚拟机实例过程

在这里插入图片描述

17、Nova支持的虚拟化平台

在这里插入图片描述

18、OpenStack主要逻辑模块- 块存储Cinder

在这里插入图片描述

19、Cinder的架构

在这里插入图片描述

20、Cinder架构解释

在这里插入图片描述

Cinder主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动支持以与 OpenStack 进行整合。在CinderSupportMatrix中可以看到众多存储厂商如 HP、NetAPP、IBM、SolidFire、EMC 和众多开源块存储系统对 Cinder 的支持。

Havana 版本中 Cinder 新增特性如下:

Volume-Resize:在可用情况下调整卷大小。

Volume-Backup-To-Ceph:现在卷可以备份到 Ceph 集群中。

Volume-Migration:现在不同用户间可以透明地转移和交换卷。

QoS:增加限速相关的元信息供 Nova 和其 Hypervisor 使用。

More-Drivers:更多的存储厂商加入和完善了自己的 Cinder 驱动。

21、Cinder如何支持典型存储

在这里插入图片描述

22、OpenStack主要逻辑模块- 对象存储Swift

在这里插入图片描述

23、对象存储Swift数据模型

在这里插入图片描述

24、对象存储Swift系统架构

在这里插入图片描述

25、对象存储Swift系统组件

  1. 代理服务(Proxy Server):对外提供对象服务 API,会根据环的信息来查找服务地址并转发用户请求至相应的账户、容器或者对象服务;由于采用无状态的 REST 请求协议,可以进行横向扩展来均衡负载。

  2. 认证服务(Authentication Server):验证访问用户的身份信息,并获得一个对象访问令牌(Token),在一定的时间内会一直有效;验证访问令牌的有效性并缓存下来直至过期时间。

  3. 缓存服务(Cache Server):缓存的内容包括对象服务令牌,账户和容器的存在信息,但不会缓存对象本身的数据;缓存服务可采用 Memcached 集群,Swift 会使用一致性散列算法来分配缓存地址。

  4. 账户服务(Account Server):提供账户元数据和统计信息,并维护所含容器列表的服务,每个账户的信息被存储在一个 SQLite 数据库中。

  5. 容器服务(Container Server):提供容器元数据和统计信息,并维护所含对象列表的服务,每个容器的信息也存储在一个 SQLite 数据库中。

  6. 对象服务(Object Server):提供对象元数据和内容服务,每个对象的内容会以文件的形式存储在文件系统中,元数据会作为文件属性来存储,建议采用支持扩展属性的 XFS 文件系统。

  7. 复制服务(Replicator):会检测本地分区副本和远程副本是否一致,具体是通过对比散列文件和高级水印来完成,发现不一致时会采用推式(Push)更新远程副本,例如对象复制服务会使用远程文件拷贝工具 rsync 来同步;另外一个任务是确保被标记删除的对象从文件系统中移除。

  8. 更新服务(Updater):当对象由于高负载的原因而无法立即更新时,任务将会被序列化到在本地文件系统中进行排队,以便服务恢复后进行异步更新;例如成功创建对象后容器服务器没有及时更新对象列表,这个时候容器的更新操作就会进入排队中,更新服务会在系统恢复正常后扫描队列并进行相应的更新处理。

  9. 审计服务(Auditor):检查对象,容器和账户的完整性,如果发现比特级的错误,文件将被隔离,并复制其他的副本以覆盖本地损坏的副本;其他类型的错误会被记录到日志中。

  10. 账户清理服务(Account Reaper):移除被标记为删除的账户,删除其所包含的所有容器和对象。

26、对象存储Swift系统支持的操作

Swift RESTful API 总结
在这里插入图片描述

27、对象存储Swift补充

在这里插入图片描述
在这里插入图片描述

28、对象存储Swift补充— SINA的经验

在这里插入图片描述

29、对象存储Swift补充

  • Ring
    Ring是Swift最重要的组件,用于记录存储对象与物理位置间的映射关系。在涉及查询Account、Container、Object信息时,就需要查询集群的Ring信息。 Ring使用Zone、Device、Partition和Replica来维护这些映射信息。Ring中每个Partition在集群中都(默认)有3个Replica。每个Partition的位置由Ring来维护,并存储在映射中。Ring文件在系统初始化时创建,之后每次增减存储节点时,需要重新平衡一下Ring文件中的项目,以保证增减节点时,系统因此而发生迁移的文件数量最少。

  • 原理
    Swift用到的算法和存储理论并不复杂,主要有几下几个概念。
    一致性哈希算法
    Swift利用一致性哈希算法构建了一个冗余的可扩展的分布式对象存储集群。Swift采用一致性哈希的主要目的是在改变集群的Node数量时,能够尽可能少地改变已存在Key和Node的映射关系。 该算法的思路分为以下三个步骤。 首先计算每个节点的哈希值,并将其分配到一个0~232的圆环区间上。其次使用相同方法计算存储对象的哈希值,也将其分配到这个圆环上。随后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个节点上。如果超过232仍然找不到节点,就会保存到第一个节点上。 假设在这个环形哈希空间中存在4台Node,若增加一台Node5,根据算法得出Node5被映射在Node3和Node4之间,那么受影响的将仅是沿Node5逆时针遍历到Node3之间的对象(它们本来映射到Node4上)。其分布如图3所示。
    在这里插入图片描述

  • Replica
    如果集群中的数据在本地节点上只有一份,一旦发生故障就可能会造成数据的永久性丢失。因此,需要有冗余的副本来保证数据安全。Swift中引入了Replica的概念,其默认值为3,理论依据主要来源于NWR策略(也叫Quorum协议)。 NWR是一种在分布式存储系统中用于控制一致性级别的策略。在Amazon的Dynamo云存储系统中,使用了NWR来控制一致性。其中,N代表同一份数据的Replica的份数,W是更新一个数据对象时需要确保成功更新的份数;R代表读取一个数据需要读取的Replica的份数。 公式W+R>N,保证某个数据不被两个不同的事务同时读和写;公式W>N/2保证两个事务不能并发写某一个数据。 在分布式系统中,数据的单点是不允许存在的。即线上正常存在的Replica数量为1的情况是非常危险的,因为一旦这个Replica再次出错,就可能发生数据的永久性错误。假如我们把N设置成为2,那么只要有一个存储节点发生损坏,就会有单点的存在,所以N必须大于2。N越高,系统的维护成本和整体成本就越高。工业界通常把N设置为3。例如,对于MySQL主从结构,其NWR数值分别是N= 2, W = 1, R = 1,没有满足NWR策略。而Swift的N=3, W=2, R=2,完全符合NWR策略,因此Swift系统是可靠的,没有单点故障。

  • Zone
    如果所有的Node都在一个机架或一个机房中,那么一旦发生断电、网络故障等,都将造成用户无法访问。因此需要一种机制对机器的物理位置进行隔离,以满足分区容忍性(CAP理论中的P)。因此,Ring中引入了Zone的概念,把集群的Node分配到每个Zone中。其中同一个Partition的Replica不能同时放在同一个Node上或同一个Zone内。注意,Zone的大小可以根据业务需求和硬件条件自定义,可以是一块磁盘、一台存储服务器,也可以是一个机架甚至一个IDC。

  • Weight
    Ring引入Weight的目的是解决未来添加存储能力更大的Node时,分配到更多的Partition。例如,2TB容量的Node的Partition数为1TB的两倍,那么就可以设置2TB的Weight为200,而1TB的为100。
    在这里插入图片描述

30、OpenStack主要逻辑模块–Glance镜像服务

在这里插入图片描述

31、Glance与Openstack其他模块的关系

在这里插入图片描述

32、Glance支持的Image格式

在这里插入图片描述

  1. raw – 非结构化的镜像格式

  2. vhd – 一种通用的虚拟机磁盘格式, 可用于Vmware、Xen、Microsoft Virtual PC/Virtual Server/Hyper-V、VirtualBox等

  3. vmdk – Vmware的虚拟机磁盘格式, 同样也支持多种Hypervisor

  4. vdi – VirtualBox、QEMU等支持的虚拟机磁盘格式

  5. qcow2 – 一种支持QEMU并且可以动态扩展的磁盘格式

  6. aki – Amazon Kernel 镜像

  7. ari – Amazon Ramdisk 镜像

  8. ami – Amazon 虚拟机镜像

33、OpenStack主要逻辑模块 –Quantum/Neutron网络服务

在这里插入图片描述

  1. 网络服务 (codenamed “Quantum/Neutron”) 提供在被管理设备之间的网络连接服务 .

  2. 允许用户自己创建自己的网络并attach端口使用.

  3. 通过开发的Plugins支持SDN和OpenFlow

  4. 用户自定义子网地址,私有网络/公有网络以及Floating IP分配规则

34、Neutron服务模块层次

在这里插入图片描述

35、Quantum/Neutron 的关键概念

在这里插入图片描述

36、简单网络架构及解释

在这里插入图片描述

37、Openstack网络服务历程

在这里插入图片描述

38、Openstack网络服务历程

在这里插入图片描述

39、Neutron 服务网络管理的三种模式,两种IP

在这里插入图片描述

40、Flat模式

在这里插入图片描述

41、Flat DHCP 模式:用于测试环境

在这里插入图片描述

42、Vlan模式:用于生产环境

在这里插入图片描述

43、FlatDHCP模式下网络流:单网卡单节点

在这里插入图片描述

44、FlatDHCP模式下网络流:单网卡多节点

在这里插入图片描述

45、FlatDHCP模式下网络流: 双网卡多节点

在这里插入图片描述

46、LinuxBridge介绍

在这里插入图片描述
目前,对网络的虚拟化主要集中在第 2 层和第 3 层

在 Linux 中,第 2 层通常使用 TAP 设备来实现虚拟网卡,使用 Linux Bridge 来实现虚拟交换机

在 Linux 中,第 3 层通常是基于 Iptable 的 NAT,路由及转发

对于网络隔离,可以采用传统的基于 802.1Q 协议的 VLAN 技术,但这受限于 VLAN ID 大小范围的限制,并且需要手动地在各物理交换机上配置 VLAN;也可以采用虚拟交换机软件,如 Openvswitch,它可以自动创建 GRE 隧道来避免手动去为物理交换机配置 VLAN。
在这里插入图片描述

  1. 上图显示了 node1 网桥中的 VM1 与 node2 网桥中的 VM3 是如何通信的。在 openstack 中,这是典型的 multi-host 模式,即每一个计算节点均部署了网络服务来提供网关服务。

  2. Linux Bridge 充当了交换机的功能,而将 sysctl -w net.ipv4.ip_forward 设置为 1 也相当于 node1 同时充当了一个路由器(路由器的实质就是一个具有多个网卡的机器,因为它的多网卡同时具有这些不同网段的 IP 地址,所以它能将一个网络的流量路由转发到另一个网络)。

  3. 网桥,交换机,是用来连接两个 LAN 的。 是根据 MAC 与端口的映射进行转发的,而在虚机的网卡都是知道的,若从转发数据库知道目的 MAC 地址,以太网帧就只会正确的网桥端口传输,否则,就会扩散到网桥设备的所有端口。

因为网桥工作在第二层,所以 eth0.1, tap0, tap1 这些网卡均不需要设置 IP(因为对于上层路由器来说,它们是同一个子网,只需要将 IP 设置在 br1 上即可)。同时, 对 Linux 而言,网桥是虚拟设备,因此,除非将一个或多个真实设备绑定到网桥设备上,否则它就无法接收或传输任何东西。所以需要将一个真实设备(如 eth0)或者真实设备的 vlan 接口(如 eth0.1) 加入到网桥。对于前一种情况,将 eth0 加入到网桥之后,eth0 便不再具有 IP,这时候它与 tap0 这些虚拟网卡均通过 br1 处于 10.0.1.0/24 网络,当然我们也可以为网桥 br1 设置一个别名让它也具有 172.16.99.0/24 网管网段的 IP 地址。)

想要获取更多资讯,请关注公众号:昆仑山论剑 请关注公众号:昆仑山论剑

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值