Openstack是一个云平台管理的项目,它不是一个软件。也就是说咱们可使用Openstack来管理咱们数据中内心面的各类资源池;它里面包含了不少子项目。html
Openstack经过一个抽象层将普通计算机中的各类资源分红单一的组,当咱们须要建立虚拟机的时候能够选择为其分配多少内存、几个CPU、几块网卡、多大的存储等;Openstack就是将这些资源划分红组,而后在这些组里为虚拟机分配资源(这些资源也是有限制的,好比网咱们有一个20G的内存资源组,它是由4个5G的主机组合而来的;当咱们建立虚拟机时,是没法为其分配大于5G的内存的,由于虚拟机是受单个物理机限制的。);mysql
Openstack的各services:web
1.Compute(计算):管理虚拟机的整个生命周期,用于对虚拟机进行调度、资源分配、建立、销毁、远程链接等,其项目名称为Nova;sql
nova-api:接收并响应终端用户对compute节点的调用服务;它会将请求放入Message Queue供其余组件获取;数据库
nova-api-metadata:接收并响应运行起来的虚拟机实例发起的meta相应的调用请求;api
nova-compute:借助于Hypervisor的API启动及终止虚拟机实例,更新虚拟机在数据库中的信息等;从队列中接收请求并执行操做;浏览器
nova-scheduler:从队列中取出VM的启动请求,并决定由哪一个运行compute服务的Hypervisor来启动并运行虚拟机;缓存
nova-conductor:做为nova-compute与database的中间层,避免nova-compue直接与数据库进行交互,从而致使数据库出错;(nova-compute与nova-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:有着关联配置的状态的三层网络,或者说是由Ipv4或Ipv6定义的地址块造成的网络;
Port:将主机连入网络设备的链接接口;
ML2:做为管理网络设备的统一管理接口;
3.Object Storage(对象存储):基于RESTful的API对非结构化数据对象进行存储和检索,其中的数据自带元数据信息,使用分布式存储,通常用于存储磁盘映像文件,适用于存储一次写入,屡次读取的文件,其项目名称为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;
Endpoint:Openstack中各类服务的访问入口(URI形式);
Endpoint分为三种:public url能够被全局全部人访问、private url能够被局域网内访问、admin url只能够被管理员访问;
6.Image(映像):为虚拟机存储和检索其要使用的映像文件的位置,其项目名称为Glance;
Glance组件:
glance-api:Glance的API服务接口,负责接收对Image Service API中映像文件的建立、删除、查找、下载及存储请求;监听在9292端口;
glance-registry:用于与Mysql数据库交互(在Glance的数据库中存储着两张表:image表保存了映像文件的格式、大小等信息;image properties表保存了映像的定制化信息;),存储、处理及获取映像文件的元数据,例如映像文件的大小及类型等;监听在9191端口;
image store:是一个存储的接口层,经过这个接口glance能够获取和保存映像,具体的实现须要外部存储的支持;image store支持亚马逊的S3、Swift、sheepdog、GlusterFS等;
database:存储映像文件的元数据;
映像文件存储仓库:支持多中类型的映像文件存储机制,包括使用普通的文件系统、对象存储、RADOS块设备、HTTP以及Amazon的S3等;
7.Dashboard:Openstack的Web管理接口,其项目名称为Horizon;
8.Teiemetry:提供监控和计量服务,其项目名称为Ceilometer;
9.Orchestration:提供基于模板自动化部署虚拟机的组件,其项目名称为Heat;
10.Database Service:提供数据库应用服务,其项目名称为Trove;
……
概念架构:
逻辑架构:
如概念结构所示,OpenStack由几个独立的部分组成,称为OpenStack服务。全部服务都经过公共身份服务进行身份验证。各个服务经过公共API相互交互,除非须要特权管理员命令。
在内部,OpenStack服务由几个进程组成。全部服务都至少有一个API进程,它监听API请求,预处理它们并将它们传递给服务的其余部分。除Identity服务外,实际工做由不一样的进程完成。
对于一个服务的进程之间的通讯,使用AMQP消息代理。服务的状态存储在数据库中。在部署和配置OpenStack云时,您能够选择多种消息代理和数据库解决方案,例如RabbitMQ,MySQL,MariaDB和SQLite。
用户能够经过Horizon Dashboard实现的基于Web的用户界面,命令行客户端以及经过浏览器插件或curl等工具发出API请求来访问OpenStack 。对于应用程序, 可使用多个SDK。最终,全部这些访问方法都会向各类OpenStack服务发出REST API调用。
Openstack各服务的请求流程:
网络拓扑类型:
提供商网络选项以最简单的方式部署OpenStack Networking服务,主要是第2层(桥接/交换)服务和网络的VLAN分段。从本质上讲,它将虚拟网络桥接到物理网络,并依赖于物理网络基础设施来实现第3层(路由)服务。
此选类型乏对自助(私有)网络,第3层(路由)服务以及LBaaS和 FWaaS等高级服务的 支持。若是您须要这些功能,请考虑下面的自助服务网络选项。
自助服务网络选项经过第3层(路由)服务加强了提供商网络选项,这些服务使用覆盖分段方法(如VXLAN)实现 自助服务网络。从本质上讲,它使用NAT将虚拟网络路由到物理网络。此外,此选项为LBaaS和FWaaS等高级服务奠基了基础。
Openstack(Stein版)的安装:
配置步骤:
1.为各个节点配置合理的IP地址及主机名;
2.配置时间同步;
3.安装OpenstackClient软件包;
4.配置SQL Database;
5.配置消息队列(RabbitMQ);
启动之后能够经过其监听的15672接口访问RadditMQ的web界面;
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看不见9292和9191端口;
错误为: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.配置计算节点与控制节点时,要注意节点的防火墙,在计算节点要注意放行rabbit的5672端口,不然会报关于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
根据马哥视频作的学习笔记,若有错误,欢迎指正;侵删