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年的第一天 ...
随机推荐
- duilib 增加gif控件(基于gdi+,可控制播放暂停,自动设置大小)
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42502081 因为项目需要我需要给duilib增加一个gif控件,目前已 ...
- jinja2 中的 Template 批量替换json字符串中的内容
项目中用到elasticsearch,使用Json格式查询方式,一个查询语句中有好几个地方需要替换,且替换的值都相同.最开始把json转为字符串发方式,利用format函数处理,发现再转回json时无 ...
- LightOJ 1166 Old Sorting 置换群 或 贪心 水题
LINK 题意:给出1~n数字的排列,求变为递增有序的最小交换次数 思路:水题.数据给的很小怎么搞都可以.由于坐标和数字都是1~n,所以我使用置换群求循环节个数和长度的方法. /** @Date : ...
- IO流-LineNumberReader
LineNumberReader继承自BufferedReader,比其多了两个方法,用于设置和获取当前行号, setLineNumber(); getLineNumber();
- js和php的时间戳和时间的转化
js时间戳转化为时间 //时间戳转时间 function time(sj) { var now = new Date(sj*1000); var year =now.getFullYear(); va ...
- TCP 传输控制协议(转)
开头先说几个协议: IP:网际协议 TCP:传输控制协议 Http:超文本传输协议 AMQP:高级消息队列协议 一:TCP是什么? TCP(Transmission Control Protocol ...
- 【zTree】zTree的3.5.26静态树与动态树(实用)
1.静态树: 目录结构:(css与js为下载的原文件夹)
- 35 - 并发编程-GIL-多进程
目录 1 GIL 1.1 为什么会有GIL 1.2 GIL与thread lock 1.3 个人总结 2 multiprocessing模块 2.1 Process类 2.2 Process类的方法 ...
- python并发编程之threading线程(一)
进程是系统进行资源分配最小单元,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.进程在执行过程中拥有独立的内存单元,而多个线程共享内存等资源. 系列文章 py ...
- linux下C语言实现的哈希链表【转】
转自:http://blog.chinaunix.net/uid-28458801-id-4276934.html 操作系统:ubuntu10.04 前言: 在稍微大点的项目中,基本都会遇到算 ...