一种基于ansible自动部署greenPlum的方法及系统与流程

文档序号:29474747发布日期:2022-04-02 06:40阅读:314来源:国知局
一种基于ansible自动部署greenPlum的方法及系统与流程
一种基于ansible自动部署greenplum的方法及系统
技术领域
1.本发明涉及部署greenplum技术领域,更具体地,涉及一种基于ansible自动部署greenplum的方法及系统。


背景技术:

2.greenplum是一个分布式大规模并行处理的开源数据库,可处理大规模的数据分析任务,常用于大数据项目中。我们一般需要集群化部署greenplum,在部署过程中避免不了繁琐的安装步骤、操作多台服务器、不易排查部署异常等问题。目前部署greenplum集群的方式主要有两种:人工部署和半自动化部署。手动部署方式存在部署耗时长、过程繁琐和人工成本高等问题;半自动化部署方式存在实现难度大、shell脚本臃肿、配置复杂、性能低、不灵活、不稳定等缺点。目前亟需一种自动化部署greenplum的技术来解决以上两种传统部署方式出现的问题。
3.ansible是一款自动化运维工具,集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible工具编写的自动化部署脚本具有简洁、高效和配置灵活等特点。ansible内置模块,提供了linux常用操作的功能,大大简化了脚本的编写,完美地解决了半自动化部署方案脚本臃肿的问题。
4.现有技术(申请号cn201910879692.4;公开号:cn110795108a)公开了一种基于ansible编排部署weblogic应用的方法,现有技术提供的是一种基于ansible编排部署weblogic的方案,实现了在服务器上自动化、标准化部署weblogic应用服务。随着国产服务器的普及,越来越多的软件需支持离线安装国产环境,但目前基于ansible自动化部署应用的方案大都是只支持在线和x86架构的服务器的环境,不支持离线和arm架构的国产服务器的环境。
5.因此,需要一种技术,以实现基于ansible自动部署greenplum。


技术实现要素:

