openstack架构设计(一)
下图描述了最常见的Openstack集成服务和各服务之间如何交互的逻辑架构。

一. 计算架构
当设计和构建计算结点时,需要考虑处理器,内存、网络、和存储资源等信息。它也是openstack的核心部分。
1. 计算服务器体系加构描述
当设计计算资源沲时,考虑处理器数据,内存数据,网络的需求,每个hypervisor请求的存储。
(1)CPU的选择
- CPU是否支持虚拟化
- 在必要时使用NUMA技术,和使用CPU PINNG绑定某个应用。
- 使用超线程技术加快CPU的处理
(2)hypervisor选择
Openstack compute(nova) 针对不同的等级,支持很多的hypervisors,包括如下:
- KVM
- LXC
- QEMU
- VMware ESX/ESXI
- XEN
- Hyper-V
- Docker
(3)服务器硬件选择
服务器的密集度,比如服务器是几U的,占用多少空间。
资源能力:CPU多少核心,多少内存,多少存储等。
扩展能力:服务器最多能扩展到多少资源(为以后着想)
(4)Openstack允许在compute nodes上过量使用CPU和内存,这是牺牲实例的性能来换取实例的数量。compute服务认使用下列比例:
- CPU allocation ration: 16:1
- RAM allocation ration: 1.5:1
上面的比例意味着:一个物理核心默认可以分配 16个虚拟核心,比如,物理节点有12核心,那么调度器会看到192可用的虚拟核心。常规的定义4个核心,也就是说可以提供48个实例在一个物理节点上。 内存和CPU的分法类似。
所以在特定的使用案例中,必须选择适合自己的CPU和内存分配比例。
(5)实例的存储考量
针对实例的磁盘运行什么存储上面,这也是需要考虑的。提供临时的存储基本有三种方法:
- 不在计算节点上的存储---共享文件系统
有以下优势:
- 假如一个计算节点坏掉,实例比较好恢复。
- 运行在专用的存储系统上,可能操作、维护更简单。
- 可以和其它存储共享等。
有以下劣势:
- 针对在相同存储的实例,其它实例大量使用IO,可能会对本实例有影响。
- 共享存储中间使用比如网络连接,可能会造成性能延迟。
- 扩容时可能会影响网络的架构。
- 在计算节点上的存储----共享文件系统
有以下优势:
- 当需要使用附加的存储时,可以很方便的扩展外部存储。
有以下劣势:
- 对比非共享的存储,运行分布式文件系统可能导致部分数据丢失。
- 由于在多个主机上,实例还原可能有点小复杂。
- 使用网络(也可能是FC光纤)会造成性能延迟。
- 丢失计算节点会降低所有主机的存储有效性。
- 在计算节点上的存储------非共享文件系统
有以下优势:
- 高I/O的使用,不会影响其它计算结点。
- 由于是本地直接使用存储,相对于使用共享存储而言性能会有所增加。
- 别的计算节点坏,不会影响它。
有以下劣势:
- 假如计算节点挂的在,那么在它上同跑的实例就挂了。
- 从A节点往B节点迁移实例相对来说较为复杂和困难的。
- 扩容不太好。
在选择存储时,可以从以下几个方面考虑
- 工作量是什么,就是运行什么应用的意思?
- 应用是否有IOPS的需求(指的特定)?
- 它们是读、写还是随机访问的比较多?
- 针对以后的扩容,预测的会有哪些方面扩容?
- 什么存储是当前企业使用的?它们是否和现在的能集成?
- 如何管理这些存储?
文件系统的选择:
假如想要使用共享存储的在线迁移的话,那么需要配置分布式文件系统:支持如下:
- NFS(default for Linux)
- Ceph
- GlusterFS
- MooseFS
- Lustre
(6) 网络连接
在生产环境中,推荐以下网络配置:
Install or OOB network: 部署软件到Openstack computer nodes使用,建议使用至少1GB的网络。
Internal or Management network: 在Openstack控制节点和计算节点之间通信使用,也可以作计算节点和iscsi 存储节点的iscsi协议之间的通信。建议使用1GB的网卡,且不要和其它网络之间进行路由。 且该接口建议使用HA冗余。
Tenant network: 该网络用于租户的各个实例之间进行通信的,建议至少1GB的网卡且做冗余 。
Storage network: 该网络用于Ceph前端或其它共享存储通信,该网络建议和其它网络之间进行隔离,建议使用10GB的网卡,且做冗余。
外部或者公共网络(可选):用于和Internel进行通信。
(7)计算节点服务器日志
建议将日志导入到ELK中。拓扑如下:

