zoukankan      html  css  js  c++  java
  • openstack各组件总结

    一、keystone
    1、keystone的功能
    (1)管理用户及其权限
    (2)维护openstack各服务的endpoint
    (3)认证和鉴权

    2、与keystone相关的名词:user、credentials、authentication、token、project、service、endpoint、role
    (1)user:用户或者其他服务
    (2)Credentials(证明):user用来证明自己身份的信息,通常是用户名/密码或者Token
    (3)Authentication(认证):是keystone验证user身份的过程,user提供用户名/密码,keystone签发Token的过程
    (4)Token:由数字和字母组成,user成功认证后,由keystone分配给user,有效期默认24小时
    (5)Project:用于将OpenStack的资源(计算、存储、网络)进行分组和隔离
    (6)Service:计算、存储、镜像、网络等服务,每个服务都会提供若干个endpoint,user通过endpoint访问资源和执行操作
    (7)Endpoint:是一个网络上可访问的地址,通常是一个URL(统一资源定位符),service通过endpoint暴露自己的API

    二、Glance
    1、Glance架构及组件功能(画图)
    (1)Glance-api:对外提供REST API,响应image查询、获取和存储的调用,glance-api不会真正处理请求。
    (2)Glance-registry:处理image的元数据。
    (3)Store backend:存放image。支持多种方式存储,包括文件系统、Swift、http、Amazon S3等。
    (4)Database:image的元数据会保存到database中,默认是MySQL。

    三、Nova
    1、描述“从虚机创建流程看nova-*子服务如何协同工作”(画图)
    (1)nova-api:接收和响应客户的调用
    (2)RabbitMQ:作为自服务的信息中转站,协调各子服务之间的通信。
    (3)Scheduler:根据计算节点的资源使用情况,选择最合适的计算节点来运行虚机。
    涉及到Filter scheduler调度器:调度过程分为两步:
    a:通过过滤器filter选择满足条件的计算节点
    b:通过权重计算选择最优的计算节点创建虚机
    (4)nova-compute:在计算节点上运行,负责管理节点上的虚机。
    (5)nova-conductor:nova-compute需要获取和更新数据库中虚机的信息,但不会直接访问数据库,是通过nova-conductor实现访问数据库。
    (6)Database:存放组件的状态数据等。
    流程:
    (1)客户向nova-api发送请求:“帮我创建一个虚机”。
    (2)nova-api接收请求并处理后,向RabbitMQ发送消息:“让Scheduler创建一个虚机”。
    (3)Scheduler接收到RabbitMQ的请求,开始执行调度算法,从若干计算节点中选出计算节点A。
    (4)Scheduler发送消息到RabbitMQ:“在计算节点A上创建这个虚机”。
    (5)RabbitMQ向计算节点A的nova-compute发送消息,然后在本节点的Hypervisor上启动虚机。
    (6)nova-compute如果需要查询和更新数据库信息,会通过RabbitMQ发送消息到nova-conductor,nova-conductor负责数据库访问。

    四、Cinder
    1、Cinder架构及组件功能(画图)
    (1)cinder-api:接收API请求,调用cinder-volume执行操作。
    (2)Message queue(RabbitMQ):通过消息队列,实现进程间通信和相互协作。
    (3)Cinder-scheduler:scheduler通过调度算法选择最合适的存储节点创建volume。
    (4)Cinder-volume:管理volume的服务,与volume provider协同工作,管理volume的生命周期。运行cinder-volume服务的节点被称作为存储节点。
    (5)Volume provider:为volume提供物理存储空间(创建volume)。
    (6)Database:cinder的数据需要存放在数据库中,一般使用MySQL。数据库是装在控制节点上的。

    五、Neutron
    1、Neutron架构及组件功能(画图)
    (1)neutron server:对外提供openstack网络API,接收请求,并调用Plugin处理请求。
    (2)Plugin:接收neutron server请求,调用Agent处理请求。
    (3)Agent:接收Plugin请求,负责在network provider上真正实现各种网络功能。
    (4)Network provider:提供网络服务的虚拟或者物理网络设备,例如Linux Bridge、Open vSwitch虚拟交换机或者其他支持Neutron的物理交换机。
    (5)Queue:负责各子服务之间的通信。
    (6)Database:存放网络状态信息,包括network、subnet、port、router等。

    2、Neutron功能
    Neutron为整个openstack环境提供网络支持,包括二层交换、三层路由、负载均衡、防火墙和VPN等。
    (1)二层交换:虚机是通过虚拟交换机连接到虚拟二层网络。neutron支持多种虚拟交换机,包括linux bridge和OVS。利用linux bridge和OVS,neutron除了可以创建传统的VLAN网络,还可以创建基于隧道技术的Overlay网络,比如VXLAN和GRE(Linux bridge目前只支持VXLAN)。
    (2)三层路由:虚机可以配置不同网段的IP,neutron的虚拟路由器实现虚机跨网段通信。
    (3)负载均衡:提供了将负载分发到多个虚机的能力。

    3、Neutron管理的网络资源
    包括network、subnet、port
    (1)network是一个隔离的二层广播域,Neutron支持多种类型的network,包括:
    a.local
    b.flat
    c.VLAN
    d.VXLAN
    e.GRE
    VLAN:是一个二层的广播域,同一VLAN中的虚机可以通信,不同VLAN只能通过虚拟路由器通信。VLAN网络可以跨节点。
    VXLAN:是基于隧道技术的overlay网络。VXLAN网络通过唯一的VNI与其他VXLAN网络区分。VXLAN中数据包会通过VNI封装成UDP包进行传输。因为二层的包通过封装在三层传输,能够克服vlan和物理网络基础设施的限制。
    GRE:与VXLAN类似的一种overlay网络。主要区别在于使用IP包而非UDP进行封装。
    (2)subnet是一个IPV4或者IPV6的地址段。虚机的IP从subnet中分配,每个subnet需要定义IP地址的范围和掩码。
    (3)port可以看做是虚拟交换机的一个端口。port上定义了MAC地址和IP地址,当虚机的虚拟网卡绑定到port时,port会将MAC和IP分配给虚拟网卡。

    4、plugin和agent
    plugin分为两类:core plugin和service plugin
    core plugin维护Neutron的network、subnet和port相关资源的信息。对应的agent包括linux bridge、OVS。
    sevice plugin提供路由、防火墙、负载均衡等服务。也有对应的agent。

    ML2 Core Plugin
    传统的core plugin无法同时使用多种network provider,而ML2 core plugin可以解决这个问题,在不同节点上分别部署linux bridge agent、OVS agent。

  • 相关阅读:
    MinIO:入门
    JS中面向对象的多种继承方式
    点击按钮实现图片下载
    给大家推荐一个免费的云平台-阿贝云
    REPLACE
    SUBSTRING_REGEXPR 截取字符串
    基本的git/linux/g++/ 等指令
    C++引用和指针&, *
    go语言异常处理 error panic recover defer
    django.db.utils.IntegrityError: (1048, "Column 'id' cannot be null")
  • 原文地址:https://www.cnblogs.com/onemusk/p/11275193.html
Copyright © 2011-2022 走看看