一种基于ansible的自动化部署业务系统高可用集群的方法与流程

文档序号:24249428发布日期:2021-03-12 13:27阅读:94来源:国知局
一种基于ansible的自动化部署业务系统高可用集群的方法与流程

本发明涉及系统部署领域,尤其涉及一种基于ansible的自动化部署业务系统高可用集群的方法。



背景技术:

系统部署是指在符合要求的操作系统上部署业务系统。部署过程中需要上传业务代码、修改配置文件、依次启动相关服务等步骤,复杂的系统在部署时需要相互依赖的步骤很多,误操作一步都会导致整体部署的失败。自动化部署可以通过编写脚本或者web平台实现,减少人为干预的步骤,提高系统部署的准确率和工作效率。

系统高可用指的是系统在运行期间内稳定运行的时间占总时间的比例。随着生活和工作信息化的普及,信息系统飞速发展,人们对信息系统的稳定性要求越来越高,不稳定的系统影响用户体验和工作效率,也可能导致信息数据准确性降低。

ansible是一种轻量级的系统运维工具,能够远程发送操作指令或者传送文件控制操作系统。ansible仅需要在一台服务器上部署服务端,即可操控集群中所有的服务器,受控制的其他服务器节点只需要支持ssh协议即可。ansible工具支持编写剧本文件,按照剧本中的执行步骤,同时在所有受控服务器节点顺序执行命令。每一步骤执行完成返回操作日志到服务器主节点,用户可根据返回的结果成功已否,判断是否继续执行或者停止。

目前搭建业务系统的集群模式,依旧采用手动部署或者编写脚本的方式进行部署。手动部署流程复杂,人为干预程度很高,可能部分细节误操作导致部署失败。编写脚本的方式虽然能够降低人为干预的程度,但是需要专业的it技术人员进行部署,对客户不够友好。现有的集群业务系统部署需要先在集群中部署主节点,然后再去其他每个服务器节点上部署系统加入主节点。如果集群服务器数量较大,会产生很大工作量,并且逐台部署增加了部署误操作导致失败的概率。

现有的业务系统集群中每个服务器设置一个业务ip地址,对外提供所有服务。中大型业务系统一般提供多种类型的服务,包括业务管理、流程审批管理、访问安全管理、审计管理、用户管理等功能。如果只有一个业务ip提供多种服务,一个服务出现问题可能影响其他的服务,进而影响服务整体的可用性。比如:某种业务服务由于突然网络io增大,使业务ip对应的网卡带宽打满,导致其他的业务服务此时无法使用。

一般的业务系统集群不进行基础监控和业务监控,或者通过外部监控系统进行监控管理。系统集群如果缺少监控,在出现故障问题时,运维人员无法第一时间发现问题,导致问题解决时间过长,严重影响用户使用。同时利用监控系统可以提前发现潜在问题,提前处理解决,能避免故障的发生。对于非it专业技术公司,开发与维护外部监控系统费用和学习成本较高。外部监控系统需要单独搭建服务器,并且需要专业的运维人员维护。



技术实现要素:

本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种基于ansible的自动化部署业务系统高可用集群的方法,提升部署成功率,利于运维人员维护,提高工作效率。

为解决上述技术问题,本发明提出的技术方案为:

一种基于ansible的自动化部署业务系统高可用集群的方法,包括以下步骤:

s1)设置集群所有服务器在一个局域网内,设置每台服务器的部署ip,使得后端的服务器分别通过部署ip访问前端的部署页面,所述服务器包括4张不同类型的网卡,包括监控网卡、服务网卡、存储网卡和管理网卡;

s2)在前端页面输入配置信息并生成页面部署请求,所述配置信息包括待部署的服务器节点列表、服务器防火墙配置规则、系统集群的虚拟地址、监控模块配置以及管理员信息,所述服务器节点列表中,每个服务器分别对应四种类型的ip地址信息,每种类型的ip地址分别对应同一服务器中的每张网卡;

s3)在后端选取一台服务器作为部署主节点,根据指定的服务器列表和配置信息中的对应信息生成ansible剧本,部署主节点获取页面部署请求并根据配置信息执行ansible剧本的部署步骤,同时通过部署ip使用ssh协议向集群中的其他服务器发送相同步骤的执行命令,ansible剧本的部署步骤具体包括:

