最近在学习Openstack+ceph集群,这里记录一些随笔,有不同观点欢迎指出

Openstack


文章目录

  • Openstack
  • 什么是Openstack
  • Openstack做什么
  • Openstack运用在哪里
  • Openstack架构
  • openStack Dashboard
  • Compute
  • Networking
  • Storage
  • 关系图
  • 组件间关系
  • Openstack新建云主机流程图
  • Ceph
  • 什么是Ceph
  • Ceph做什么
  • Ceph运用在哪里
  • Ceph集群的组成
  • Ceph中有三个核心组件
  • OSD守护进程
  • 为什么需要两个OSD守护进程:
  • Monitor
  • Managers
  • Ceph架构图
  • 整体架构
  • 网络架构


什么是Openstack

是一个基础设施资源管理平台

Openstack做什么

可以按需求提供资源(类似操作系统可以管理硬件部分)

Openstack运用在哪里

Keystone 认证服务

Glance 镜像服务

Nova 计算服务

Neutron 网络服务

Cinder 块存储服务

Swift 对象存储服务

Horizon dashboard服务

Heat 编排服务

Ceilometer 监控服
务

Sahara 大数据部署服务
...

Openstack架构

ceph和openstack的cinder对接_linux

应用通过API接入openStack

openStack Dashboard

openstack中提供的一个web前端控制台,以此来展示openstack的功能
dashboard这个服务可以运行在控制节点,也可以运行在其他一个单独的节点上

Compute

计算节点

Networking

网络节点

Storage

存储节点

关系图

ceph和openstack的cinder对接_linux_02

组件间关系

ceph和openstack的cinder对接_Storage_03

ceph和openstack的cinder对接_云计算_04

Keystone:认证服务
Glance:镜像服务
Nova:计算服务
Neutron:网络服务
Cinder:存储服务
Horizon:web 界面
Cellometer:监控计费
Swit:对象存储
Heat:编排服务(通过剧本,批量部署虚拟机)

Openstack新建云主机流程图

1.keystone 身份认证

2.填写创建云主机的相关配置–> nova-api --> 将相关信息保存到 MySQL

3.nova-scheduler --> 读取 MySQL 云主机配置信息 --> 读取计算节点资源

4.nova-compute 通过 nova-conductor 获取云主机配置信息 --> 调取相关模块(neutron、glance、cinder)进行云主机的创建

Ceph

什么是Ceph

是一个分布式存储系统

Ceph做什么

可以提供对象存储块存储文件存储

Ceph运用在哪里

对象存储和块存储可以很好地和各大云平台集成

Ceph集群的组成

Monitor节点
MDS节点(可选,用于文件存储)至少两个OSD守护进程

Ceph中有三个核心组件

OSD守护进程

1.用于存储数据、处理数据拷贝、恢复、回滚、均衡,并通过心跳程序向Monitor提供部分监控信息

2.一个Ceph集群中至少需要两个OSD守护进程
为什么需要两个OSD守护进程:
两个OSD节点,集群才能到达active+clean状态

Monitor

用于维护集群的状态映射信息(个人理解是监控集群运行状态)
包括monitor、OSD、Placement Group(PG)
还维护了Monitor、OSD和PG的状态改变历史信息

Managers

1.负责跟踪运行时间指标和Ceph群集的当前状态
2.包括存储利用率当前性能指标系统负载
3.同时还托管基于python的插件管理和公开Ceph集群信息,包括基于Web的仪表板REST API。 通常,至少有两名Manager需要高可用性

Ceph架构图

ceph和openstack的cinder对接_linux_05

APP :应用程序
HOST:主机
VM:虚拟机
Client:接入

LibRados:Ceph的客户端通过一套名为librados的接口进行集群的访问

RadosGW:RadosGW 是对象存储(OSS,Object Storage Service)的一种实现方式,RADOS 网关也称为 Ceph对象
对象存储概念:
对象是对象存储系统中数据存储的基本单位,每个 Object 是数据和数据属性集的综合体,数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等每个对象自我维护其属性,从而简化了存储系统的管理任务,对象的大小可以不同,对象存储(Object Storage)是无层次结构的数据存储方法,通常用于云计算环境中,不同于其他数据存储方法,基于对象的存储不使用目录树,数据作为单独的对象进行存储,数据并不放置在目录层次结构中,而是存在于平面地址空间内的同一级别,应用通过唯一地址来识别每个单独的数据对象,每个对象可包含有助于检索的元数据,专为使用 API 在应用级别(而非用户级别)进行访问而设计

S3:S3 由 Amazon 于 2006 年推出,全称为 Simple Storage Service,S3 定义了对象存储,是对象存储事实上的标准,从某种意义上说,S3 就是对象存储,对象存储就是 S3,它对象存储市场的霸主,后续的对象存储都是对 S3 的模仿

Swift:OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、冗余和持久性。对象存储,用于永久类型的静态数据的长期存储

RBD:RBD即RADOS Block Device的简称,RBD块存储是最稳定且最常用的存储类型

CepthFS:cephfs是ceph提供的兼容POSIX协议的文件系统,对比rbd和rgw功能,这个是ceph里最晚满足production ready的一个功能,它底层还是使用rados存储数据

Rados:RADOS的全称为Reliable Autonomic Distributed Object Store,也就是可靠的,自修复分布式对象存储。其关键特性体现在两方面,一方面是数据是高可靠的;另外一方面是对于故障的自修复能力,比如出现宕机或者磁盘故障问题等情况下实现自动的故障处理,实现集群状态的修复。是Ceph分布式存储系统的核心和基座

MDS:MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务

MON:一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据

Pool:池

CRUSH map:ceph从L版本开始新增了个功能叫crush class,又被称之为磁盘智能分组。因为这个功能就是根据磁盘类型自动进行属性关联,然后进行分类减少了很多的人为操作

PG:pg ( placement group ) 是数据存储的重要单位

OSD:一块硬盘 通常对应一个 OSD,由 OSD对硬盘存储进行管理,但有时一 个分区也可以成为一个 OSD

Cluster Node:cluster 用于监听 process(child) 子进程触发的各种事件

整体架构

ceph和openstack的cinder对接_Storage_06

libvirt:Libvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。这些API在云计算的解决方案中广泛使用。

QEMU:模拟器

librbd:块存储的接口

librados:一个Ceph客户端,通过librados直接与OSD交互,来存储和取出数据

网络架构

ceph和openstack的cinder对接_云计算_07