OpenStack

 

  Openstack是一个云平台管理的项目,它不是一个软件。也就是说咱们可使用Openstack来管理咱们数据中内心面的各类资源池;它里面包含了不少子项目。html

 

  Openstack经过一个抽象层将普通计算机中的各类资源分红单一的组当咱们须要建立虚拟机的时候能够选择为其分配多少内存几个CPU、几块网卡多大的存储等;Openstack就是将这些资源划分红组而后在这些组里为虚拟机分配资源(这些资源也是有限制的,好比网咱们有一个20G的内存资源组它是由45G的主机组合而来的;当咱们建立虚拟机时,是没法为其分配大于5G的内存的,由于虚拟机是受单个物理机限制的。);mysql

 

  Openstack的各servicesweb

    1.Compute(计算):管理虚拟机的整个生命周期用于对虚拟机进行调度资源分配建立销毁、远程链接等,其项目名称为Novasql

      nova-api:接收并响应终端用户对compute节点的调用服务;它会将请求放入Message Queue供其余组件获取数据库

      nova-api-metadata:接收并响应运行起来的虚拟机实例发起的meta相应的调用请求api

      nova-compute:借助于HypervisorAPI启动及终止虚拟机实例更新虚拟机在数据库中的信息等;从队列中接收请求并执行操做;浏览器

      nova-scheduler:从队列中取出VM的启动请求并决定由哪一个运行compute服务的Hypervisor来启动并运行虚拟机缓存

      nova-conductor:做为nova-computedatabase的中间层,避免nova-compue直接与数据库进行交互,从而致使数据库出错;(nova-computenova-conductor不是直接交互,而是nova-compute先将消息发送到queue中,而后再由nova-conductor订阅处理)网络

      nova-consoleauth:用于控制台的受权验证架构

      nova-novncproxy:为经由vnc接口要连入各虚拟机实例的请求提供代理服务从而使得仅在Dashboard接口上直接向各VM所在的compute节点的VNC服务发起请求

      Compute服务中有一个核心组件Queue(队列),几乎各个API都要通过这个Queue才能与其余API通讯;其各API直接经过订阅其余与本身相关的API的消息队列来完成信息交互;其中发布消息的咱们能够称之为生产者,接收消息的能够称之为消费者;其中生产者能够有多种,也就意味着有多种队列,消费者也能够有多种,而一个消费者能够订阅多种生产者队列,一个生产者队列也能够被多个消费者订阅;

    2.Networking(网络):管理虚拟机的网络配置用于为虚拟机按需分配网络,支持众多流行的网络管理框架,其项目名称为Neutron

      Network:隔离的二层网络相似于VLAN;

      Subnet:有着关联配置的状态的三层网络或者说是由Ipv4Ipv6定义的地址块造成的网络

      Port:将主机连入网络设备的链接接口

 

         ML2:做为管理网络设备的统一管理接口

    3.Object Storage(对象存储):基于RESTfulAPI对非结构化数据对象进行存储和检索,其中的数据自带元数据信息,使用分布式存储,通常用于存储磁盘映像文件,适用于存储一次写入,屡次读取的文件,其项目名称为Swift;

    4.Block Storage(块存储):用于为虚拟机提供数据的存储功能,其项目名称为Cinder

      cinder-api:接受API请求,并将它们路由到cinder-volumefor操做。

      cinder-volume:直接面对存储服务,经过消息队列直接与cinder-scheduler交互

      cinder-scheduler daemon:用于调度选择能够建立卷的最佳存储节点

      cinder-backup daemon:为卷提供备份功能;

      messaging queue:用于块存储进程之间传递信息。

    5.Identity(身份认证):为Openstack中的服务提供认证受权功能以及端点编录功能(Openstack中的各类服务要到Keystone中查询其余服务的访问端点),其项目名称为Keystone

      认证方式

        token:使用一串设定的字符串做为令牌进行认证(建议使用openssl rand -hex 10生成随机字符串);能够基于K/V方式存储;

          这个机制通常是第一次进行安装登陆Keystone时才使用的当设置完用户密码之后会被禁用

        帐号/密码使用用户名和密码进行认证

      核心术语

        User:一个用户能够关联至多个project;

        Project:标识一个项目之前叫Tenant(租户);

        Role:角色,标识用户的身份,不一样角色拥有不一样权限;

        Service:服务,即Openstack中的各类service

        EndpointOpenstack中各类服务的访问入口(URI形式);

        Endpoint分为三种:public url能够被全局全部人访问、private url能够被局域网内访问、admin url只能够被管理员访问

    6.Image(映像):为虚拟机存储和检索其要使用的映像文件的位置,其项目名称为Glance

      Glance组件

        glance-api:GlanceAPI服务接口负责接收对Image Service API中映像文件的建立删除查找下载及存储请求;监听在9292端口

        glance-registry:用于与Mysql数据库交互(在Glance的数据库中存储着两张表:image表保存了映像文件的格式、大小等信息;image properties表保存了映像的定制化信息;),存储处理及获取映像文件的元数据例如映像文件的大小及类型等;监听在9191端口

        image store:是一个存储的接口层经过这个接口glance能够获取和保存映像,具体的实现须要外部存储的支持;image store支持亚马逊的S3、Swift、sheepdog、GlusterFS

        database:存储映像文件的元数据

        映像文件存储仓库支持多中类型的映像文件存储机制包括使用普通的文件系统对象存储、RADOS块设备HTTP以及AmazonS3

 

 

 

    7.Dashboard:OpenstackWeb管理接口其项目名称为Horizon;

    8.Teiemetry:提供监控和计量服务,其项目名称为Ceilometer;

    9.Orchestration:提供基于模板自动化部署虚拟机的组件,其项目名称为Heat

    10.Database Service:提供数据库应用服务其项目名称为Trove;

    ……

 

  概念架构

 

 

  逻辑架构

 

    如概念结构所示,OpenStack由几个独立的部分组成,称为OpenStack服务。全部服务都经过公共身份服务进行身份验证。各个服务经过公共API相互交互,除非须要特权管理员命令。

    在内部,OpenStack服务由几个进程组成。全部服务都至少有一个API进程,它监听API请求,预处理它们并将它们传递给服务的其余部分。除Identity服务外,实际工做由不一样的进程完成。

    对于一个服务的进程之间的通讯,使用AMQP消息代理。服务的状态存储在数据库中。在部署和配置OpenStack云时,您能够选择多种消息代理和数据库解决方案,例如RabbitMQMySQLMariaDBSQLite

    用户能够经过Horizo​​n Dashboard实现的基于Web的用户界面,命令行客户端以及经过浏览器插件或curl等工具发出API请求来访问OpenStack 。对于应用程序, 可使用多个SDK。最终,全部这些访问方法都会向各类OpenStack服务发出REST API调用。

  Openstack各服务的请求流程

 

  网络拓扑类型

 

    提供商网络选项以最简单的方式部署OpenStack Networking服务,主要是第2层(桥接/交换)服务和网络的VLAN分段。从本质上讲,它将虚拟网络桥接到物理网络,并依赖于物理网络基础设施来实现第3层(路由)服务。

    此选类型乏对自助(私有)网络,第3层(路由)服务以及LBaaSFWaaS等高级服务的 支持。若是您须要这些功能,请考虑下面的自助服务网络选项。

 

    自助服务网络选项经过第3层(路由)服务加强了提供商网络选项,这些服务使用覆盖分段方法(如VXLAN)实现 自助服务网络。从本质上讲,它使用NAT将虚拟网络路由到物理网络。此外,此选项为LBaaSFWaaS等高级服务奠基了基础。

  OpenstackStein版)的安装

    配置步骤

      1.为各个节点配置合理的IP地址及主机名

      2.配置时间同步

      3.安装OpenstackClient软件包

      4.配置SQL Database

      5.配置消息队列RabbitMQ);

        启动之后能够经过其监听的15672接口访问RadditMQweb界面

        iptables -A INPUT -p tcp --dport 5672 -j ACCEPT

      6.配置Memcached,提供缓存加速;

      7.配置Openstack的各个Service

        Keystone

          同步数据库时要使用keystone用户的身份,要否则就要修改/var/log/keystone/keystone.log这个文件的属组为keystone且具备读写权限

        Glance

          /etc/glance/glance-api.conf/etc/glance/glance-registry.conf文件中的#auth_uri = <None>参数描述为:Reason: The auth_uri option is deprecated in favor of www_authenticate_uri and will be removed in the S  release。可是若是使用auth_uri替换官网中的auth_url则会报错。表面上的错误是glance已经启动(状态为running),可是使用netstat -nultp看不见92929191端口

          错误为:MissingRequiredOptions: Auth plugin requires parameters which were not given: auth_url

            WARNING keystonemiddleware.auth_token [-] AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True.

        Plancement

          WSGI:https://blog.csdn.net/jinixin/article/details/84677104

          Note:这一步在以前的版本中没有

        Nova

          若是你使用的是VMware中的虚拟机做为计算机点的话则其计算节点中nova的配置文件/etc/nova/nova.conf中的virt_type要配置为qemu官网中为kvm,可是若是使用kvm就会卡在加载映像文件那,没法启动系统;

          Note:

            1.配置计算节点与控制节点时要注意节点的防火墙在计算节点要注意放行rabbit5672端口不然会报关于rabbit链接超时的错误

            2.OpenStack的各类服务本身会生成相关的iptables规则最好不要乱改,尤为是计算节点;我作实验时在将控制节点与计算节点的iptables规则清除后,会有各类错误,其中就包含rabbit超时,mysql数据库(多是性能问题)错误等;

            3.最好为控制节点与计算节点分配尽量多的资源不然会发生建立虚拟机失败的状况或者是执行命令极慢的状况

        Neutron

        Horizon

        Cinder

    具体配置见官网https://docs.openstack.org/install-guide/

 

    官网描述:https://docs.openstack.org/install-guide/overview.html

 

     根据马哥视频作的学习笔记,若有错误,欢迎指正;侵删

相关文章
相关标签/搜索