TCE对象存储CSP运维手册.docx
- 文档编号:10023233
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:26
- 大小:1.51MB
TCE对象存储CSP运维手册.docx
《TCE对象存储CSP运维手册.docx》由会员分享,可在线阅读,更多相关《TCE对象存储CSP运维手册.docx(26页珍藏版)》请在冰点文库上搜索。
TCE对象存储CSP运维手册
一、CSP产品简介
1.1概述
腾讯云对象存储CSP(CloudStorageonPrivate)是面向企业客户提供可扩展、高可靠、强安全、低成本的PB级海量数据存储能力,同时保证核心敏感数据私密性。
CSP提供客户机房私有部署、腾讯云机房专区部署两种方式,满足客户多种场景需求,并保障客户对系统100%可控。
主要针对于敏感数据、监管要求不能上云的企业客户。
CSP提供对象存储能力,接口完全兼容AWSS3协议,通信基于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集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。
对外提供cephdashboard(cephui)和resetfulapi;Monitor维护集群的状态,包含monitor组件信息,manger组件信息,osd组件信息,mds组件信息,crush算法信息。
还负责ceph集群的身份验证功能,client在连接ceph集群时通过此组件进行验证。
OSD为对象存储进程,对应CSP中的Storage组件。
ceph管理物理硬盘时,引入了OSD概念,每一块盘都会针对的运行一个OSD进程。
换句话说,ceph集群通过管理OSD来管理物理硬盘。
OSD一般功能为:
存储数据、维护数据副本、数据恢复、数据再平衡以及对cephmonitor组件提供相关监控信息。
2.4系统组件
2.5功能模块
ClusterManager:
集群管理,提供Web控制台;
DataAccess:
数据接入,提供访问接口,解析协议请求(对象/文件);
Monitor:
监控节点,分布式系统一致性监控管理;
IndexStorage:
索引存储,对象元数据(混布),文件索引存储;
DataStorage:
数据存储,磁盘存储管理,保障数据可靠安全。
2.6请求数据流
1)客户端与接入节点建立连接,并请求数据。
2)接入节点根据路由规则寻址到存储节点,读取相应的数据片。
3)如某些数据片损坏,存储节点将根据存储策略进行修复操作。
4)接入节点将数据片聚合为完整的数据,发送给客户端。
2.7CSP业务流程
创建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.5CSP数据分布算法
CSP是Ceph开源产品的二次开发,它的核心算法继承自Ceph。
Ceph是为大规模分布式存储而设计的,数据分布算法必须能够满足在大规模的集群下数据依然能够快速的准确的计算存放位置,同时能够在硬件故障或扩展硬件设备时做到尽可能小的数据迁移,Ceph的CRUSH算法就是精心为这些特性设计的。
在说明CRUSH算法的基本原理之前,先介绍几个概念和它们之间的关系。
Object:
当用户要将数据存储到CSP集群时,存储数据都会被分割成多个Object,每个Object都有一个objectid,每个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是根据ClusterMap、数据分布策略和一个随机数共同决定数组最终的存储位置的。
ClusterMap里的内容信息包括存储集群中可用的存储资源及其相互之间的空间层次关系,比如集群中有多少个机架,每个机架中有多少台服务器,每个服务器有多少块磁盘用以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服务启停
启停mon服务
#cephmonstat
#ceph-mon-i[id]-c[config-file]--mon_data[data-path]
#pkillceph-mon
启停osd服务
#ceph-osd-i[id]-c[config-file]--osd_data=[data-path]--osd_journal=[journal-path]
#ps-ef|greposd找到id对应的进程,kill-9[pid]
3.2状态查看
机器健康状态查看
#cephhealth
实时运行状态查看
#ceph-w
集群状态信息查看
#ceph-s
3.3集群操作
集群版本查看
#ceph-v
集群存储空间查看
#cephdf
查看集群中的认证用户及key
#cephauthlist
查看集群详细配置
#cephdaemonmon.nodenameconfigshow|more
查看cephlog目录位置
#ceph-conf--namemon.nodename--show-config-valuelog_file
3.4节点操作
查看mon的状态信息
#cephmonstat
查看你ceph映射信息
#cephmondump
查看mon的选举状态(可定位leader)
#cephquorum_status
获得一个正在运行的monmap,并保存在1.txt文件中
#cephmongetmap-o1.txt
读取上面获得的map
#monmaptool--print1.txt
查看osd状态
#cephosdstat
osd的映射信息
#cephosddump
查看osd目录树
#cephosdtree
列出集群每块磁盘的使用情况
#cephosddf
设置crush中osd权重
#cephosdcrushset{id}{weight}[{loc1}[{loc2}...]]
3.5存储池操作
查看pg状态
#cephpgstat
查看pg组的映射信息
#cephpgdump
查看ceph集群中pool的状态
#cephosdpoolstats
查看ceph集群中的pool数量
#cephosdpoolls
显示集群中pool的详细信息
#radosdf
查看testpool池的pg数量
#cephosdpoolgettestpoolpg_num
四、运维工具
4.1运营管控Ambari
CSP的运营管控系统是基于Ambari2.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用于监控集群状况。
对Ambari2.4.2的定制主要包括以下几个方面:
●基于Ambari的插件机制添加COSService和TDSStack
●增加数据库的column用于存放CSP所需的额外配置信息
●修改Ambari-Server的命令下发逻辑,以向Ambari-Agent传递额外的信息,实现定制化控制
●为Ambari-Server添加告警转发组件,以向Barad转发告警
在ambari-server开放的RESTAPI中分为主要的两大类API,其中一类为ambari-web提供监控管理服务,另一类用于与ambari-agent交互,接受ambari-agent向ambari-server发送心跳请求。
Master模块接受API和AgentInterface的请求,完成ambari-server的集中式管理监控逻辑,而每个agent节点只负责所在节点的状态采集及维护工作。
Ambari-agent是一个无状态的,其功能分两部分:
1.采集所在节点的信息并且汇总发送心跳发送汇报给ambari-server。
2.处理ambari-server的执行请求。
因此它有两种队列:
1.消息队列MessageQueue,或称为ResultQueue。
包括节点状态信息(包括注册信息)和执行结果信息,并且汇总后通过心跳发送给ambari-server。
2.操作队列ActionQueue。
用于接收ambari-server发送过来的状态操作,然后交给执行器调用puppet或Python脚本等模块执行任务。
Ambari-server的HeartbeatHandler模块用于接收各个agent的心跳请求(心跳请求里面主要包含两类信息:
节点状态信息和返回的操作结果),把节点状态信息传递给FSM状态机去维护着该节点的状态,并且把返回的操作结果信息返回给ActionManager去做进一步的处理。
Coordinator模块又可以称为APIhandler,主要在接收WEB端操作请求后,会检查它是否符合要求,stageplanner分解成一组操作,最后提供给ActionManager去完成执行操作。
因此,从上图就可以看出,Ambari-Server的所有状态信息的维护和变更都会记录在数据库中,用户做一些更改服务的操作都会在数据库上做一些相应的记录,同时,agent通过心跳来获得数据库的变更历史。
数据库调整
TABLEhostcomponentdesiredstate中添加如下几个column:
●dss_idBIGINTNOTNULLDEFAULT0——用于DATASTOR区分自己所在的存储池,一般为0
●seal_stateVARCHAR(32)NOTNULLDEFAULT'INITIALIZED'——用于DATASTOR换盘时记录状态
●seal_settingsTEXTNOTNULL——用于DATASTOR记录配置
TABLEservicedesiredstate中添加如下几个column:
●recovery_speedVARCHAR(32)NOTNULLDEFAULT'medium'——存放集群故障恢复时数据搬迁的速度
TABLEhoststate中添加如下几个column:
●seal_settingsTEXTNOTNULL——存放服务器级别的配置,目前暂未使用
●seal_snVARCHAR(128)NOTNULLDEFAULT'NONE'——存放服务器序列号
Ambari本身支持将告警通过SNMP或Email形式对外通知,为了支持向Barad上报告警,用CSPDispatcher实现了Ambari中的NotificationDispatcher的接口。
4.2统计服务moira
CSP提供细粒度的用户统计信息,这些功能依赖于Moira组件。
Moira负责提供高可用的数据统计服务、计费上报服务以及前端依赖的众多RESTfulAPI。
Moira采用master-slaves的架构,整个系统由3个moiraserver和多个moiraagent组成。
●moiraserver,负责定期拉取用户用量信息,后台数据统计以及提供相应的RESTfulAPI。
●moiraagent,负责监听日志并解析,统计用户的请求数据,执行moiraserver下发的任务。
Moira组件在启动时,会进行选主,在任意时刻都只有一个moiraserver处于leader状态,另外的moiraserver处于follower状态。
当机器发现故障时,会自动选择出新的leader并提供服务。
moiraagent则会自动部署到所有DataAccess节点,解析用户请求日志,向数据库中写入聚合的统计数据。
Moira组件负责数据统计的任务,数据统计的指标包括:
●存储桶存储容量
●访问流量
●读请求数
●写请求数
●HTTP请求数
●HTTP请求成功率
●HTTP返回码
●HTTP请求类型。
同时,对于统计数据,moira通过提供RESTfulAPI的方式,让前端进行相应数据的展示。
Moira组件提供的API包括:
●服务状态
●存储桶用量
●用户维度数据统计
●状态码统计
●流量和存储量统计
另外,Moira组件也会每天将所有的统计数据,按照计费平台中心的协议进行上报,用户可以在控制台查看账单。
五、监控&巡检
5.1CSP管控容器巡检
检查csp管控容器运行状态,running为正常,其余均为异常。
#kubectlgetpod-ntce-owide|grepcsp
检查pod中磁盘使用率,每块盘使用率不得低于80%。
#kubectlgetpod-ntce|grepcsp|awk'{print$1}'|xargs-t-I{}kubectlexec{}-ntce--df-h
5.2CSP集群状态巡检
登陆【运营端】-【产品运营】-【对象存储CSP】,会跳转到CSP集群管理页面,选择【概览】,查看集群健康状态、有无告警信息、容量使用情况,容量使用超过70%需要通知相关人员处理。
切换到【对象存储】-【存储网关】页面,查看集群网关节点健康状态。
切换到【资源管理】-【集群监控管理】页面,查看Monitor节点服务状态。
切换成【资源管理】-【存储池管理】页面,查看存储池的健康状态和容量使用情况。
切换成【资源管理】-【节点管理】页面,查看存储节点的服务状态。
切换到【监控告警】页面,查看有无告警信息,如果有需要通知相关运维人员处理。
六、组件变更&升级
6.1更换监控节点
进入TCE运营端。
依次点击【产品运营】-【对象存储(CSP)】进入CSP运营控制台。
然后点击【资源管理】-【集群监控管理】进入集群监控节点管理页面,选择需要更换的监控节点,点击【更换节点】,在弹出的页面中选择新的监控节点,然后确定,等待任务自动完成。
然后回到监控节点页面查看替换效果。
七、常见故障处理
7.1集群监控节点故障
页面显示显示集群监控节点故障。
首先登陆集群节点查看集群状态
#ceph-c/data/cos/ceph.CLUSTERMON_B.conf-s
确认集群状态目前一切正常。
再查看监控节点状态信息
#ceph-c/data/cos/ceph.CLUSTERMON_B.confmonstat
登陆到故障节点,查看cephmon进程状态
#ps-ef|grepceph
发现进程也在运行中
综合上述信息,集群一切正常,问题可能出在状态采集上,查看/ambari-agent的日志信息中是否包含相关的错误信息。
#grep"ERROR"/var/log/ambari-agent/ambari-agent.log
原来是由于ambari-agent的版本不一致导致agent异常退出,无法采集相关监控信息。
更新agent后重启agent。
#yumupdateambari-agent
#ambari-agentrestart
7.2时钟偏移
问题:
存储节点与ntpserver存在较大的时钟偏移
原因:
一般是由于该节点ntpdate没有正常运行或与ntpserver网络连接异常
处理方法:
1)ssh登陆异常节点;
2)执行systemctlstatuscrond命令,检查crond是否为active(running)状态,如果没有,执行systemctlstartcrond启动crond服务;
3)执行crontab-l命令,检查输出中是否有ntpdate
4)手动执行crontab-l中出现的ntpdate命令,执行后如果返回状态码(echo$?
)不为0,进一步检查该服务器与ntpserver的网络连接是否存在问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCE 对象 存储 CSP 手册