s31)配置网络和主机名,包括:使用服务器部署ip匹配服务器节点列表得到对应的主机名和四种类型的ip地址信息,修改服务器的主机名和网络的配置文件,对服务器的四张网卡分别配置对应类型的ip地址,根据服务器防火墙配置规则针对四种类型的ip地址分别开放对应的端口,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s32)配置和启动etcd分布式数据库集群,包括:生成服务器对应的节点名、httpapi服务端口、节点间通信端口、数据存储目录和日志目录,并以此进行节点配置,生成服务器对应的认证token,以此和服务器节点列表进行集群配置,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s33)配置和启动虚拟地址和时间同步服务,包括:生成服务器对应的启动端口和服务锁名称,将服务器节点的服务ip作为etcd地址,根据启动端口、etcd地址和服务锁名称配置虚拟地址服务并启动,监听etcd服务直到获取etcd数据库中的虚拟地址服务锁,解析虚拟地址服务锁存储的虚拟地址,将虚拟地址所在的网段设置到对应网段的网卡上;根据启动端口、服务器节点列表、etcd地址和服务锁名称配置时间同步服务并启动,监听etcd服务直到获取etcd数据库中的时间同步服务锁,作为基准服务器通过ssh协议将本机的时间同步发送到集群其他服务器上,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s34)配置和启动监控服务,包括:根据监控模块配置中服务器的对应信息确定服务器的监控服务配置项,若存在配置失败的服务器,回滚到系统初始状态,返回错误信息进行页面提示;

s35)设置管理员信息,包括:将管理员信息写入etcd数据库,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示。

进一步的,步骤s2)中,发送页面部署请求之前还包括确认配置信息的步骤,具体包括:

a1)生成预览页面,将配置信息显示在预览页面中,若信息无误,生成配置信息并发送页面部署请求给部署主节点,否则进入下一步;

a2)关闭预览页面并在部署页面输入正确配置信息替换错误配置信息,返回步骤a1)。

进一步的,步骤s2)具体包括以下步骤:

s21)填写待部署的服务器节点列表,所述服务器节点列表包括每个服务器节点对应的主机名和四种类型的ip地址信息,所述ip地址信息包括服务ip、存储ip、管理ip和监控ip,所述服务ip与部署ip相同,设置服务器集群节点之间ssh免密登录,配置各个服务器节点主机名和ip的映射关系;

s22)填写服务器防火墙配置信息,所述防火墙配置包括允许访问的端口号、访问协议以及访问端口的源ip和目的ip;

s23)设置系统集群的虚拟地址,将虚拟地址信息存储在etcd数据库中并设置服务锁租约;

s24)配置监控模块,填写查询监控数据的url和用于接收报警邮件的邮箱地址,设置系统指标峰值和使用率的报警阈值;

s25)填写管理员信息,所述管理员信息包括管理员账号、密码以及管理员网盾。

进一步的,步骤s21)中,所述服务器节点列表使用etcd数据库维护。

进一步的,步骤s32)还包括:所述etcd分布式数据库集群使用systemd系统服务托管启动,etcd集群启动后,查询集群状态是否正常可用,若不可用,则服务器配置失败。

与现有技术相比,本发明的优点在于:

一、业务系统集群部署通过web平台流程化步骤进行配置。避免人为手动部署可能的误操作干预,以及脚本部署对客户it技术的要求。提升部署成功率,降低学习成本,提高工作效率。

二、通过ansible工具实现集群部署仅在一个服务器节点的web页面上填写部署信息,即可完成整个集群的部署。减少所有服务器节点均填写部署信息的繁琐流程,节省部署时间并且降低意外出错的概率。

三、使用业务系统集群的所有服务器搭建etcd分布式数据库集群,并将业务系统集群的配置信息存储在etcd数据库。混合部署解决了业务系统集群状态无法检测的问题,通过etcd集群状态可以间接检测业务系统集群的状态是否正常。同时避免调用外部存储服务器,减少访问链路出错的可能。

四、业务系统集群中每台服务器设置多种类型的ip地址,针对不同的对外服务使用不同的ip。降低多种服务网络接口的耦合性,避免因为单个服务异常,导致服务器上所有服务网络异常。

五、系统部署过程中自动配置集群内部的报警模块,无需依赖集群外部报警系统。很多非专业it技术公司,开发独立的监控系统难度较大,集群自带的监控模块完全能够满足监控需求。同时集群内部的监控模块也降低了业务系统的整体复杂度,更利于运维人员维护。

六、系统部署如果出现异常的情况部署失败,将会进行自动回滚。由于部署前的环境准备不足或者网络不稳定,可能导致部署失败。失败后的回滚可以使系统回到系统部署前的初始状态,幂等性既保证了系统能够重复部署不受上次失败影响,同时也避免运维人员需要去系统后台手动进行回滚操作,提升工作效率。

