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年的第一天 ...
随机推荐
- 手脱tElock 0.98b1 -> tE!
声明: 只为纪录自己的脱壳历程,高手勿喷 第一种:两次内存法 注: ①这是在win7x32系统上运行的脱壳,所以可能地址不同 ②修复的时候用等级三修复,最后修复不了的剪切掉然后转存合一正常运行,已测试 ...
- -webkit-line-clamp 多行文字溢出...
一.应用 CSS代码: .box { width: 100px; display: -webkit-box; -webkit-line-clamp:; -webkit-box-orient: vert ...
- PlantUML类图
PlantUML类图 雨客 2016-04-08 11:38:03 浏览796 评论0 摘要: 类之间的关系 PlantUML用下面的符号来表示类之间的关系: 泛化,Generalization: ...
- [DeeplearningAI笔记]序列模型2.7负采样Negative sampling
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.7 负采样 Negative sampling Mikolov T, Sutskever I, Chen K, et a ...
- Handlebars 使用
引入js <script src="js/json3.min.js"></script> <script src="js/handlebar ...
- Unsupervised learning, attention, and other mysteries
Unsupervised learning, attention, and other mysteries Get notified when our free report “Future of M ...
- Ubuntu 14.04 安装Visual studio Code
上一篇简单介绍了Ubuntu 14.04上如何创建.运行 hello world 程序. 这篇介绍Ubuntu 14.04如何安装Visual studio Code. 网上推荐的有通过Ubuntu ...
- 【洛谷 P4291】 [HAOI2008]排名系统(Splay,Trie)
题目链接 不是双倍经验我会去\(debug\)一上午? 一开始我是用的\(map+string\),跑的太慢了,T了4个点. 后来我手写了\(string\),重载了小于号,依然用的\(map\),T ...
- 基于Node的Web聊天室
1 项目名称 Web聊天室(<这是NodeJs实战>第二章的一个案例,把整个开发过程记录下来)
- 再续 virtualenv II
为什么搭建虚拟环境 搭建 Python 虚拟环境,可以方便的解决不同项目中对类库的依赖问题.当然,也可以方便地Python2,Python3 共存.避免包的混乱和版本的冲突.为每个程序单独创建虚拟环境 ...