下图描述了最常见的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年的第一天 ...
随机推荐
-
linux shell脚本使用结构化命令
内容: 一.if-then命令 二.if-then-else命令 三.test命令 四.case命令 1.if-then结构化命令中最基本的类型,其格式如下: if command then comm ...
-
清北学堂模拟day6 花
[问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的买花的方案?答案可能很大,输出答案mod p的值. ...
-
ADO.NET 总结
一.简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data.C ...
-
Java实现读取文章中重复出现的中文字符串
在上个星期阿里巴巴一面的时候,最后面试官问我如何把一篇文章中重复出现的词或者句子找出来,当时太紧张,答的不是很好.今天有时间再来亲手实现一遍.其实说白了也就是字符串的处理,所以难度并不是很大. 以下是 ...
-
JQuery遍历,find()和each()方法
find()方法 jquery选择器非常强大,利用css的命名规约,可以更快更方便的找出想要的元素. 比如: $("#id") $("#"+"id&q ...
-
OpenGL读取帧缓存数据
https://blog.csdn.net/niu2212035673/article/details/80251949 简述有些时候我们可能需要获取渲染后的图像数据,比较常用的函数是glReadPi ...
-
JS计算两个日期之间的天数,时间差计算
1.日期之间的天数计算 //计算天数差的函数,通用 function DateDiff(sDate1, sDate2) { //sDate1和sDate2是2017-9-25格式 var aDate, ...
-
在客户端模拟调用srv和topic
rostopic pub -r 10 /toipic_name Tab+Tab rosservice call /service_name Tab+Tab rostopic pub -r 10 /c ...
-
Spring Oauth2 with JWT Sample
https://www.javacodegeeks.com/2016/04/spring-oauth2-jwt-sample.html ******************************** ...
-
使用OpenFileDialog组件打开多个文
实现效果: 知识运用: OpenFileDialog组件的Multiselect属性 //是否允许多选 public bool Multiselect {get;ser;} FileNames属性 / ...