收藏 分销(赏)

基于SaltStack的自...部署云数据库系统设计与实现_胡颖.pdf

上传人:自信****多点 文档编号:326153 上传时间:2023-08-15 格式:PDF 页数:4 大小:2.25MB
下载 相关 举报
基于SaltStack的自...部署云数据库系统设计与实现_胡颖.pdf_第1页
第1页 / 共4页
基于SaltStack的自...部署云数据库系统设计与实现_胡颖.pdf_第2页
第2页 / 共4页
基于SaltStack的自...部署云数据库系统设计与实现_胡颖.pdf_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、2023.7电脑编程技巧与维护1概述云计算是一种基于互联网的计算模式。云计算技术的出现使企业和个人用户都能够更加方便地获取计算资源和应用程序,降低了企业和个人用户的成本,提高了资源的利用率和管理效率1。云数据库是一种基于云计算技术的数据库服务,它将数据库资源提供给用户,用户可以通过云计算技术进行访问和管理。云数据库的服务可以按需使用,无需购买和部署数据库软件和硬件,可以提高企业的数据处理效率并降低成本2。云计算和云数据库技术的发展已经成为当前计算机行业的主流趋势3。随着云计算技术的不断发展和普及,云数据库服务也越来越成为企业和个人用户的首选。目前,国内外云数据库市场规模均呈现出快速增长的态势。

2、预计到2025年,全球云数据库市场规模将达到更大规模4。基于云计算构建的云数据库,可以根据业务需求弹性扩展或缩减计算和存储资源,从而适应不同的业务需求。云数据库的高可用性,可以保证当服务器硬件发生故障或大规模断电时,数据仍然可用。云数据库灾备和备份恢复机制,也能进一步保证当发生灾难或用户误操作更改数据后,数据仍然能够恢复到用户期望的状态。尽管大多数云数据库管理和维护工作由云服务商提供,例如,软硬件的日常更新和优化补丁,让租户可以更关注与业务开发,而不是过多关注底层基础设置管理。由于云数据库规模庞大,在运维云数据库过程中,尤其是针对部署在私有云上的数据库,过多的人工干预和手工操作会造成效率低下,

3、严重的可能导致服务不可用,因此如何提高运维效率可靠性、及时发现和解决潜在的问题、降低系统不可用的风险,制定完善的自动化运维方案是必不可少的。2相关工作利用shell运维云数据库是一种比较流行的方案,通过编写shell脚本可以进行云数据库部署、数据库实例的创建和配置,并且在shell中可以结合数据库相应的dump操作把数据导出,从而实现数据库备份。在任何需要的情况下,按需对数据库数据进行恢复。当云数据部署使用后,也可以编写shell脚本设置相应的监控报警规则,从而对数据库进行监控和警报。除此之外,按照需求编写相应的shell做到数据定期删除,数据库服务日志管理与分析也是分别可以实现的。尽管she

4、ll可以实现如上所述诸多功能,但是同时也存在一些不足之处。(1)维护困难和可扩展性差。使用shell来进行云数据运维,所需要的脚本可能涉及数据库部署、数据库实例创建及数据定时备份和删除等,这些功能会导致shell脚本变得十分冗长且复杂,导致后期脚本可读性变差,难以持续维护。(2)灵活性较差。shell脚本是基于命令行执行,对于一些比较复杂的运维需求,例如资源自动伸缩等,无法做到足够的灵活。而且运维不同的数据库,存在不同的指令,因此需要针对不同数据编写和维护多个脚本,这增大了运维工作量。为了使自动化部署更方便且灵活可靠,SaltStack应运而生。SaltStack是一种基于Python语言开发

5、的自动化运维工具,用于配置管理、远程执行命令、应用程序部署、任务编排等操作6。(1)SaltStack使用一种基于消息传递的架构,称为“Salt”,该架构由一个或多个称为“Salt-Minion”的代理节点和一个被称为“Salt-Master”的中央控制节点组成,这种分布式架构使其在大型生产环境中管理和自动部署系统功能变得更加可靠,并且可以不断按需扩展以适应各大规模的基础设施和服务管作者简介:胡颖(1993),女,硕士,助理工程师,研究方向为数据应用与管理。基于 SaltStack 的自动化部署云数据库系统设计与实现胡颖(中国船舶集团第七一五研究所,杭州310000)摘要:云数据库是传统数据库