附图说明

图1为本发明实施例的部署页面输入配置信息各步骤的示意图。

图2为本发明实施例的部署主节点执行页面部署请求的各步骤示意图。

具体实施方式

以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。

本发明提出一种基于ansible的自动化部署业务系统高可用集群的方法,包括以下步骤:

s1)设置集群所有服务器在一个局域网内,设置每台服务器的部署ip,使得后端的服务器分别通过部署ip访问前端的部署页面,所述服务器包括4张不同类型的网卡,包括监控网卡、服务网卡、存储网卡和管理网卡;

s2)在前端页面输入配置信息并生成页面部署请求,所述配置信息包括待部署的服务器节点列表、服务器防火墙配置信息、系统集群的虚拟地址、监控模块配置以及管理员信息,所述服务器节点列表中,每个服务器分别对应四种类型的ip地址信息,每种类型的ip地址分别对应同一服务器中的每张网卡,具体步骤包括:

s21)填写待部署的服务器节点列表,所述服务器节点列表包括每个服务器节点对应的主机名和四种类型的ip地址信息,所述ip地址信息包括服务ip、存储ip、管理ip和监控ip,所述服务ip与部署ip相同,设置服务器集群节点之间ssh免密登录,配置各个服务器节点主机名和ip的映射关系;

s22)填写服务器防火墙配置信息,所述防火墙配置包括允许访问的端口号、访问协议以及访问端口的来源ip和目的ip;

s23)设置系统集群的虚拟地址,将虚拟地址信息存储在etcd数据库中并设置服务锁租约;

s24)配置监控模块,填写查询监控数据的url和用于接收报警邮件的邮箱地址,设置系统指标峰值和使用率的报警阈值;

s25)填写管理员信息,所述管理员信息包括管理员账号、密码以及管理员网盾;

s3)在后端选取一台服务器作为部署主节点,根据指定的服务器列表和配置信息中的对应信息生成ansible剧本,部署主节点获取页面部署请求并根据配置信息执行ansible剧本的部署步骤,同时通过部署ip使用ssh协议向集群中的其他服务器发送相同步骤的执行命令,ansible剧本的部署步骤具体包括:

s31)配置网络和主机名,包括:使用服务器部署ip匹配服务器节点列表得到对应的主机名和四种类型的ip地址信息,修改服务器的主机名和网络的配置文件,对服务器的四张网卡分别配置对应类型的ip地址,根据服务器防火墙配置信息针对四种类型的ip地址分别开放对应的端口,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s32)配置和启动etcd分布式数据库集群,包括:生成服务器对应的节点名、httpapi服务端口、节点间通信端口、数据存储目录和日志目录,并以此进行节点配置,生成服务器对应的认证token,以此和服务器节点列表进行集群配置,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s33)配置和启动虚拟地址和时间同步服务,包括:生成服务器对应的启动端口和服务锁名称,将服务器节点的服务ip作为etcd地址,根据启动端口、etcd地址和服务锁名称配置虚拟地址服务并启动,监听etcd服务直到获取etcd数据库中的虚拟地址服务锁,解析虚拟地址服务锁存储的虚拟地址,将虚拟地址所在的网段设置到对应网段的网卡上;根据启动端口、服务器节点列表、etcd地址和服务锁名称配置时间同步服务并启动,监听etcd服务直到获取etcd数据库中的时间同步服务锁,作为基准服务器通过ssh协议将本机的时间同步发送到集群其他服务器上,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s34)配置和启动监控服务,包括:根据监控模块配置中服务器的对应信息确定服务器的监控服务配置项,若存在配置失败的服务器,回滚到系统初始状态,返回错误信息进行页面提示;

s35)设置管理员信息,包括:将管理员信息写入etcd数据库,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示。

通过上述步骤,本发明将前端配置和后端部署的过程进行分离,用户只需要进行页面部署,同时部署步骤之间的逻辑全部在后端处理,避免前端页面逻辑过于复杂和冗余,提升客户的用户体验。

步骤s2)中,发送页面部署请求之前还包括确认配置信息的步骤,具体包括:

a1)生成预览页面,将配置信息显示在预览页面中,若信息无误,生成配置信息并发送页面部署请求给部署主节点,否则进入下一步;

a2)关闭预览页面并在部署页面输入正确配置信息替换错误配置信息,返回步骤a1)。

在页面部署完成后进行预览,显示填写的所有配置信息,方便用户检查整体部署配置信息。

