怎么做静态网站,app下载安装安卓版,做网站常用工具,搜索引擎优化的方法包括前言
大家好#xff0c;今天我们为大家推荐一套基于Ansible开发的#xff0c;自动化部署及扩容openGauss的脚本工具#xff1a;Ansible for openGauss#xff08;以下简称 AFO#xff09;。 通过AFO#xff0c;我们只需简单修改一些配置文件#xff0c;即可快速部署多种…前言
大家好今天我们为大家推荐一套基于Ansible开发的自动化部署及扩容openGauss的脚本工具Ansiblenbsp;for openGauss以下简称nbsp;AFO。 通过AFO我们只需简单修改一些配置文件即可快速部署多种架构模式的openGauss以及对已有架构进行自动化扩容。下面我们就请这套工具的贡献者上海联空网络科技有限公司以下简称“联空网络”的李海滨给大家讲解它的设计理念和优点。 开发背景
Hi大家好我是来自联空网络安全品质中心的运维工程师李海滨。我是一名Ansible爱好者致力于将运维工作自动化。曾获得nbsp;FISCO BCOS 区块链开源社区nbsp;2021 年度nbsp;MVP 称号。 联空网络成立于nbsp;2015 年nbsp;8 月专注于提供医疗互联网一站式技术和运营解决方案帮助医疗用户更加轻松的拥抱互联网。目前公司已经与nbsp;800 医疗机构用户形成合作关系其中百强医院合作nbsp;25三级医院nbsp;300上海地区客户覆盖率超nbsp;70%覆盖全国nbsp;23 个省市。
当前自主创新、信息技术应用创新等需求日益增长医疗行业用户十分关注软硬件产品解决方案的自主创新情况为此联空网络积极响应投入专业团队对国内相关软硬件产品适配做可行性研判。
经过对国内数据库的深入了解我们接触到了海量数据库并获悉其是基于openGauss开源的商业发行版产品。openGauss作为一款开源的关系型数据库管理系统具有高性能、高可用性以及卓越的扩展能力。于是我们开始构想可以为研发团队提供openGauss环境让其可以基于openGauss做代码适配。当客户选择使用海量数据库时我们的软件就可以直接匹配。
为了方便反复部署测试我拿出了擅长的Ansible为openGauss写一套自动化部署工具以简化其安装、配置和管理过程。
完成初版开发后我与openGauss社区取得了联系表达了希望可以把这套工具贡献给社区以开源回馈开源的想法。
感谢社区运营梅相如同学的大力支持很快为我开设了代码仓库。又找来openGauss的开发工程师“行尘”同学解答我在开发过程中遇到的一些问题。在此也很感谢“行尘”同学不厌其烦地回答你们给予了我很大的帮助
解决部署痛点
如果你有按照官方文档部署一套openGauss的经历你会发现不论是单点还是集群均需做不少的前期工作。例如要根据nbsp;CPU 和操作系统下载对应版本的安装包。又需要根据不同的nbsp;Linux 操作系统做一些额外配置。手工部署在这里不仅低效而且容易有错漏。如果是多节点的部署手工部署的弱势会被进一步放大。
我开发这套Ansible脚本的目标就是尽可能地覆盖部署前、部署中和部署后的场景并且把手工部署过程中遇到的一些坑也通过自动化来解决掉。降低openGauss的部署门槛推动openGauss的普及。
例如在openEulernbsp;20.03 系统里部署openGaussnbsp;5.0你会遇到readline-devel这个依赖包的版本是nbsp;8而openGaussnbsp;5.0 需要的是nbsp;libreadline.so.7导致安装过程失败。我查找到解决方法后加入到部署流程中自动帮大家把这个坑给填了。
在给未部署nbsp;CM 的架构做扩容时需要在主备之间做一次nbsp;switchover 后才能安装nbsp;CM。这些我们也加入到自动化流程中免除了大家遇到这些问题还要花时间查找解决方法的麻烦。
部署过程中有需要在nbsp;root 和omm账号之间多次切换的操作Ansible里用become_user就可以轻松自动切换。这些都是手工部署过程中的痛点。
已实现的功能
总结下来目前我们这个工具能实现以下功能
1.提供一个专属的ansible-docker子项目只要控制机可运行docker即可运行一个Ansible容器适配nbsp;AFO 的执行。对于不熟悉Ansible的同学非常友好。
2.自动适配nbsp;CPU 架构条件受限目前仅测试了nbsp;X86 架构和操作系统已支持nbsp;CentOS 和openEulernbsp;20.03自动下载对应的openGauss安装包自动对操作系统做适配修改。
3.实现从单节点到多节点的多种架构模式的一次性部署。
4.使用本工具部署的单点或集群还能通过添加服务器再次运行脚本实现平滑扩容。实测可直接从单主扩容到nbsp;1 主nbsp;2 备nbsp;2 级联。
5.允许用户自定义一些变量例如指定部署目录指定openGauss版本5.0 或以上指定sysctl的参数配置。
6.免除手工部署中的问答环节自动生成相关密码自动填写。最后生成部署报告。
效率是如何提升的
以配置网卡nbsp;MTU 为例3 台服务器的执行时间如下
Ansible在nbsp;0.517 秒的时间内完成了nbsp;3 台服务器的网卡nbsp;MTU 修改。因为它是并行操作的。
以生成nbsp;cluster_config.xml 为例
3 台服务器的节点手工写nbsp;cluster_config.xml需要花费多少时间各位可以自己计时看看。
而我们利用Ansible的模板功能可以在nbsp;1 秒内生成该文件编排非常清晰一目了然。 我们甚至考虑到了在机房里使用小尺寸显示器查看nbsp;cluster_config.xml 的场景对nbsp;xml 做了换行处理避免出现单行过长的问题。
自动化思路
AFO 主要的工作流如下
1.对部署环境的信息进行采集。
2.将用户自定义的变量和脚本默认变量合并优先使用自定义变量。
3.检查是否已部署openGauss如无进入初次部署流程。
4.如果已部署openGauss则检查用户是否有添加新节点进入节点扩容流程。
5.节点扩容流程里又分nbsp;2 步先扩容备机节点再扩容级联节点。因为级联节点只连接备机。
6.如果集群节点数量为nbsp;3 或以上且未部署nbsp;CM则进入nbsp;CM 部署流程。
7.最后检查确认集群已正常运行生成部署报告。
结果展示
以nbsp;3 台VirtualBox虚拟机为例统一nbsp;8U16GB 配置都在nbsp;1 块物理nbsp;SATA 盘上读写。
另外虚拟机都已经提前安装好相关依赖包openGauss安装包也已经下载到本地。排除网络下载速度的不确定因素。
单节点4 分nbsp;40 秒下图右下角完成部署。 1 主nbsp;1 备7 分nbsp;48 秒下图右下角完成部署。 从单点数据库扩容为nbsp;1 主nbsp;1 备nbsp;1 级联耗时nbsp;23 分下图右下角完成部署。
扩容模式需要额外的流程因此耗时比直接部署nbsp;3 节点的要多。 最后生成部署报告 项目代码
这套工具已经收录在openGauss社区的官方代码库欢迎大家前往下载试用并向我们多多提出宝贵意见。
代码地址https://gitee.com/opengauss/ansible-for-opengauss 参与贡献
1.欢迎对Ansible熟悉的同学加入我们改进完善我们的项目。
2.更欢迎大家提交nbsp;issue提出宝贵的意见和建议。
3.也欢迎可以提供测试资源的同学与我联系。目前我们需要nbsp;ARM 平台的测试环境。
TODO
1.增加openGauss相关生态软件的自动化部署例如图形化管理监控管理。
2.增加nbsp;ARM 平台的适配。
3.增加数据库定时备份的配置流程。
4.增加对nbsp;1 主nbsp;1 备架构的主备自动切换配置。
5.有限度地提供gs_guc自动化配置方便运维人员对数据库参数做修改更新。
6.更多的想法由你们来补充。