6、和云计算技术的结合,具有虚拟化数据库资源、按需使用、动态扩展和高可用性的优点。近年来,越来越多的公司和机构将数据库迁移到云上,导致对云数据库的需求越来越大。提出了一种基于 SaltStack 的自动化部署云数据库系统。主要阐述了有关自动化部署云数据库系统的功能需求及相对应的数据库表结构的实现。关键词:云计算;SaltStack 工具82DOI:10.16184/prg.2023.07.0012023.7电脑编程技巧与维护理;(2)SaltStack提供一系列模块和插件,使管理和配置大规模服务器集群变得更加容易和高效;(3)SaltStack是一种基于声明式配置的自动化工具7,不用编写繁杂且难以

7、维护的脚本,采用YAML等格式的配置文件来描述系统期望的状态,SaltStack将系统最终配置成所需要的状态。SaltStack是一个可靠、灵活、可扩展且易于使用的自动化运维工具,可以大大简化互联网管理和配置管理的工作7。下面介绍基于SaltStack的自动化部署共享存储的云数据库系统。3系统设计与实现基于SaltStack的自动化部署云数据库系统的设计主要分为物理资源池、实例创建与删除、实例的操作、实例备份与恢复4部分。物理资源池包括各种物理服务器,为云数据库系统正常运行提供计算和存储资源;在物理资源池基础上,通过自动化部署系统实现数据库实例的生命周期管理,包括创建实例、启动实例和删除实例;

8、一旦数据库实例成功创建,可以对数据库实例进行操作与管理。除此之外,为了保证数据安全性和可恢复性,需要制定合理的备份策略对数据进行备份,在必要时及时进行数据恢复。3.1物理资源池的创建在物理资源池中,云数据库基础设施由支持多种数据库(MySQL、Oracle、SQL Server等)的物理服务器组成。有必要创建一个数据库表来记录物理服务器池的有关信息,例如,存储的数据类型、本地的虚拟IP地址和多播地址。此外,还需要向用户显示物理数据库资源池的状态,例如,可用性、磁盘利用率和内存利用率。通常不同资源池上剩余资源的大小是影响数据库实例创建的主要因素,需要根据资源需求及每个资源池上剩余的资源选择资源池

9、创建数据库实例,从而合理、高效地利用物理资源。通过ServicePoolList数据库表存储数据库的物理资源池中的信息。这个数据库表的内容如图1所示。物理资源池的相关实现如下:在添加物理资源池时,平台会通过IP格式、字符串长度、组播地址等信息进行前端审核。如果审核通过,则在前端编码上述信息,并且以ASN.1格式将它们发送到C+后端;如果验证失败,则系统会提示用户验证失败。C+后端对ASN.1消息进行解码,并将网站输入的相关信息写入ServerPoolList数据库表,此时服务器池处于不可用状态。在此之后,服务器池中的服务器将被C+后端多次ping。如果C+后端能够成功ping通服务器IP地址,

10、则会将后端输出的消息按照协议缓冲区格式进行编码并发送至SaltStack端。当ping通后的消息发送至SaltStack端后,首先对协议缓冲区消息进行解码,然后调用SaltStack接口,根据IP地址对所在的服务器进行集群配置。配置集群的过程包含 创 建 虚 拟IP地 址、安 装PaceMaker、安 装Corosync和配置数据库4点。在配置集群的过程中,为了使后续创建的数据库实例能够共享存储,可通过SaltStack创建一个卷组(VG)。随着上述工作的完成,SaltStack master会接收来自Salt-Minion集群的相关信息,将接收到的信息编码为协议缓冲区格式,并将其返回C+后端

11、。C+后端将从SaltStack接收的信息写入ServerPoolList表的相应字段,并将服务器状态设置为可用。此时,已完成添加物理资源池,如果在添加的任何阶段发生错误,则数据库表中的服务器状态字段将被修改为添加失败。物理资源池的创建流程如图2所示。图1物理资源池的相关数据库表图2物理资源池的创建流程IDIDVIPServicePoolListPKNameBackupPathDbTypeDiskTotalMemoryTotalStatusDeletedBroadcastIpDeploy StatusDiskRemainedMemoryRemained开始输入IP地址等信息否校验是后端解码并保

