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年的第一天 ...
随机推荐
- 手脱EZIP v1.0
一.单步 1.载入PEID查壳 EZIP v1.0 2.载入OD,一上来就是一个大跳转,F8单步一直走 0040D0BE > $ /E9 jmp Notepad.004102DC ; //入口点 ...
- nodejs express框架一个工程中同时使用ejs模版和jade模版
在某些项目中,比如你接手了一个别人的项目然后你不想用蛋疼的ejs,或者你不想用蛋疼的jade.你有不想重写之前的页面,那么你现在可能需要新引入ejs或者jade模块,你仅仅需要做下面两步也许就能完成使 ...
- Splay 区间操作
据大佬说,\(Splay\)是序列操作之王.\(Splay\)是一种平衡树,通过伸展(\(Splay\)),在不改变中序遍历的前提下变换根的位置,从而快速的进行序列操作 \(Splay\)最常见的序列 ...
- 基于JavaSE阶段下的集合类汇总
一.数组与集合的区别 数组和集合都是用来存储对象的容器,但是,数组只能储存基本数据类型的对象,且长度不可变:而集合是储存引用数据类型的对象,且长度可变,所以,在不知对象数量的具体数值时一般用集合来存储 ...
- Elasticsearch.Net搜索引擎初使用【客户端安装】
下载windows客户端 官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/net-api/6.x/introduction.ht ...
- Ibatis的resultMap和查询数据的对应关系
iBatis和MyBatis 中返回数据对应关系 直接进入主题,现在的项目改用MyBatis了,感觉跟iBatis还是不一样的,比如在判断空值上面,iBatis是有标签的<isNotEmpty& ...
- 将本地项目和远程git仓库相连接
有时候写代码,是存在本地的,远程仓库没有对应的代码库,这个时候就需要把本地的代码项目与远程git库连接并推送. 1. 将项目文件添加到仓库中 本地的项目文档: 添加项目文件 git add . 2. ...
- 分治思想 特别常用 Codeforces Beta Round #80 (Div. 1 Only) D
D. Time to Raid Cowavans time limit per test 4 seconds memory limit per test 70 megabytes input stan ...
- hadoop之安全篇
---------------持续更新中------------------- hadoop集群安全架构 如下图所示: --------------------------未完待续---------- ...
- Spring集成quartz集群配置总结
1.spring-quartz.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be ...