搜档网
当前位置:搜档网 › TCE对象存储CSP运维手册

TCE对象存储CSP运维手册

TCE对象存储CSP运维手册
TCE对象存储CSP运维手册

一、CSP 产品简介

1.1 概述

腾讯云对象存储CSP(Cloud Storage on Private)是面向企业客户提供可扩展、高可靠、强安全、低成本的PB级海量数据存储能力,同时保证核心敏感数据私密性。CSP 提供客户机房私有部署、腾讯云机房专区部署两种方式,满足客户多种场景需求,并保障客户对系统100%可控。主要针对于敏感数据、监管要求不能上云的企业客户。CSP 提供对象存储能力,接口完全兼容AWS S3协议,通信基于HTTP/HTTPS网络协议,并使用REST风格,协议简单清晰无状态,易于访问。提供了用户隔离与权限控制机制。

1.2 名词解释

Bucket:存储桶,在CSP 中用于存储对象。一个存储桶中可以存储多个对象。存储桶名由用户自定义的字符串和系统自动生成的数字串用中划线链接而成,以保证该存储桶全球唯一;

Object:对象,CSP 中存储的基本单元,可以是一份文件或一张图片等等,存放于存储桶中,通过控制台、API、SDK等多种方式访问;

Region:地域,表示CSP 的数据中心所在的地域。地域在创建存储桶时指定,不允许更改。该存储桶下所有的对象都存储在对应的数据中心,目前不支持对象级别的地域设置;

默认访问域名:默认访问域名由存储桶名、CSP 所属地标识和对象名组成,通过默认访问域名可寻址COS 中唯一对应的对象。在用户上传对象后,腾讯云会自动为对象创建

默认访问域名。

1.3 产品优势

扩展性:分布式架构,根据负载和存储要求平滑扩容。

持久性:支持多节点、机柜、机房的分布式管理,实现了数据多副本或纠删码冗余。

经济性:兼容性软硬件平台,避免专用设备开销,显著降低每GB 的部署和管理成本。

安全性:可部署硬件独占集群,实现网络层面的软件安全隔离,数据支持SSL 传输加密和SSE 服务端加密。

整合性:与虚拟化平台、容器、大数据等服务紧密集成,提供友好的S3API 兼容性。

多租户:支持多租户模式,丰富的权限管理方式。

1.4 应用场景

视频监控

视频监控场景要求具有高IO吞吐带宽,能够实时在线扩容,且数据一般不需要长期存储,但要求数据能到期自动删除,同时对于敏感数据要进行保护。

备份归档

归档数据通常需要低成本、高可靠和强安全,CSP都能达到其要求。

大数据分析

大数据场景通常都是数据吞吐量大,但不能无限用硬件资源堆出来,需要兼顾成本,且在分析过程中往往需要处理的是海量小文件,需要特别对其进行优化,同时还需要多维度的权限管理。

媒资存储

现在媒体资源存储方案可以放弃磁带库,利用网关上云,非编数据在私有云下转码编辑。

二、部署架构&功能模块

2.1 系统逻辑架构

2.2 存储集群架构

接入模块:提供访问接口,解析协议请求(对象/文件)。

集群管理模块:固定3台节点部署,负责管理整个集群的状态视图。采用Pasox协议保证集群三个节点的数据一致性。

存储模块:存储模块逻辑上分为两层,上层提供副本管理的功能,下层是单机存储引擎。

2.3 系统部署架构

CSP对象存储系统本质是基于开源存储系统ceph二次开发的结果,它的底层组件与ceph相同,有Monitor、OSD、Manager等组件,其中Manager对应CSP-WEB + Access,用于收集ceph集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。对外提供ceph dashboard(ceph ui)和resetful api;Monitor维护集群的状态,包含monitor组件信息,manger 组件信息,osd组件信息,mds组件信息,crush 算法信息。还负责ceph集群的身份验证功能,client在连接ceph集群时通过此组件进行验证。OSD为对象存储进程,对应CSP中的Storage组件。ceph 管理物理硬盘时,引入了OSD概念,每一块盘都会针对的运行一个OSD进程。换句话说,ceph 集群通过管理OSD 来管理物理硬盘。OSD 一般功能为:存储数据、维护数据副本、数据恢复、数据再平衡以及对ceph monitor组件提供相关监控信息。

2.4 系统组件

2.5 功能模块

Cluster Manager:集群管理,提供Web控制台;

Data Access:数据接入,提供访问接口,解析协议请求(对象/文件);