6.本发明技术方案提供一种基于ansible自动部署greenplum的方法及系统,以解决如何基于ansible自动部署greenplum的问题。
7.为了解决上述问题,本发明提供了一种基于ansible自动部署greenplum的方法,所述方法包括:
8.基于目标服务器的芯片架构获取待安装软件的rpm包;
9.基于shell脚本在所述目标服务器的主节点主机检测依赖服务是否安装;
10.当检测到在主节点主机的所述依赖服务已经安装时,获取基于shell脚本解析host.ini配置文件所输出的greenplum配置参数,确认所述greenplum配置参数的有效性;
11.当确认所述greenplum配置参数为有效时,基于ansible-playbook脚本通过待安装软件的rpm包安装greenplum;
12.当所述greenplum安装成功后,基于ansible-playbook脚本对所述greenplum进行
初始化。
13.优选地,还包括:基于shell脚本和ansible-playbook脚本对所述greenplum进行卸载。
14.优选地,所述目标服务器的芯片架构包括:x86或arm。
15.优选地,还包括:当检测到在主节点主机的所述依赖服务已经安装时,获取解析出的host.ini配置文件输出主机清单列表,组装包括目标服务器的所有节点主机的数组列表,所述数组列表包括主机ip、hostname主机名和账号。
16.优选地,所述基于ansible-playbook脚本安装greenplum,包括:
17.root账号ssh免密登录配置;
18.设置目标服务器的所有节点主机的sshd的strictmodes属性值为no;
19.检查所有节点主机的操作系统版本;
20.关闭所有节点主机的防火墙且禁止开机自启;
21.在所有节点主机上安装expect服务;
22.关闭所有节点主机上的selinux;
23.根据从所述host.ini配置文件中获取的所有节点主机的hostname主机名,在主节点主机上通过ansible脚本配置每个节点主机的hostname主机名;
24.将从所述host.ini配置文件中获取的所有节点主机的主机ip和hostname主机名配置到所有节点主机的/etc/hosts中;
25.修改所有的节点主机的系统内核参数,即/etc/sysctl.conf;
26.将greenplum依赖服务复制到所有节点主机上;
27.在所有节点主机上安装greenplum;
28.在所有节点主机上创建greenplum超管用户账号和密码;
29.在所有节点主机上创建greenplum数据存储目录,分别有master目录、primary目录和mirror目录。
30.优选地,所述基于ansible-playbook脚本对所述greenplum进行初始化,还包括:
31.计算greenplum的segment节点上配置primary目录或mirror目录的实例个数;
32.基于ansible template机制,生成greenplum初始化配置文件;
33.设置greenplum超管用号gpadmin的ssh免密登录;
34.在所有节点主机上生成segment_hosts配置文件;
35.初始化greenplum的master节点和standby master节点的服务;
36.配置greenplum主节点;
37.输出安装成功或失败等提示信息。
38.优选地,将所述greenplum进行卸载,包括:
39.检查或安装python和ansible;
40.配置root账号的ssh免密登录;
41.删除所有节点上的greenplum进程;
42.利用rpm指令删除所有节点主机上的greenplum安装文件;
43.删除所有节点主机上的数据存储和数据管理目录;
44.删除所有节点主机上的greenplum超管用户;
45.输出卸载成功或失败的提示信息。
46.基于本发明的另一方面,本发明提供一种基于ansible自动部署greenplum的系统,所述系统包括:
47.获取单元,用于基于目标服务器的芯片架构获取待安装软件的rpm包;
48.检测单元,用于基于shell脚本在所述目标服务器的主节点主机检测依赖服务是否安装;
49.确认单元,用于当检测到在主节点主机的所述依赖服务已经安装时,获取基于shell脚本解析host.ini配置文件所输出的greenplum配置参数,确认所述greenplum配置参数的有效性;
50.安装单元,用于当确认所述greenplum配置参数为有效时,基于ansible-playbook脚本通过待安装软件的rpm包安装greenplum;当所述greenplum安装成功后,基于ansible-playbook脚本对所述greenplum进行初始化。
51.优选地,还包括卸载单元,用于基于shell脚本和ansible-playbook脚本对所述greenplum进行卸载。
52.优选地,所述目标服务器的芯片架构包括:x86或arm。
53.优选地,所述确认单元还用于:当检测到在主节点主机的所述依赖服务已经安装时,获取解析出的host.ini配置文件输出主机清单列表,组装包括目标服务器的所有节点主机的数组列表,所述数组列表包括主机ip、hostname主机名和账号。
54.优选地,所述安装单元,用于基于ansible-playbook脚本安装greenplum,还用于:
55.root账号ssh免密登录配置;
56.设置目标服务器的所有节点主机的sshd的strictmodes属性值为no;
57.检查所有节点主机的操作系统版本;
58.关闭所有节点主机的防火墙且禁止开机自启;
59.在所有节点主机上安装expect服务;
60.关闭所有节点主机上的selinux;
61.根据从所述host.ini配置文件中获取的所有节点主机的hostname主机名,在主节点主机上通过ansible脚本配置每个节点主机的hostname主机名;
62.将从所述host.ini配置文件中获取的所有节点主机的主机ip和hostname主机名配置到所有节点主机的/etc/hosts中;
63.修改所有的节点主机的系统内核参数,即/etc/sysctl.conf;
64.将greenplum依赖服务复制到所有节点主机上;
65.在所有节点主机上安装greenplum;
66.在所有节点主机上创建greenplum超管用户账号和密码;
67.在所有节点主机上创建greenplum数据存储目录,分别有master目录、primary目录和mirror目录。
68.优选地,所述安装单元用于基于ansible-playbook脚本对所述greenplum进行初始化,还用于:
69.计算greenplum的segment节点上配置primary目录或mirror目录的实例个数;
70.基于ansible template机制,生成greenplum初始化配置文件;
71.设置greenplum超管用号gpadmin的ssh免密登录;
72.在所有节点主机上生成segment_hosts配置文件;
73.初始化greenplum的master节点和standby master节点的服务;
74.配置greenplum主节点;
75.输出安装成功或失败等提示信息。
76.优选地,还包括卸载单元,用于将所述greenplum进行卸载,还用于:
77.检查或安装python和ansible;
78.配置root账号的ssh免密登录;
79.删除所有节点上的greenplum进程;
80.利用rpm指令删除所有节点主机上的greenplum安装文件;
81.删除所有节点主机上的数据存储和数据管理目录;
82.删除所有节点主机上的greenplum超管用户;
83.输出卸载成功或失败的提示信息。
84.本发明技术方案提供一种基于ansible自动部署greenplum的方法及系统,其中方法包括:基于目标服务器的芯片架构获取待安装软件的rpm包;基于shell脚本在目标服务器的主节点主机检测依赖服务是否安装;当检测到在主节点主机的依赖服务已经安装时,获取基于shell脚本解析host.ini配置文件所输出的greenplum配置参数,确认greenplum配置参数的有效性;当确认greenplum配置参数为有效时,基于ansible-playbook脚本通过待安装软件的rpm包安装greenplum;当greenplum安装成功后,基于ansible-playbook脚本对greenplum进行初始化。本发明技术方案提供的一种基于ansible自动化部署greenplum集群的方法,既支持自动化部署脚本代替人工去部署greenplum的功能,又支持离线和国产服务器的环境,以次来适应复杂而多变的应用场景。本发明技术方案能够适应复杂多变的应用场景,通过基于ansible自动化部署greenplum集群的方法来解决部署greenplum集群过程中出现的各种问题,实现在集群环境下自动化、标准化部署greenplum服务。
附图说明
85.通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
86.图1为根据本发明优选实施方式的一种基于ansible自动部署greenplum的方法流程图;
87.图2为根据本发明优选实施方式的一种基于ansible自动部署greenplum的方法流程图;以及
88.图3为根据本发明优选实施方式的一种基于ansible自动部署greenplum的系统结构图。
具体实施方式
89.现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附
图标记。
90.除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
91.图1为根据本发明优选实施方式的一种基于ansible自动部署greenplum的方法流程图。本技术实施方式本质上是用脚本代替手工操作来部署greenplum集群,用shell和ansible脚本去实现greenplum集群部署的整个过程。本发明greenplum集群部署主要分为六个操作步骤:1)待安装软件rpm包的获取2)依赖服务检查;3)配置参数检查;4)greenplum安装;5)greenplum初始化;6)greenplum卸载。本发明实施方式利用脚本实现如上五个操作过程且脚本兼容离线和国产服务器的环境。
92.如图1所示,本发明提供一种基于ansible自动部署greenplum的方法,方法包括:
93.步骤101:基于目标服务器的芯片架构获取待安装软件的rpm包;优选地,目标服务器的芯片架构包括:x86或arm。
94.本发明首先获取待安装软件rpm包的。本发明根据服务器的芯片架构,即x86或arm(常见国产服务器的芯片架构),通过yumdownloader
‑‑
resolve
‑‑
destdir命令获取ansible、expect和greenplum等软件的rpm包及其依赖的rpm包。
95.步骤102:基于shell脚本在目标服务器的主节点主机检测依赖服务是否安装;
96.本发明对依赖服务进行检查。
97.shell脚本主要内容如下:
98.在master节点机器上,利用rpm-qa|grep-q指令检查依赖的服务(python和ansible服务)是否已安装;
99.若步骤101检查某服务状态为未安装,则通过rpm-uvh指令执行该服务的rpm依赖包离线安装它。
100.步骤103:当检测到在主节点主机的依赖服务已经安装时,获取基于shell脚本解析host.ini配置文件所输出的greenplum配置参数,确认greenplum配置参数的有效性;优选地,当检测到在主节点主机的依赖服务已经安装时,获取解析出的host.ini配置文件输出主机清单列表,组装包括目标服务器的所有节点主机的数组列表,数组列表包括主机ip、hostname主机名和账号。
101.本发明对配置参数进行检查。
102.shell脚本主要内容如下:
103.解析包含主机清单和greenplum参数的文件,即host.ini
104.根据解析host.ini配置文件而输出的主机清单列表,组装集群所有节点宿主机的ip、hostname和账号等数据的数组列表,检查节点个数是否大于3以及主机账号是否为root;
105.根据解析host.ini配置文件而输出的greenplum配置参数,检查greenplum_master_node、greenplum_standby_node和greenplum_segment_nodes等参数的有效性。
106.步骤104:当确认greenplum配置参数为有效时,基于ansible-playbook脚本通过待安装软件的rpm包安装greenplum;
107.优选地,基于ansible-playbook脚本安装greenplum,包括:
108.root账号ssh免密登录配置;
109.设置目标服务器的所有节点主机的sshd的strictmodes属性值为no;
110.检查所有节点主机的操作系统版本;
111.关闭所有节点主机的防火墙且禁止开机自启;
112.在所有节点主机上安装expect服务;
113.关闭所有节点主机上的selinux;
114.根据从host.ini配置文件中获取的所有节点主机的hostname主机名,在主节点主机上通过ansible脚本配置每个节点主机的hostname主机名;
115.将从host.ini配置文件中获取的所有节点主机的主机ip和hostname主机名配置到所有节点主机的/etc/hosts中;
116.修改所有的节点主机的系统内核参数,即/etc/sysctl.conf;
117.将greenplum依赖服务复制到所有节点主机上;
118.在所有节点主机上安装greenplum;
119.在所有节点主机上创建greenplum超管用户账号和密码;
120.在所有节点主机上创建greenplum数据存储目录,分别有master目录、primary目录和mirror目录。
121.步骤105:当greenplum安装成功后,基于ansible-playbook脚本对greenplum进行初始化。
122.优选地,基于ansible-playbook脚本对greenplum进行初始化,还包括:
123.计算greenplum的segment节点上配置primary目录或mirror目录的实例个数;
124.基于ansible template机制,生成greenplum初始化配置文件;
125.设置greenplum超管用号gpadmin的ssh免密登录;
126.在所有节点主机上生成segment_hosts配置文件;
127.初始化greenplum的master节点和standby master节点的服务;
128.配置greenplum主节点;
129.输出安装成功或失败等提示信息。
130.优选地,还包括:基于shell脚本和ansible-playbook脚本对greenplum进行卸载。
131.由于greenplum主从节点比较多、环境复杂且进程多,如果安装失败,手动卸载和删除greenplum步骤繁琐且易出错,因此很有必要有一套自动化卸载机制来代替人工卸载。shell和ansible-playbook脚本内容如下。
132.优选地,将greenplum进行卸载,包括:
133.检查或安装python和ansible;
134.配置root账号的ssh免密登录;
135.删除所有节点上的greenplum进程;
136.利用rpm指令删除所有节点主机上的greenplum安装文件;
137.删除所有节点主机上的数据存储和数据管理目录;
138.删除所有节点主机上的greenplum超管用户;
139.输出卸载成功或失败的提示信息。如图2所示。
140.本发明利用脚本编排操作流程代替人工操作来部署greenplum集群;本发明实施
方式支持离线和国产服务器的环境,可以适应复杂而多变的应用场景;本发明应用的ansible具有批量系统配置、批量程序部署、批量运行命令等功能,内置丰富的linux操作的模块,大大简化了脚本的编写;本发明在自动化部署过程中会输出每一步的操作日志,一旦出现问题,可快速排查。
141.本发明提供的基于ansible自动化部署greenplum集群的方法,使用ansible丰富的内置模块,并进行有序的特定任务的编排,使其无需安装客户端,通过批量操作服务器,执行编写好的ansible-playbook任务脚本,实现自动化部署greenplum集群的功能。本发明既解决了人工部署greenplum耗时长、过程繁琐以及人工成本高等相关问题,又解决了半自动化部署greenplum实现复杂脚本臃肿、不易扩展、低性能和不稳定等问题,同时解决了自动化部署greenplum不支持离线和国产服务器的环境的问题。
142.图3为根据本发明优选实施方式的一种基于ansible自动部署greenplum的系统结构图。如图3所示,本发明提供一种基于ansible自动部署greenplum的系统,系统包括:
143.获取单元301,用于基于目标服务器的芯片架构获取待安装软件的rpm包;优选地,目标服务器的芯片架构包括:x86或arm。
144.本发明的获取单元301首先获取待安装软件rpm包的。本本发明根据服务器的芯片架构,即x86或arm(常见国产服务器的芯片架构),通过yumdownloader
‑‑
resolve
‑‑
destdir命令获取ansible、expect和greenplum等软件的rpm包及其依赖的rpm包。
145.检测单元302,用于基于shell脚本在目标服务器的主节点主机检测依赖服务是否安装;
146.本发明通过检测单元302对依赖服务进行检查。
147.shell脚本主要内容如下:
148.在master节点机器上,利用rpm-qa|grep-q指令检查依赖的服务(python和ansible)是否已安装;
149.若步骤101检查某服务状态为未安装,则通过rpm-uvh指令执行该服务的rpm依赖包离线安装它。
150.确认单元303,用于当检测到在主节点主机的依赖服务已经安装时,获取基于shell脚本解析host.ini配置文件所输出的greenplum配置参数,确认greenplum配置参数的有效性;优选地,确认单元303还用于:当检测到在主节点主机的依赖服务已经安装时,获取解析出的host.ini配置文件输出主机清单列表,组装包括目标服务器的所有节点主机的数组列表,数组列表包括主机ip、hostname主机名和账号。
151.本发明通过确认单元304对配置参数进行检查。
152.shell脚本主要内容如下:
153.解析包含主机清单和greenplum参数的文件,即host.ini
154.根据解析host.ini配置文件而输出的主机清单列表,组装集群所有节点宿主机的ip、hostname和账号等数据的数组列表,检查节点个数是否大于3以及主机账号是否为root;
155.根据解析host.ini配置文件而输出的greenplum配置参数,检查greenplum_master_node、greenplum_standby_node和greenplum_segment_nodes等参数的有效性。
156.安装单元304,用于当确认greenplum配置参数为有效时,基于ansible-playbook
脚本通过待安装软件的rpm包安装greenplum;当greenplum安装成功后,基于ansible-playbook脚本对greenplum进行初始化。
157.优选地,安装单元304,用于基于ansible-playbook脚本安装greenplum,还用于:
158.root账号ssh免密登录配置;
159.设置目标服务器的所有节点主机的sshd的strictmodes属性值为no;
160.检查所有节点主机的操作系统版本;
161.关闭所有节点主机的防火墙且禁止开机自启;
162.在所有节点主机上安装expect服务;
163.关闭所有节点主机上的selinux;
164.根据从host.ini配置文件中获取的所有节点主机的hostname主机名,在主节点主机上通过ansible脚本配置每个节点主机的hostname主机名;
165.将从host.ini配置文件中获取的所有节点主机的主机ip和hostname主机名配置到所有节点主机的/etc/hosts中;
166.修改所有的节点主机的系统内核参数,即/etc/sysctl.conf;
167.将greenplum依赖服务复制到所有节点主机上;
168.在所有节点主机上安装greenplum;
169.在所有节点主机上创建greenplum超管用户账号和密码;
170.在所有节点主机上创建greenplum数据存储目录,分别有master目录、primary目录和mirror目录。
171.优选地,安装单元304用于基于ansible-playbook脚本对greenplum进行初始化,还用于:
172.计算greenplum的segment节点上配置primary目录或mirror目录的实例个数;
173.基于ansible template机制,生成greenplum初始化配置文件;
174.设置greenplum超管用号gpadmin的ssh免密登录;
175.在所有节点主机上生成segment_hosts配置文件;
176.初始化greenplum的master节点和standby master节点的服务;
177.配置greenplum主节点;
178.输出安装成功或失败等提示信息。
179.优选地,还包括卸载单元,用于基于shell脚本和ansible-playbook脚本对greenplum进行卸载。由于greenplum主从节点比较多、环境复杂且进程多,如果安装失败,手动卸载和删除greenplum步骤繁琐且易出错,因此很有必要有一套自动化卸载机制来代替人工卸载。shell和ansible-playbook脚本内容如下。
180.优选地,系统还包括卸载单元,用于将greenplum进行卸载,还用于:
181.检查或安装python和ansible;
182.配置root账号的ssh免密登录;
183.删除所有节点上的greenplum进程;
184.利用rpm指令删除所有节点主机上的greenplum安装文件;
185.删除所有节点主机上的数据存储和数据管理目录;
186.删除所有节点主机上的greenplum超管用户;
187.输出卸载成功或失败的提示信息。
188.已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
189.通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1