OpenStack overview 笔记
Example architecture
example architecture 至少需要两个节点启动一个虚拟机或者实例。可选的服务,例如Block storage和Object storage需要额外的节点。example architecture和minimal production architecture的区别如下所示:
(1)、Networking agent存在于controller node中,而不是一个或多个独立的network nodes
(2)、对于self-service network的Overlay(tunnel)是走management network而不是dedicated network
Controller
Controller node运行identify service, image service, networking的管理部分,各种networking agents和dashbord。其中还可以包括很多supporting service,例如SQL 数据库,消息队列和NTP
事实上,controller node还可以运行block storage,object storage,orchestration和telemetry service。最后,controller node 需要至少两个网卡
Compute
compute node运行compute的hypervisor部分用于操作虚拟机实例。默认情况下,Compute使用KVM作为hypervisor。compute node还要运行networking service agent,它能将虚拟机连接到虚拟网络中,并且给虚拟机提供firewalling service。我们可以部署多个compute node,每个node需要至少两个网卡。
Block Storage
Block Storage node是可选的,其中包含了为虚拟机提供的Blocke storage和Shared File System service的磁盘。为了简单起见,compute node和本节点是使用management network进行通信的。在生产环境中需要提供专有的网络用于提高性能和安全性。我们可以部署多个block storage node,每个node至少需要一个网卡
Object Storage
Object Storage node是可选的,其中存放了Object Storage service的磁盘用于存放accounts,containers以及object。和Block node类似,为了简单起见,compute node和本节点直接是使用management network进行通信的。但是在生产环境中,需要实现专有的网络用于通信。该服务需要至少两个节点,每个node至少需要包含一个网卡。
Networking
Networking Option 1:Provider networks
Provider networks 用的是最简单的OpenStack Networking service部署方案,提供了基本的layer-2(birdging/switching)services和VLAN segmentation of networks。本质上,它将虚拟网络和物理网络相连,并且依赖物理网络的基础设施来提供layer-3(routing) services。另外,DHCP service为虚拟机提供IP信息
Networking Option 2:Self-service networks
self-service networks 在provider networks的基础上提供了layer-3(routing) service,主要是利用overlay segmentation methods,例如VXLAN实现的。事实上,它通过NAT将虚拟网络路由到物理网络。另外,这种network option提供了一些高级的服务,例如LBaas和FWaas。
Identity service
OpenStack的Identity service提供了对于管理认证,授权,以及service目录的单点集成。Identity service通常是用户解除的第一个service,一旦通过认证,端用户就能通过它们的identity去获取OpenStack service。同样,其他的OpenStack services利用Identity service来确认用户,以及发现其他service部署在什么地方。Identity service还能和其他的外部用户管理系统集成(例如LDAP)。
用户和service能够通过service目录获取其他目录的位置。如名字所示,service目录是OpenStack集群上可用的service的集合。每个service都可以有一个或多个endpoint,每个endpoint都是admin, internal或者public三个类型中的一种。在生产环境中,不同的endpoint类型会存在于不同的network中,因为处于安全的考虑,不同的类型是有不同的network的。比如,public API network在Internet上是可见的,从而用户能管理他们的云。而admin API network可能仅仅局限于那些云基础设施的管理者。internal API network则局限于那些运行着OpenStack service的主机。为了扩展性,OpenStack支持多region,但是出于简单起见,我们对于所有的类型都使用同一网络并且使用默认的RegionOne region。总之,Identity service中创建的region,service和endpoint构成了集群中的service目录。对于每一个OpenStack service,都需要在Identity service中存放一个伴有相应endpoint的service entry。这些都能在Identity service安装和配置好之后完成。
Identity service由以下组件组成:
Server:一个中心化的server提供使用RESTful接口的授权和认证
Drivers:drivers或者service back end是和中心化server集成的。它们是用于为OpenStack外部的库提供identity信息的,并且可能在OpenStack还在部署的时候就已经存在了。
Modules:OpenStack组件地址空间上运行的Middleware module也使用identity service。这些modules解析service request,抽取出user credentials,并且将它们发送给中心server用于授权。Middleware和OpenStack组件之间通过Python Web Server Gateway Interface进行通信。
Image service
Image service能够让用户发现,注册,检索虚拟机镜像。它提供了一个REST API,从而让你能查询虚拟机镜像的元数据以及检索实际的镜像。我们可以将虚拟机镜像存放在各种地方,从简单的文件系统到像OpenStack Object Storage的对象存储系统
为了简单起见,我们使用file back end来配置image service,即将镜像存放在运行image service的controller node的目录中。默认情况下,该目录为/var/lib/glance/images/。在进行操作之前,我们需要确保在controller node中的相应目录至少有几个G的存储空间。需要注意的是,file back end通常是在controller node的本地的,而这对于多节点的部署显然是不合适的。
OpenStack的image service位于IAAS的中心。它接收来自端用户或者OpenStack计算组件对于磁盘,服务镜像以及元数据定义的API请求。同时,它还支持磁盘存储,多种类型的服务镜像,包括OpenStack Object Storage。OpenStack image service上有一定数目的周期性运行的进程用于支持caching。Replication services用来确保集群的一致性和可用性。其他周期性运行的进程包括,auditors, updaters,reapers。
glance-api:接收镜像API调用,包括镜像发现,检索和存储
glance-registry:存储,处理和恢复镜像的元数据。元数据包括大小和类型。(注:registry是OpenStack image service的一个private internal service,不能将它暴露给用户)
Database:用于存储镜像的元数据,我们可以根据自己的偏好任意选择数据库。大多数部署使用MySQL或者SQLite
Storage repository for image files:OpenStack支持各种各样的repository type,包括普通的文件系统(或者任何挂载在glance-api所在的controller node上的文件系统),对象存储,RADOS块设备,VMware数据库以及HTTP。需要注意的是,一些repository只支持只读。
Metadata definition service:一个通用的API用于为vendor,admins,service,以及user定义它们自己的元数据。这些元数据可以被用于不同类型的资源,例如images,artifacts,volumes,flavors以及aggregates。一个标准的定义通常包括,新特性的键值,描述,约束以及相关的资源类型。
Compute service overview
使用OpenStack Compute管理云计算系统。OpenStack Compute是IAAS系统的主要部分。它的主要部分是由Python实现的。OpenStack Compute通过和OpenStack Identity交互来进行认证;和OpenStack image service交互用于磁盘和服务镜像;和OpenStack dashboard交互用于user和administrative的接口。镜像的访问受项目和用户的限制,配额则受到项目的限制(例如实例的数目)。OpenStack Compute可以在标准硬件上水平扩展,并且下载镜像来生成实例。
OpenStack Compute由以下这些组件构成:
nova-api service:用于接收以及回复端用户的compute API调用,该service支持OpenStack Compute API,Amazon EC2 API,以及special Admin API为特权用户执行管理员操作。它强行执行一些策略,以及初始化大多数的编排操作,例如运行一个实例。
nova-api-metadata service:接收来自实例的元数据请求。nova-api-metadata service通常在运行multi-host模式并且安装了nova-network的时候使用。
nova-compute service:一个worker daemon通过hypervisor API创建并且终止虚拟机实例。比如:XenAPI for XenServer/XCP,libvirt for KVM or QEMU,VMware for VMware。
处理的过程是非常复杂的。通常,daemon从队列中接收指令,再执行一系列的系统命令,例如启动一个KVM实例,以及更新它在数据库中的状态。
nova-scheduler service:从队列中获取一个虚拟机实例请求,并且决定在哪个compute server上运行。
nova-conductor module:nova-compute service和数据库的中介。它限制了nova-compute service对于云数据库的直接访问。nova-conductor module可以水平扩展。然而不要将它部署在运行nova-compute service运行的节点上。
nova-cert module:用于提供X509 certificate Nova Cert service的server daemon。用于为euca-bundle-image生成证书。只在EC2 API中使用。
nova-network worker daemon:和nova-compute service类似,从队列中接收并处理networking tasks。执行例如设置网桥接口或者改变IPtables 规则等任务。
nova-consoleauth daemon:验证console proxies提供的tokens。参见nova-novncproxy和nova-xvpvncproxy。如果要console proxies能正常工作,这个service必须运行。在集群配置了单个的nova-consoleauth就能运行两个proxy中的任意一个。
nova-novncproxy daemon:为通过VNC连接一个运行实例提供代理。支持基于浏览器的novnc客户端。
nova-spicehtml5proxy daemon:为通过SPICE连接一个运行实例提供代理。支持基于浏览器的HTML5客户端。
nova-xvpvncproxy daemon:为通过VNC连接一个运行实例提供代理。支持OpenStack的Java客户端。
nova-cert daemon:x509证书。
nova client:使用户能够作为租户管理员或者端用户提交请求
The queue:用于daemon之间传递数据的central hub。通常通过RabbitMQ实现,也能通过另外的例如AMQP消息队列实现,例如ZeroMQ。
SQL database:用于存储大多数云基础设施的build-time和run-time状态,包括:可用的实例类型,正在使用的实例,可用的网络,Project。
理论上来说,OpenStack Compute能支持任何SQL-Alchemy支持的数据库。通用的数据库为SQLite3,用于测试和开发工作,MySQL,MariaDB和PostgreSQL。
OpenStack overview 笔记的更多相关文章
- openstack学习笔记一 虚拟机启动过程代码跟踪
openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...
- CentOS7和OpenStack的笔记(一)
CentOS7和OpenStack的笔记(一) 最近搞CentOS7系统和OpenStack框架,整了近一个星期,系统装了好几次,框架搭了又从搭.虽然最后的实例没能启动成功,但是在这专研的一个星期里, ...
- Openstack实验笔记
Openstack实验笔记 制作人:全心全意 Openstack:提供可靠的云部署方案及良好的扩展性 Openstack简单的说就是云操作系统,或者说是云管理平台,自身并不提供云服务,只是提供部署和管 ...
- OpenStack 学习笔记 (一)
后续的文章都贴在:臭蛋上 这一系列笔记已经记录很长一段时间了,种种原因没有贴出来,现在陆陆续续的贴出来.可能由于自己理解的 错误和疏忽,导致存在错误,欢迎大家指正,交流. 所有的源码分析都是基于Ope ...
- OpenStack学习笔记(一)----安装虚拟化工具
下面的命令运行在操作系统Ubuntu 14.04上. 在开源软件里面,主要是采用KVM和Xen.尽管OpenStack对KVM和Xen都支持,但是OpenStack对KVM的支持明显要比Xen做得好, ...
- openstack详细笔记-nova-glance-swift-cinder-keystone等
一.openstack各大模块 1.openstack总架构图 http://3ms.huawei.com/km/blogs/details/2655265 2.nova 2.0架构图 2.1 nov ...
- openstack 部署笔记--neutron计算节点
控制节点 # vim /etc/neutron/neutron.conf [DEFAULT] # ... transport_url = rabbit://openstack:root@control ...
- openstack 部署笔记--neutron控制节点
控制节点 配置neutron用户及服务 $ . admin-openrc $ openstack user create --domain default --password-prompt neut ...
- openstack 部署笔记--nova
控制节点 配置用户与服务 $ . admin-openrc $ openstack user create --domain default --password-prompt nova $ open ...
随机推荐
- sql 两列相加存到另一列
假设表table1有a.b两个列,想生成另一个列为a列值+b列值计算列添加语句如下ALTER TABLE table1ADD c AS a+b
- 小白学Linux(五)--VI/VIM编辑器
我们操作文件,终究离不开编辑文件,对文件内容的编辑,Linux系统下,我们通常使用VI/VIM来编辑文件.VI是每个Linux都会自带的文本编辑器,VIM是VI的增强版,可能有些发行版本没有自带,可以 ...
- 【poj 3167】Cow Patterns(字符串--KMP匹配+数据结构--树状数组)
题意:给2个数字序列 a 和 b ,问按从小到达排序后,a中的哪些子串与b的名次匹配. a 的长度 N≤100,000,b的长度 M≤25,000,数字的大小 K≤25. 解法:[思考]1.X 暴力. ...
- android MVP模式介绍与实战
android MVP模式介绍与实战 描述 MVP模式是什么?MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数 ...
- __proto__
proto 以前要访问原型, 必须使用构造函数来实现. 无法直接使用实例对象来访问原型. 火狐最早引入属性 __proto__ 表示使用实例对象引用原型. 但是早期是非标准的. 通过该属性可以允许使用 ...
- win7 下配置Openssl
最近刚刚装了openssl,遇到了很多问题,于是记录了下来: 我的PC环境是:系统win7,32位,Microsoft Visual Studio 2010: 下面开始安装: 1.安装前的准备:首先下 ...
- access中根据一个表创建另一个
access中根据一个表创建另一个 SELECT * INTO newTableFROM zD_qlr; SELECT * into mdFROM zd IN 'E:\fz\高阳\大姚\fz\bz\b ...
- 通过源码理解UST(用户栈回溯)
UST原理:如果gflags标志中包含了UST标志,堆管理器会为当前进程分配一块内存,这个内存区域就是UST数据库(user-mode stack trace database),并建立一个STACK ...
- Python基础(9)--正则表达式
正则表达式是一个很有用的工具,可处理复杂的字符匹配和替换工作.在Python中内置了一个re模块以支持正则表达式. 正则表达式有两种基本的操作,分别是匹配和替换. 匹配就是在一个文本字符串中搜索匹配一 ...
- javascript 全局变量 局部变量 var 与不加var的区别
一.外部的为全局,内部的为局部变量. 二.加var为局部变量(在方法内),不加var为全局变量(当方法内有一次使用后) <script type="text/javascrip ...