二. 存储架构
首先明白短暂存储和持久存储的区别:
- 短暂存储---假如部署openstack compute service (nova),默认的用户没有访问任何的持久存储,磁盘分配给VMs是短暂的,意味上假如虚拟机终止的话数据也会丢失。
- 持久存储---不关虚拟机是否是运行状态,那么数据是永久有效的。
1. 对象存储
在openstack中对象存储是通过object storage service (swift)来实现的,用户通过REST API访问二进制对象,假如用户需要归档或者管理大的数据集的话,那么应该提供对象的存储服务。会带来以下好处:
- Openstack可以存储虚拟机的镜是在对象存储系统中,当然也可以存储在文件系统中。
- 可以和Openstack Identity 和 Openstack Dashboard进行集成一起工作。
- 通过异步最终一致性复制可以分布在多个数据中心。
2. 块存储
在openstack中执行块存储的是通过Block Storage service(cinder)来完成的,因为这些卷是持久的,它们可以从A实例分离,然后挂载到别的实例中去。
块存储支持多个形式的设备,比如还支持NFS,GlusterFS等。
3. 基于文件的存储
也支持NFS,CIFS,GlusterFS或HDFS协议。
存储类型的区别:
| Ephemeral storage | Block storage | Object storage | Shared File System storage | |
| Application | Run operating system and scratch space | Add additonal persistent storage to a virtual machine | Store data, including VM images | Add additional persistent storage to a virtual machine |
| Access through … | A file system | A block device that can be partitioned, formatted, and mounted (such as , /dev/vdc) | The REST API | A Shared File Systems service share (either manila managed or an external one regisdtered in manila) that can be partitioned, formatted and mounted(such as /dev/vdc) |
| Accessible from… | Within a VM | Within a VM | Anywhere | Within a VM |
| Managed by… | Openstack Compute(nova) | OpenStack Block Storage(cinder) | Openstack Object Storage(swift) | OpenStack Shared File System Storage(manila) |
| Persists until | VM is terminated | Deleted by user | Deleted by user | Deleted by user |
| Sizing determined by … | Administrator configuration of size settings, know as flavors | User specification in initial request | Amount of available physical storage |
|
| Encryption configuration | Parameter in nova.conf | Admin establishing encryped volume type, then user selecting encrypted volume | Not yet available | Shared File Systems service does not apply any additional encryption above what the share’s back-end storage provides |
| Example of typical usage… | 10GB first disk, 30 GB second disk | 1TB disk | 10s of TBs of dataset storage |
Depends completely on the size of back-end storage specified when a share was being created. in case of thin provisioning it |
openstack架构设计(一)的更多相关文章
- 后端技术杂谈8:OpenStack架构设计
本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...
- OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)
API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例,nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 ...
- 发现 OpenStack: 架构、功能和交互
原文:http://www.ibm.com/developerworks/cn/cloud/library/cl-openstack-overview/index.html OpenStack 是由 ...
- 架构设计:系统存储(28)——分布式文件系统Ceph(挂载)
(接上文<架构设计:系统存储(27)--分布式文件系统Ceph(安装)>) 3. 连接到Ceph系统 3-1. 连接客户端 完毕Ceph文件系统的创建过程后.就能够让客户端连接过去. Ce ...
- openstack架构简单介绍J版(更新中)
title : OPENSTACK架构简单介绍 openstack的发展及历史 openstack是什么? OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算软件,以A ...
- OpenStack 通用设计思路
API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例,nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 ...
- Openstack架构及配置
Openstack云平台架构 一个良好的架构设计和运维保障措施,能为OpenStack云平台的稳定健康运行,产生不可估量的积极影响.如果化繁为简,简单的来说,要部署一套生产环境级别的OpenStack ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
随机推荐
- opencv函数制作的时钟模型
http://www.cnblogs.com/sytu/p/4192652.html 在秒针模型的基础上添加了分针和时针,并且添加了暂停控件和设置时间的功能. #include"cv.h&q ...
- 往android主项目中添加辅助项目
一个较大的工程往往需要多个项目组成,便于更好的并行开发和管理,但最后还是要合到一起来发布.那如何往主项目里添加其他辅助项目呢? 通常的做法是将辅助项目打包成jar包,像库一样导入到主项目,但是如果我们 ...
- Java项目中读取properties文件,以及六种获取路径的方法
下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点: 最常用读取properties文件的方法 InputStream in = getClass().getResourceAsStr ...
- CentOS下安装JDK1.8
0.卸载旧版本 键入命令java-version,查询当前JDK版本 如果版本号不是想要的,键入rpm -qa|grep gcj 键入命令 yum -y remove (后接查询得到的版本),移除老版 ...
- 无密码ssh登录linux
简介 ssh是常见的远程登录linux的方式,大部分时候需要输入用户名密码登录.本文介绍如何无密码登录linux,适用于mac和linux,windows不清楚. 不过这不是什么新的知识,基本上大家都 ...
- [BZOJ1911][BZOJ1912][BZOJ1913]APIO2010解题报告
特别行动队 Description 这个好像斜率优化不是一般地明显了啊...只不过要分a的正负两种情况考虑是维护上凸还是下凸 /********************************** ...
- Metasploit 一些重要模块使用介绍
本文是"T00LS Metasploit(第一季)"的文档版,是个人在观看视频动手操作的一个记录,仅供学习.文中会介绍Metasploit的一些基本使用:端口扫描.smb扫描.服务 ...
- webpack编译报错:Module not found: Error: Cannot resolve 'file' or 'directory' ./../../node_modules..
在同事的mac电脑上,可以正常编译,拿到我这边就出错了(⊙﹏⊙) 好像是webpack在window下的一个bug,需要让 webpack 和你的项目保持在一个盘符下,参考. 解决方法: 修改conf ...
- MM(Majorize-Minimization, Minorize-Maximization)优化方法
MM算法思想 MM算法是一种迭代优化方法,它利用函数的凸性来找到原函数的最大值或最小值.当原目标函数\(f(\theta)\)较难优化时,算法不直接对原目标函数求最优解,而去求解逼近于原目标函数的一个 ...
- [Gym-100625J] 搜索
题目链接:https://cn.vjudge.net/problem/Gym-100625J 具体思路:首先,具体思路是两个人一起走到一个点,然后两个人按照同样的道路走出去,听了别人的思路,还有一种特 ...