Monitor:监控节点,分布式系统一致性监控管理;

Index Storage:索引存储,对象元数据(混布),文件索引存储;

Data Storage:数据存储,磁盘存储管理,保障数据可靠安全。

2.6 请求数据流

1)客户端与接入节点建立连接,并请求数据。

2)接入节点根据路由规则寻址到存储节点,读取相应的数据片。

3)如某些数据片损坏,存储节点将根据存储策略进行修复操作。

4)接入节点将数据片聚合为完整的数据,发送给客户端。2.7 CSP 业务流程

创建bucket

数据写入流程

1)数据按固定大小切片;

2)生成全局ID,hash计算存储位置

3)获取集群状态用于步骤2计算

4)写主副本

5)写从副本

6)本地副本提交

7)本地副本提交成功

8)远程副本提交成功

9)三副本提交成功

10)对象写入成功

数据读取流程

1)根据偏移量计算具体分块号2)hash计算存储位置

3)获取集群状态用于步骤2计算4)从主副本读取数据

5)本地副本读取

6)本地副本读取成功

7)副本数据读取成功

8)对象读取成功

数据迁移

1)Monitor监控到故障盘后下发故障状态到所有服务(默认30分钟隔离期)2)主副本服务发起从副本故障启动恢复,读取本地副本

3)在健康硬盘上重建副本

4)本地副本提交

5)本地副本提交成功

6)远程副本重建成功

数据恢复

1)Monitor集群监控到故障盘后恢复通知所有存储服务;

2)主副本服务根据新的视图计算是否启动均衡;

3)在恢复盘上写入副本;

4)本地副本提交;

5)本地副本提交成功;

6)远程副本写入成功;

7)从副本删除多余副本;

2.5 CSP 数据分布算法

CSP是Ceph开源产品的二次开发,它的核心算法继承自Ceph。Ceph是为大规模分布式存储而设计的,数据分布算法必须能够满足在大规模的集群下数据依然能够快速的准确的计算存放位置,同时能够在硬件故障或扩展硬件设备时做到尽可能小的数据迁移,Ceph的CRUSH算法就是精心为这些特性设计的。

在说明CRUSH算法的基本原理之前,先介绍几个概念和它们之间的关系。

Object:当用户要将数据存储到CSP集群时,存储数据都会被分割成多个Object,每个

Object都有一个object id,每个Object的大小是可以设置的,默认是4MB,Object可以看成是CSP存储的最小存储单元。