步骤s21)中,所述服务器节点列表使用etcd数据库维护。

步骤s32)还包括:所述etcd分布式数据库集群使用systemd系统服务托管启动,etcd集群启动后,查询集群状态是否正常可用,若不可用,则服务器配置失败。

本实施例中的系统集群部署方式采用页面部署的形式,页面部署前需要进行基本的环境准备。集群服务器台数要求为3台以上的奇数,方便进行集群主节点的自动选举。每台服务器需要安装四张网卡,运维人员提前连接网线,保证集群所有服务器在一个局域网内。然后将所有服务器开机,等待操作系统和内置的业务系统初始化完成。每台服务器需要在部署前预先设置部署ip,部署主节点远程操控其他服务器即使用此部署ip,要求保证部署ip之间可以相互访问。最后确认使用部署ip可以访问部署页面,即完成所有部署前环境准备。

如图1所示,本实施例中的步骤s2)为面向用户的页面部署,具体步骤包括:

s21)填写待部署的服务器节点列表:每个服务器节点需要填写主机名和四种类型的ip地址信息,每台服务器安装的四张网卡需要对应配置四种类型ip,其中服务ip配置成与部署ip相同,部署完成即不存在部署ip,详细步骤包括:每台服务器配置四种类型网络地址,包括服务ip、存储ip、管理ip和监控ip,设置服务器集群节点之间ssh免密登录,配置各个节点主机名和ip的映射关系,方便集群节点间相互访问。服务器节点列表信息使用etcd数据库维护;

s22)填写服务器防火墙配置规则:每条防火墙配置包括ip地址类型、访问协议、源ip、目的ip和端口号,表示该端口对应的服务,只允许此类ip访问,因此不同的服务只允许通过指定ip类型访问,不允许跨ip类型访问服务,详细步骤包括:配置操作系统的防火墙服务,只开放部分端口和访问协议对外使用,限制访问端口的源ip和目的ip。通过防火墙服务可以提升集群系统的访问安全等级,保护集群服务安全;

s23)设置系统集群的虚拟地址(vip):包括服务vip和存储vip,vip能够提升集群服务对外的稳定性,服务vip负责对外提供web服务,客户使用业务系统即访问此地址,存储vip负责对外提供数据存储服务,集群中所有节点访问数据库均使用此ip,详细步骤包括:访问集群服务需使用vip,当集群中节点故障时,vip会自动切换到正常的服务器节点上继续提供服务,vip信息存储在etcd数据库中并设置租约,集群内服务器同一时间只能有一台服务器获取租约,有权限在该节点的同一网段的网卡上设置vip;

s24)填写监控模块的配置:支持选择多种类型基础监控,包括cpu、内存、磁盘、网络io等,同时支持业务监控,需要用户填写查询业务系统监控数据的url,要求url为免验证的get请求,详细步骤包括:监控配置包括基础监控和业务监控两个模块。基础监控指的是操作系统级别的监控,包括系统指标峰值和使用率的监控,部署页面支持配置报警阈值,超过阈值自动发动报警邮件,业务监控是对业务系统的业务指标进行监控,根据不同的业务系统,可选择设置不同的业务指标监控,比如:监控客服电话的接入数量变化情况,方便业务人员对客服人员的排班调度,业务监控通过用户填写的url查询监控数据,并支持在页面填写监控项报警配置;

s25)设置管理员信息:填写管理员账号、密码以及绑定管理员网盾,部署流程最后的页面为预览页面,显示填写的所有配置信息,方便用户检查整体部署配置信息,最后统一发送填写的信息进行部署,可以将部署步骤之间的逻辑全部放到服务后端处理,避免前端页面逻辑过于复杂和冗余,提升客户的用户体验,详细步骤包括:管理员需要进行用户管理和系统访问控制,需要设置很高的安全登录策略。本方法的管理员登录采用静态密码和动态密码的方式。静态密码设置时需要二次确认,动态密码需要在访问客户端电脑上插入和绑定网盾设备。

如图2所示,本实施例的步骤s3)中后端所有服务器所执行的ansible剧本的部署步骤具体包括:

s31)配置网络和主机名,包括:使用服务器部署ip匹配服务器节点列表得到对应的主机名和四种类型的ip地址信息,修改服务器的主机名和网络的配置文件,对服务器的四张网卡分别配置对应类型的ip地址,根据服务器防火墙配置规则针对四种类型的ip地址分别开放对应的端口,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s32)配置和启动etcd分布式数据库集群:etcd服务的配置可以参考etcd官方文档,本发明使用的配置项(括号内表示实际配置项名称)包括:根据服务器对应的节点名(etcd_name)、httpapi服务端口(etcd_listen_client_urls)、节点间通信端口(etcd_listen_peer_urls)、数据存储目录(etcd_data_dir)和日志目录(etcd_out_file)进行节点配置,根据服务器节点列表(etcd_initial_cluster)和认证token(etcd_initial_cluster_token)进行集群配置。服务器节点列表配置项根据页面填写的服务器列表生成,其余的配置项在后端服务的代码中配置并由后端服务自动生成,写入配置文件。etcd服务使用systemd系统服务托管启动,启动前需要在systemd目录下预先编写etcd.service启动文件,文件内指定etcd可执行文件地址和配置文件地址。etcd服务需要在每个服务器节点上启动,etcd集群启动后,需要查询集群状态是否正常可用,不可用则配置失败,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s33)配置和启动虚拟地址和时间同步服务。虚拟地址服务配置项包括:启动端口、etcd地址和服务锁名称。etcd地址配置为当前服务器节点的服务ip,启动端口和服务锁名称在后端服务的代码中配置并由后端服务自动生成,写入配置文件。虚拟地址服务使用systemd系统服务托管启动,启动时获取etcd数据库中预先存储好的服务锁,集群中只有一台服务器可以获取成功,获取服务锁成功的服务器,拿到服务锁下面存储的虚拟地址,根据虚拟地址所在的网段设置到对应网段的网卡上。集群中未获得服务锁的服务器,不会启动虚拟地址服务,但会一直监听etcd服务,等待锁释放。时间同步服务的配置项包括:启动端口、服务器节点列表、etcd地址和服务锁名称。服务器节点列表配置项根据页面填写的服务器列表生成,etcd地址配置为当前服务器节点的服务ip,启动端口和服务锁名称在后端服务的代码中配置并由后端服务自动生成,写入配置文件。时间同步服务同样使用systemd系统服务托管启动,启动时获取etcd数据库中预先存储好的服务锁(虚拟地址和时间同步服务使用不同的服务锁),取得服务锁的服务器作为时间基准服务器,通过ssh协议,将本机的时间同步发送到集群其他的服务器上。集群中未获得服务锁的服务器,不会启动时间同步服务,但会一直监听etcd服务,等待锁释放。若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s34)配置和启动监控服务,包括:根据监控模块配置中服务器的对应信息确定服务器的监控服务配置项,监控服务配置项包括采集周期(秒)、采集任务url、报警规则、报警接收邮箱和数据最长存储时间,监控服务使用systemd系统服务托管启动,监控服务内部架构包括数据采集模块、数据存储模块和报警模块若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示;

s35)设置管理员信息,包括:将管理员信息写入etcd数据库,若存在配置失败的服务器,回滚到系统部署前的初始状态,返回错误信息进行页面提示。

上述部署执行的步骤中,任何一台服务器ansible剧本执行失败,将会导致整个集群的部署失败,此时会将整个部署回滚,回滚到系统部署前的初始状态。回滚完成后,后端返回给前端错误信息,前端进行页面提示。运维人员可以通过前端错误提示和服务详细错误日志排查问题,问题修改完成后,点击重新部署即可。

本发明的自动化部署方法底层实现基于ansible运维工具,同样使用其他的系统运维工具也可以达到类似的部署效果,比如puppet、chef、saltstack和fabric等。方法的原理都是在一台服务器上接收部署配置信息,然后分别下发给集群的其他服务器,达到只需在一个服务器节点填写部署配置信息,就可以完成整个集群的部署。

本发明的业务系统集群与etcd集群混合部署,并使用etcd数据库存储服务器集群和业务信息,同样也可以使用其他的分布式数据库存储信息。比如mysql、redis、mongodb等。方法的原理都是通过将业务数据库和业务系统混合部署,避免调用外部数据库系统,较少处理流程的长度,降低异常发生的概率。同时通过分布式数据库集群的状态监控业务系统集群的状态。

本发明的页面部署的监控配置步骤也可以不提供用户自主配置的功能,一般业务系统监控只需要监控系统负载情况,使用业务系统的用户可能不关心具体的报警阈值,只需系统开发人员在后台固定配置好即可。方法的原理都是在集群内部加入监控模块,监控集群的负载情况。系统出现问题提前并且及时报警,方便运维人员快速定位和修复问题。区别在于是否允许用户在页面上配置报警参数。

上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1