12、存物理资源信息到数据库服务器可ping通是后端发送消息给SaltStackSaltStack解码消息并对服务器进行配置否后端更新物理资源状态信息结束832023.7电脑编程技巧与维护3.2实例创建与删除在云数据库系统中,创建和删除数据库实例是核心功能之一。尽管删除实例也是一个重要的过程,但创建实例更为复杂,并且包含更多的数据库表。因此,主要描述创建实例时所涉及的数据库表。为了提高效率,在创建实例时使用了多线程设计。每次创建实例时,都会启动一个任务线程进行处理。创建实例时,会涉及3个数据库表,即SrvConnec-tion表、DbEntityList表和ServerPoolList表。SrvCo

13、nnec-tion表是一个主要用于查询的表,该表主要包含最大连接数、内存和Iops等记录实例的参数信息。DbEntityList表是通过MaxConnection外键分配给SrvConnection表的,在确定了实例的最大连接数之后,表中的一些其他信息可以利用SrvConnection表来确定。创建实例的3个表之间的关系如图3所示。实例创建和删除的关联实现如下,创建实例时,平台会对最大连接数、实例容量和验证内容等输入信息进行前端验证。进一步判断实例名称是否合法,以及专用网络是否连接。如果无法通过验证,则系统会警告使用者进行整改;如果验证通过,则前台就对输入信息进行加密,并将其发送到C+服务端,

14、以便进行处理ASN.1消息格式。在接收到ASN.1消息后,C+服务端首先对其进行解密,根据解密后的信息对DbEntityList进行数据同步,并将其状态字段修改为禁用状态。C+服务端发送服务器池资源信息同步请求到Salt-Slack。当SaltSlack Master接收到所有Salt-Minion的状态信息后立刻返回服务器信息给C+服务端,服务端将接收到的信息更新到ServerPoolList表中。通过加权计算各服务器池当前的剩余存储和磁盘大小,选择满足需求的服务器池。如果所有服务器池都不满足要求,则返回创建错误;如果满足要求,则调用Create Instance方法从DbEntityLis

15、t数据库表中检索实例信息,并以协议缓冲区消息格式将其传递给Saltslack端。收到消息后,Saltslack将创建服务器池的一个实例,步骤如下:(1)创建一个用于安装数据库实例的共享存储LVM。在LVM中创建一个实例,并为每个实例生成一个随机密码和增量端口号。(2)将实例配置到PaceMaker,以形成具有备用功能的集群状态。(3)检测实例的状态。如果连续25次检测不可用,则创建将失败。(4)更新服务器池的状态信息。(5)SaltSlack将 结 果 返 回 到C+服 务 端,更 新DbEntityList信息,包括VIP、Username和Password,并将状态设置为可用。如果某个步骤

16、失败,则将状态设置为“创建失败”。3.3实例的操作由于网页不会自动更新实例状态,用户必须手动更新页面才能获得最新的实例状态。对实例的操作包括更新、更新状态和参数更改。参数更改包括3个数据库表,DbEntityList、DbParaList和AllParameterList。3个表之间的关系如图4所示。实例操作的实现如下:对于数据库实例,系统提供多个数据库参数预设值,并将它们持久化存储在AllPa-rameterList数据库表中。前端会对页面上的输入信息进行校验,如果用户输入的信息不合法,则前端会请求用户重新输入,直到输入正确为止,并且对正确的信息以ASN.1消息编码格式将其发送给C+服务端。

17、该消息包含实例ID、参数Uuid、参数当前值和更改的值等信息。图3创建实例的3个表之间的关系图43个表之间的关系SrvConnectionPKMaxConnectionMemoryIopsDbEntityListIdPKNameDbTypeStatusUuidPortMaxConnectionVipApplyMemorySizeServicePoolListPKIdNameIpVipBackupPathDbTypeDiskTotalMemoryTotalStatusDeletedBroadastIpDeploy StatusDiskRemainedMemoryRemainedDbEntityL

18、istPKIDNameDbTypeStatusUuidPortMaxConnectionVIPApplyMemorySizeAllParameterListPKUuidParaNameDbTypeFlagValueScopeValueDefaultDbParaListPKIDDbIdUuidValueNowValueNext842023.7电脑编程技巧与维护2王湘云,董大波,吴南健,等.基于短距离无线/有线通信的燃气监测报警系统J.电子技术应用,2013,39(7):83-86.3顾剑,李彬.基于DS18B20的多点测温监测系统设计J.电子科技,2018,31(3):61-64.4朱性伟,王子