PG:由于Object的数量很多,所以CSP引入了PG的概念用于管理Object,每个Object最后都会通过CRUSH计算映射到某个PG中,一个PG可以包含多个Object。PG与OSD的关系:PG也需要通过CRUSH计算映射到OSD中去存储,如果是二副本的,则每个PG都会映射到二个OSD,比如[OSD#1,OSD#2],那么OSD#1是存放该PG 的主副本,OSD#2是存放该PG的从副本,保证了数据的冗余。

为把对象映射到归置组,在OSD 和客户端间创建了一个间接层。由于Ceph 集群必须能增大或缩小、并动态地重均衡。如果让客户端“知道”哪个OSD 有哪个对象,就会导致客户端和OSD 紧耦合;相反,CRUSH 算法把对象映射到归置组、然后再把各归置组映射到一或多个OSD ,这一间接层可以让CSP 在OSD 守护进程和底层设备上线时动态地重均衡。下列图表描述了CRUSH 如何将对象映射到归置组、再把归置组映射到OSD 。

PG和PGP的关系:pg是用来存放object的,pgp相当于是pg存放osd的一种排列组合,我举个例子,比如有3个osd,osd.1、osd.2和osd.3,副本数是2,如果pgp的数目为1,那么pg存放的osd组合就只有一种,可能是[osd.1,osd.2],那么所有的pg主从副本分别存放到osd.1和osd.2,如果pgp设为2,那么其osd组合可以两种,可能是[osd.1,osd.2]和[osd.1,osd.3],是不是很像我们高中数学学过的排列组合,pgp就是代表这个意思。一般来说应该将pg和pgp的数量设置为相等。

object、pg、pool、osd、存储磁盘的关系

本质上CRUSH 算法是根据存储设备的权重来计算数据对象的分布的,权重的设计可以根据该磁盘的容量和读写速度来设置,比如根据容量大小可以将1T的硬盘设备权重设为1,2T的就设为2,在计算过程中,CRUSH是根据Cluster Map、数据分布策略和一个随机数共同决定数组最终的存储位置的。

Cluster Map 里的内容信息包括存储集群中可用的存储资源及其相互之间的空间层次关系,比如集群中有多少个机架,每个机架中有多少台服务器,每个服务器有多少块磁盘

用以OSD等。

数据分布策略是指可以通过CSP管理者通过配置信息指定数据分布的一些特点,比如管理者配置的故障域是Host,也就意味着当有一台Host起不来时,数据能够不丢失,CRUSH可以通过将每个pg的主从副本分别存放在不同Host 的OSD 上即可达到,不单单可以指定Host,还可以指定机架等故障域,除了故障域,还有选择数据冗余的方式,比如副本数或纠删码。

总结:

(1)PG是指定存储池存储对象的目录有多少个,PGP是存储池PG的OSD分布组合个数

(2)PG的增加会引起PG内的数据进行分裂,分裂到相同的OSD上新生成的PG当中(3)PGP的增加会引起部分PG的分布进行变化,但是不会引起PG内对象的变动

三、常用命令介绍

3.1 服务启停

3.2 状态查看

3.3 集群操作

3.4 节点操作

3.5 存储池操作

四、运维工具

4.1 运营管控Ambari

CSP的运营管控系统是基于Ambari 2.4.2定制而来,Web运营控制台是为了提升便捷性,减少管理员的误操作,而对Ambari的一层封装。

Ambari是分布式集群配置管理工具,是由hortonworks主导的开源项目,它已经成为了apache基金会的开源项目,已经成为运维分布式系统的得力助手。Ambari充分利用了一些已有的优秀开源软件,巧妙地把它们结合起来,使其在分布式环境中做到了集群式服务管理能力、监控能力、展示能力。

Ambari框架采用的是Server/Client的模式,主要由两部分组成:ambari-agent和ambari-server。ambari依赖其它已经成熟的工具,例如:其ambari-server就依赖python,而ambari-agent还同时依赖ruby、puppet、fecter等工具,还有它也依赖一些监控工具nagios和ganglia用于监控集群状况。

对Ambari 2.4.2的定制主要包括以下几个方面:

●基于Ambari的插件机制添加COS Service和TDS Stack

●增加数据库的column用于存放CSP所需的额外配置信息

●修改Ambari-Server的命令下发逻辑,以向Ambari-Agent传递额外的信

息,实现定制化控制

●为Ambari-Server添加告警转发组件,以向Barad转发告警

在ambari-server开放的REST API中分为主要的两大类API,其中一类为ambari-web提供监控管理服务,另一类用于与ambari-agent交互,接受ambari-agent向ambari-server发送心跳请求。Master模块接受API和Agent Interface的请求,完成ambari-server的集中式管理监控逻辑,而每个agent节点只负责所在节点的状态采集及维护工作。

Ambari-agent是一个无状态的,其功能分两部分:

1.采集所在节点的信息并且汇总发送心跳发送汇报给ambari-server。

2.处理ambari-server的执行请求。

因此它有两种队列:

1.消息队列Message Queue,或称为ResultQueue。包括节点状态信息

(包括注册信息)和执行结果信息,并且汇总后通过心跳发送给ambari-

server。

2.操作队列ActionQueue。用于接收ambari-server发送过来的状态操作,

然后交给执行器调用puppet或Python脚本等模块执行任务。

Ambari-server的Heartbeat Handler模块用于接收各个agent的心跳请求(心跳请求里面主要包含两类信息:节点状态信息和返回的操作结果),把节点状态信息传递给FSM状态机去维护着该节点的状态,并且把返回的操作结果信息返回给Action Manager去做进一步的处理。Coordinator模块又可以称为API handler,主要在接收WEB端操作请求后,会检查它是否符合要求,stageplanner分解成一组操作,最后提供给ActionManager去完成执行操作。

因此,从上图就可以看出,Ambari-Server的所有状态信息的维护和变更都会记录在数据库中,用户做一些更改服务的操作都会在数据库上做一些相应的记录,同时,agent通过心跳来获得数据库的变更历史。

数据库调整

TABLE hostcomponentdesiredstate中添加如下几个column:

●dss_id BIGINT NOT NULL DEFAULT 0——用于DATASTOR区分自己所

在的存储池,一般为0

●seal_state VARCHAR(32) NOT NULL DEFAULT 'INITIALIZED'——用于

DATASTOR换盘时记录状态

相关主题