openstack概念

认证服务

  • 用户,角色,项目的关系

    用户代表自然人,每个用户有自己的帐号和密码 角色代表一组权限,一个用户可以属于一个或多个角色 项目(project),以前叫租户(tenant),项目是一组资源的集合(包括虚拟机,存储,网络等)。通过角色权限赋予某个用户具有操作某个项目的权限。

  • 域(Domain)

    域是一组用户,角色,项目的集合,不同域中的用户,角色,项目可以重名。域是为了openstack中的对象进行隔离管理。

  • keystone

    keystone是openstack中负责用户管理和认证的组件,其功能包括用户和角色的增删改查,身份证证,会话管理。在openstack中每一个api请求都要经过keystone进行身份认证和权限检查。 keystone相当于openstack的用户中心。

  • 服务目录

    每个模块启动后都会向服务目录进行注册,有点类似Java的微服务。一个服务注册的时候包括名字,类型,URL。 kkeystone的服务注册如下:

    {
      "catalog": [
          {
              "name": "Keystone",
              "type": "identity",
              "endpoints": [
                  {
                      "interface": "public",
                      "url": "https://identity.example.com:5000/"
                  }
              ]
          }
      ]
    }
    

服务目录也是由keystone提供的,所以keystone是openstack最核心的模块,也是第一个模块。 keystone的介绍参考这里: https://docs.openstack.org/keystone/rocky/index.html https://blog.csdn.net/i_nclude/article/details/78106119

keystone是用python开发的,所以安装keystone要先安装python

网络

Openstack的网络是由Neutron提供的,Neutron中plugin处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络状态, 并调用 Agent 处理请求。 Agent处理 Plugin 的请求,负责在 network provider 上真正实现各种网络功能。 也就是说Plugin提供了对虚拟网络的访问,Agent提供了与物理网经的交互。 但是以上方式存在一个问题,就是所有openstack节点需要使用相同的plugin和agent,这限制了网络架构的灵活性。为了解决这个问题就开发了ML2 Plugin,它对物理网络进行了抽象,也就是不管物理网络是Linux bridge,Open vSwitch,SDN等,plugin看到的物理网络都是一样的。 ML2需要配置两种driver,Type Driver定义了虚拟网络的类型,如local,flat,vlan,也就是虚拟机可见的网络类型,Mechansim Driver定义了底层的网络实现机制,例如Linux bridge,Open vSwitch,SDN,SR-IOV。

要在 ML2 插件中启用类型驱动程序,请编辑 /etc/neutron/plugins/ml2/ml2_conf.ini文件:

[ml2] 
type_drivers  =  flat,vlan,vxlan,gre

type driver介绍: local: 只能与同一节点同一网络的vm连接 flat: 相于当桥接到物理网络上 vlan: 需要配置vlan,基它同flat vxlan: 基于udp的二层隧道 gre: 基于gre封装的二层隧道

同样在/etc/neutron/plugins/ml2/ml2_conf.ini文件中配置启用的Mechansim Driver

[ml2]
mechanism_drivers = ovs,l2pop

Mechansim Driver支持Linux bridge,Open vSwitch,SRIOV,MacVTap,L2 population,Specialized。

neutron的agent是部署在计算节点上的,其它的服务部署在控制节点。

块存储

Cinder提供基于网络的块存储设备相关服务,包括存储卷的增删改查,Cinder本身不处理IO请求,只是对存储卷进行管理。Cinder通过具体的Driver与存储后端进行交换,比如lvm,nfs,smb等后端存储设备。cinder-volume安装在专门的存储节点,cinder-api和cinder-scheduler安装在控制节点。存储节点与计算节点通过iscsi,fc等网络协议进行通信。 cinder-volume通过调用iscsi工具创建iSCSI Target。 计算实例如果要使用本地节点的存储而不是cinder提供的网络存储则要配置使用Ephemeral storage。

计算服务

openstack通过nova提供计算服务,其实就是对kvm的一层包装,nova也分为控制节点和计算节点,nova-compute部署在计算节点,提供对虚拟机的生命周期管理,其它的部署在控制节点。nova-compute通过libvirt管理kvm。

镜像服务

Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。镜像是用来启动和安装虚拟计算实例的,glance支持各种磁盘镜像格式,如vmdk,qcow2,raw等,也支持iso光盘镜像格式。glance中的镜像可以存储在cinder或swift中,也可以存储在本地文件系统或者nfs,http,ftp等网络存储。

以上五种组件和服务涵盖了认证,计算,存储,网络,镜像等openstack必须的功能。

Views: 0