19、荣.多深度土壤温度无线传感器网络节点设计J.传感器与微系统,2014,33(10):73-75.5刘洪涛,白旭.基于STM32的无线多点测温系统的设计J.自动化与仪器仪表,2015(9):24-25.C+服务端收到消息后,对ASN.1消息进行解码,并根据AllParameterList中的Uuid参数查询DbParaList。如果找不到,则首次更改此参数。将更改后的信息插入DbParaList,否则更新DbParaList中的记录。由于一些参数在运行时可以动态更改,而一些参数在重启数据库实例后方可生效,因此有必要查询AllParameterList中的Flag参数属性,以确定是否需要重新启动实

20、例,并以协议缓冲区消息格式编码将消息发送给SlatStack端。SlatStack端接收该消息并通过对其进行解码来决定是否对实例重新启动。如果消息解码后不需要重新启动,则SlatStack通过从数据库实例执行适当的SQL语句来更改参数;如果需要重新启动,则首先关闭实例,在检测到实例完全关闭后,更改数据库配置文件后重新启动实例。SlatStack不断轮询检测实例状态,直到实例启动,才将消息返回到C+服务端。C+服务端更改DbParaList的当前值,并将数据库实例状态设置为可用。3.4实例备份与恢复数据库表的实例备份共包含即时和定时备份两个部分。备份策略记录在BackupStraList表中,包

21、括备份时间和方法(增量备份或全量备份)。当达到指定的时间时,会自动备份实例。有关备份文件的信息记录在BackupInfoList表中,包括备份类型和备份方法,通过Type和BackupType字段进行区分。这两个数据库表的示例图如图5所示。实例备份与恢复的具体实现如下:在C+服务端解码ASN.1消息后,将备份信息写入BackupInfoList表。根据备份类型来确定它是增量备份还是全量备份。在进行增量备份时,需要确认是否能够检索到所有历史备份记录。如果无法找到完整的历史备份记录,则把当前增量备份转化为全量备份。C+服务端将备份请求根据协议缓冲区消息格式进行编码,并将其发送到SlatStack端

22、进行处理,该消息包含备份类型、备份路径、备份方法和实例名称。在SlatStack端完成协议缓冲区消息解码后,可根据备份类型执行备份,使用innobackupex工具以实例名称加上时间戳的方式对备份文件进行命名,并启动备份。在检测到备份完成后,SlatStack端返回备份状态消息到C+服务端,用户可以在前端通过BackupInfoList表的备份信息查询到备份实例的状态。4结语通过分析云数据库的发展现状和构建云数据库所需的关键技术,详细介绍了提出的基于SaltStack的自动化部署云数据库系统,可以高效地执行复杂的运维任务,减少人为操作失误的风险,保证操作的准确性和可重复性,从而减少系统发生故障

23、的可能性,提高整个系统的可用性和可靠性。随着运维规模和复杂性的增加,自动化运维系统如何进一步提升执行性能和其资源利用率,是未来进一步需要研究的方向之一。参考文献1唐浩.云计算技术在大规模数据存储中的应用分析研究J.中国新通信,2022,24(20):86-88.2袁芳芳.基于云计算技术的计算机网络安全存储技术研究J.电子技术与软件工程,2022(18):9-12.3高瑞玮,叶青,徐小玲,等.基于多线程通信机制的云数据库查询优化方法J.无线电工程,2023,53(2):271-280.4杨敏.利用云数据库技术建设皮肤病患者信息管理系统J.中医药管理杂志,2021,29(15):194-195.5

24、李涛.大数据背景下数据库网络安全的防范方法J.电子技术与软件工程,2021(11):251-253.6ZADKA M.Salt Stack J.DevOps in Python:Infras-tructure as Python,2019:121-137.7殷献勇.基于SaltStack的vCPE云端服务部署系统的设计与实现D.北京:北京邮电大学,2019.图5BackupStraList和BackupInfoList数据库BackupInfoListPKIDDbTypeBackupTypeRouteBackupFileDbldTypeBackupStraListPKIDDbIdDayTimeBackupTypeStatus(上接第77页)85

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 自然科学论文

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服