版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 移动云数据库自动化运维平台建设之路目 录 TOC o 1-3 h z u HYPERLINK l _Toc533534113 一、前言 PAGEREF _Toc533534113 h 3 HYPERLINK l _Toc533534114 二、自动化运维演进过程 PAGEREF _Toc533534114 h 3 HYPERLINK l _Toc533534115 三、自动化运维平台 PAGEREF _Toc533534115 h 12 HYPERLINK l _Toc533534116 四、总结和建议 PAGEREF _Toc533534116 h 25一、前言作为云服务供应商,“移动云”
2、发展到现在大约有15万的在网客户,提供云主机、云存储、云网络、云安全、RDS等大约10种产品。随着“移动云”业务的不断增长以及全国各地资源池的陆续上线,我们管理的数据库实例较两年前翻了一倍,但DBA人数基本没有变化,一方面是因为“移动云”标准化完成的比较早,另一方面要归功于自动化运维工作的开展,在不到两年的时间内,我们从数据库的标准化、工具化过渡到了自动化和平台化,未来的目标是希望能进一步做到智能化和服务化。本文就将针对我们DBA团队完成的“EcloudDB数据库管理平台”的构建和开发思路做一些简单介绍,主要分享前期数据库运维遇到的瓶颈,标准化构建和自动化平台“模块化”、”轻量化“搭建思路方面
3、的内容。二、自动化运维演进过程首先,平台化的过程并不是一蹴而就的。在业务上线初期,数据库管理员每天工作强度都很大,因为很多系统是刚刚上线交维的,变更操作比较频繁,经常会遇到一些突发故障需要处理。即便是简单的更改数据库参数配置的工作,也因为MySQL实例数较多,又涉及不同的业务系统,要耗费较多的时间和精力。在这样的情况下,我们开始考虑将重复的工作简单化,并且把我们的数据库管理人员解放出来,做一些优化类的工作,从而使系统更加稳定。早期我们主要从标准化、工具化以及脚本化三个方面探索自动化运维的可行性,并储备了一些运维研发技术,像Python语言和一些Web开发技术,可以说是平台化的前身。1、标准化首
4、先,标准化是自动化的重要前提。“移动云”的标准化制定的比较早,并且从OS标准化到DB层的标准化都有着统一的要求。OS层标准化主要包括:操作系统版本、文件系统类型、磁盘调度算法(Deadline)、RAID、IPSAN挂载、基础依赖包、NTP服务、SELinux、NUMA特性、ulimit、vm.swappiness、防火墙和网络策略等。数据库标准化目录结构:程序目录、配置文件目录、数据目录、日志目录、PID/Socket、脚本目录、工具目录、软连接;用户权限:bcrdb:bcrdb 775;参数配置:规定了f文件全部参数配置、除个别参数(硬件相关、主机IP)外,其余保持一致;账号权限:统一DB
5、账号权限要求:最小权限原则、限定来源IP范围、加密措施等;密码策略:安装密码验证插件,设置强密码规则;日志要求:安装审计插件,开启审计日志、错误日志、慢日志、binlog和备份日志;线程池:线程池参数设置需考虑服务器硬件配置和业务系统并发情况;常用工具:安装percona-xtrabackup 2.2.12备份工具、安装percona-toolkit 2.2.16工具集用于日志切分、慢日志分析、在线改表、数据一致性校验等功能;计划任务:在bcrdb用户下创建计划任务,用于定期进行数据备份及校验、调用Zabbix监控脚本等。其中,目录结构标准化的好处是,无论谁来处理问题,都能根据标准化路径到达目
6、的地,找到自己所需的内容,也使得我们可以通过编写脚本实现对数据库的批量操作。标准化的好处有很多,但在未做到自动化部署之前,MySQL严格要做到标准化是比较困难的。早期我们投入了很多精力做“标准化部署文档”,但效果并不好。因为早期部署阶段由工程人员实施,而工程人员的流动性比较大,导致对“标准“的掌握并不到位,部署结果总是跟标准化有偏差,经常要进行标准化整改,使部署周期变的很长。后来我们总结经验,从“移动云”五期部署开始,除了提供“标准化部署文档”外,还提供了标准部署工具包和Ansible playbook文件,通过Ansible工具自动推送部署。到现在数据库的部署安装,慢慢用自动化的方式来实施了
7、,进一步保证了标准化的质量。自动标准化部署过程Step 1:根据数据库的部署规划和配置要求分配物理机或创建虚拟机。Step 2:部署Ansible工具。Step 3:OS初始化,结合数据库部署要求。操作系统版本、文件系统、磁盘调度算法Deadline、RAID10、挂载点、基础依赖包、NTP服务、SELinux、NUMA特性、ulimit、vm.swappiness、防火墙端(服务和节点通信同步复制端口)、网络策略等。Step 4:上传Ansible剧本包、标准bcrdb部署包。采用Ansible roles的方式编写playbook,实现数据库的批量推送安装;上传ansible剧本包play
8、book.tar.gz至Ansible服务器的/apps/components/roles/目录下并解压;上传bcrdb.tar.gz程序包至Ansible服务器/apps/components/roles/bcrdb/files目录并解压;修改文件用户、组及权限。Step 5:制定初始化参数(编写Inventory文件)。初始化参数:集群节点参数:node_address、node_name、cluster_address业务和硬件配置相关参数:max_connection、innodb_buffer_pool_size、wait_timeout打开hosts.sample中数据库部署Inv
9、entory文件,替换本次部署安装的实际参数,生成本次部署安装用的Inventory文件:vim/components/hosts。Step 6:执行推送部署选择playbooks目录下对应的数据库playbook文件,使用ansible playbook命令执行安装ansible playbook i host playbooks/bcrdb.yml2、工具化和脚本化有了标准化作为基础,我们开始慢慢引入了一些开源工具,有针对性的解决一些运维中的问题。这个阶段引入的工具主要有Zabbix、ELK、Ansible、Percona tookit工具集、Percona xtrabackup备份工具。
10、其中,Zabbix的引入解决了数据库的监控问题,早期我们运维是非常依赖Zabbix的。它的好处是监控项很全,并且有告警发生会第一时间通知到DBA。Zabbix足够的轻量化,比较容易部署和配置,在运维起步阶段提供的帮助是非常大的。ELK可以用于日志采集和分析。我们同步了现网数据库的审计日志、慢日志和错误日志,通过ELK可以按条件对日志进行筛选和查询,对于故障快速定位和故障原因追溯有很大帮助。Ansible主要用于数据库批量标准化部署。PT工具集主要用来进行日志切分、慢日志分析、在线改表和数据一致性校验等功能。Xtrabackup用于数据库的在线备份,是最常用的工具之一。同时DBA也不断开发和自研
11、一些自动化脚本,例如:自动化巡检脚本,用于定期巡检并按模板生成巡检报告;备份和备份有效性校验的脚本,用于定期执行备份,并对备份文件的有效性进行测试验证;另外,还有数据一致性校验脚本、标准化核查脚本等等,用于辅助DBA日常工作,减轻一些重复性的劳动。3、平台化目标有了运维工具和脚本,解决了我们早期工作中的一些难点,但是工具解决的大部分是如何发现问题,却很少涉及如何解决问题,而且工具之间的壁垒也使得整个运维体系显得零零散散。另外,大多时候运维人员还是要通过堡垒机ssh登录到数据库主机,再经手工执行命令或脚本进行运维操作。因此,一定程度上存在操作不便、效率低、重复工作、安全性较差等问题。总的来说,工
12、具和脚本运维,虽然缓解了一部分的工作压力,但是没有一个体系化的构建。所以在这样的背景下,我们也开始寻求更高阶的运维方式运维平台的建设 。平台化的目标是整合已有自动化运维工具和手段,将复杂操作、重复操作程序化,并收口登录数据库主机的操作行为,提高操作安全性,增加管理和审核机制,提升运维效率,减少人为故障,解放运维人员。三、自动化运维平台1、构建思路在平台的构建模式上:首先,平台实现的功能要以实用为主,并且可以满足快速搭建这两个特点。开发过程中要避免过度设计,后续再以快速迭代的方式对平台进行不断完善。其次是平台的扩展性要好,为了尽量避免耦合采用前、后端分离的方式。因为平台不仅面向DBA,还要面向一
13、部分系统运维人员和研发人员,因此需要动态菜单。不同权限,不同业务的人看到的菜单是不一样的。平台还要记录操作日志,登录人员做了哪些操作这些信息还是需要格外重视的,起到一个安全审计的作用。最后,在交互实现方面,要做到可视化、自动化和自助化。通过使用直观的用户界面,使DBA、开发人员和管理人员能够清晰的看到数据库的总体运行情况,帮助DBA更轻松地解决复杂的数据库问题。2、技术栈技术栈的选型主要考虑满足平台可扩展性和快速搭建这两个特点。平台后端采用的是Django框架,前端采用Vue.JS,同时利用了缓存Redis和MySQL作为数据存储,整套系统采用的技术栈较简单,实现的功能对于目前来说是比较实用的
14、。其中:vue属于前端的架构,平台采用前后端分离的方式,并没有采用Django的Jinja2,主要是考虑到未来后端框架的扩展性以及伸缩性。后台和前端的交互,只通过标准的restful接口进行数据传输。后台采用成熟的Django架构,能够快速搭建一个后台网站。Redis作为信息缓存器,主要存储一些前端Dashboard以及数据库的基本信息,加快前端访问速度。Django-Celery模块用于异步任务,由于一些数据库操作(备份、任务调度等)执行的时间较长,没有办法立即返回结果,因此需要采用异步形式完成操作。Ansible用于一些批量的数据库推送、搭建以及批量的数据库配置。数据连接采用pymysql
15、模块,能够实现不同种类数据库连接。3、平台架构平台的架构体系设计为三层:首先是交互层,主要指用户对平台的使用体验,在一定层次上对用户的操作行为有一定限制性。主要作用是使用户可以通过浏览器对平台进行操作处理,包括web UI层及接口层。中间是服务层,主要任务是将交互层用户提交过来的请求及参数,通过相应的API接口连接到后台,后台控制器通过各自API和路由列表匹配到相对应的view,然后进行一系列的逻辑处理。这一系列的逻辑处理我们把它归类为服务层处理。底层属于资源层,主要包括:数据服务,为服务层提供数据管理、查询和数据逻辑处理、数据读、存取等服务;还包括系统层(主要指主机OS层)为上层提供基本的运
16、行环境保障、基础组件支撑、和本地文件路径等服务;另外还有一些其他资源,为上层数据逻辑处理提供公共组件和日志输出等服务。平台的访问流程如下:首先,用户通过浏览器访问前端页面,前端页面将请求发送到后台API,后台经过中间件,通过用户认证后跳转至主页。根据平台用户权限不同,会返回相应的页面给用户;然后是用户进行自助操作,平台根据用户自助操作选项找到对应的view进行处理,view根据请求是否耗时,判断要不要采用异步任务;另外,view还需要根据请求查看是否牵扯系统层的操作,如果牵扯则需要调用Ansible接口工具,对远程主机进行操作。4、平台功能平台是分两个阶段进行开发,一阶段主要实现的功能有:In
17、dex展示页面;平台用户管理:管理员设置、访问用户设置;备份管理:备份执行、备份恢复、历史备份、备份策略;数据库账号权限管理:DB账号权限概览、账号申请、账号审批、账号管理;实例管理:一键标准化部署、实例管理,创建数据库、表、存储过程、触发器、事件、视图;巡检管理:一键巡检、常规巡检项快速排查、自定义巡检项;SQL审核。平台Index页面用户认证成功后会跳转到Index页面,主页最上面可以展示:各资源池MySQL实例总体运行情况,在这可以直观看到是否有节点存在异常。下面可以显示不同资源池、不同业务系统后端数据库的健康度、性能指标(TPS、QPS、请求队列长度、活跃线程数等情况)以及各资源池告警
18、信息展示。有了健康度信息,DBA就可以直观的掌握生产环境的运行情况,并且在此基础上,判断数据库的运行状态,对可能出现的问题进行预测:另外由于数据备份的重要性,我们也把备份监控放在了首页上进行展示,页上可以看到备份的执行时间、执行情况、备份校验和备份文件大小等信息。除了以上主页,还可以展示平台用户的访问和操作记录。用户管理管理员可以通过用户管理模块对平台已注册账号的相关权限进行修改。普通用户可以通过如下步骤申请开通数据库账号:首先是用户填写HTML表单并提交,此时状态将更新为等待管理员审批,当管理员登录平台系统会提示有待办,点开后可进行处理,如果管理员审批通过,系统会自动创建账号,并通知用户创建
19、完成。管理员待办页面普通用户是看不到的,另外,管理员还可以对现有DB账号的权限进行修改,也可以创建和删除账号。备份管理平台侧可以提供备份执行和备份恢复的功能,这里的备份功能,更多是用于变更前或故障发生时的临时备份,并不是日常备份。“移动云”的日常备份是利用xtrabackup工具在数据库本地做物理备份,然后定期拉取到测试机上进行恢复校验,每次恢复测试并不是全量,而是抽样对核心的数据库实例做测试,最后通过日志记录测试结果,也会定期使用NBU进行异地备份,以上都是通过计划任务和备份脚本实现的。平台也提供了备份恢复的功能,可以指定某个时间点的备份文件对现网数据进行恢复。平台也提供了在测试环境进行数据
20、恢复的接口,可以将个别业务表的历史数据恢复并导出,用于数据比对和故障排查。平台侧可以对备份策略进行设置,对日常备份的执行时间、保留周期、备份方式等进行设置或修改,并且提供了对每套数据库进行策略修改的接口,例如:可以设置OP数据库每周日凌晨两点执行全量备份,周一到周六每天凌晨两点执行增量备份,也可以设置备份文件的保留周期为一个月或两周。巡检管理平台设计了一键巡检功能,用于数据库的例行巡检。可以选择多台数据库批量执行巡检,巡检结果可以在Web页面上查看,DBA可以直接填写巡检结论。针对每套数据库会生成一份标准格式的巡检报告,报告可以从Web页面直接下载,这项功能为DBA减少了很多重复工作。巡检的项
21、目一共有40多项,涵盖了主机硬件、操作系统和数据库三个层面。包括:CPU和内存利用率、磁盘空间剩余情况、磁盘读写情况、平均TPS/QPS、业务表主键、数据量大小和高水位等情况以及业务压力、慢查询和备份等情况。另外,平台也提供了快速巡检功能,用于对一些常规项巡检进行快速排查。常规巡检项主要是DBA根据以往故障处理的经验总结下来的一些常用的排查项目,例如:processlist当前连接情况核查、数据库阻塞的情况核查、锁争用的检查以及一些临时表和查询缓存等情况的检查。对于DBA来说,一般出问题或者接到告警,通常都要登录到服务器通过手工执行命令排查故障。其实这个诊断过程完全可以被自动化掉,日常处理问题的核心原则是“快”,所以平台必须能提供这样的能力,出问题时尽量减少 DBA 思考的时间,平台可以将 DBA 常用的排查命令集都整合到一起。DBA 只需要进行简单操作,系统就会自动执行所有命令,如:SQL执行计划分析、慢查询分析、锁分析、processlist快照查看等常见操作。虽然这些功能看似简单但是却非常实用,可以提高DBA故障定位的效率。作为对常规巡检项的补充,平台也提供了自定义巡检项的功能。并且执行SQL语句的时候,结合了语义审核和转译的功能,保证DDL及DML的正确使用,不会造成线上事故。SQL审核为了避免性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机构研究报告-Brand KPIs for laundry detergent Ace in Mexico-外文版培训课件
- 小麦蚜虫化学防治安全使用指引
- 术后恢复营养饮食方案
- 大棚番茄定植技术操作规范
- 企业双重预防机制建设指引
- 茄果类蔬菜穴盘育苗生产标准
- 客户服务合同到期续签操作指引
- 手法复位治疗安全指引
- 人员密集场所疏散演练方案
- 应急演练评估总结管理规定
- 2026长江财产保险股份有限公司武汉分公司综合部(副)经理招聘1人笔试备考题库及答案解析
- 2026年4月自考10993工程数学(线性代数、概率论与数理统计)试题
- GB/Z 177.2-2026人工智能终端智能化分级第2部分:总体要求
- 2026年广东东莞市初二学业水平地理生物会考试题题库(答案+解析)
- 中远海运集团2026招聘笔试
- 新生儿呼吸窘迫综合征应急预案演练脚本
- 2026中级消防设施操作员《基础知识》记忆口诀
- 物流配送司机奖惩制度
- GB/T 3920-2008纺织品色牢度试验耐摩擦色牢度
- GB/T 19977-2005纺织品拒油性抗碳氢化合物试验
- GB 29540-2013溴化锂吸收式冷水机组能效限定值及能效等级
评论
0/150
提交评论