首页 >>  正文

依赖包下载

来源:baiyundou.net   日期:2024-09-20

前言

大家好,今天我们为大家推荐一套基于Ansible开发的,自动化部署及扩容openGauss的脚本工具:Ansible for openGauss(以下简称 AFO)。

通过AFO,我们只需简单修改一些配置文件,即可快速部署多种架构模式的openGauss,以及对已有架构进行自动化扩容。下面我们就请这套工具的贡献者,上海联空网络科技有限公司(以下简称联空网络)的李海滨,给大家讲解它的设计理念和优点。

开发背景

Hi,大家好,我是来自联空网络安全品质中心的运维工程师,李海滨。我是一名Ansible爱好者,致力于将运维工作自动化。曾获得 FISCO BCOS 区块链开源社区 2021 年度 MVP 称号。

联空网络成立于 2015 8 月,专注于提供医疗+互联网一站式技术和运营解决方案,帮助医疗用户更加轻松的拥抱互联网。目前,公司已经与 800+ 医疗机构用户形成合作关系,其中,百强医院合作 25+,三级医院 300+,上海地区客户覆盖率超 70%,覆盖全国 23 省市。

当前自主创新、信息技术应用创新等需求日益增长,医疗行业用户十分关注软硬件产品解决方案的自主创新情况,为此联空网络积极响应,投入专业团队,对国内相关软硬件产品适配做可行性判。

经过对国内数据库的深入了解,我们接触到了海量数据库,并获悉其是基于openGauss开源的商业发行版产品。openGauss作为一款开源的关系型数据库管理系统,具有高性能、高可用性以及卓越的扩展能力。于是我们开始构想可以为研发团队提供openGauss环境,让其可以基于openGauss做代码适配。当客户选择使用海量数据库时,我们的软件就可以直接匹配。

为了方便反复部署测试,我拿出了擅长的Ansible,为openGauss写一套自动化部署工具,以简化其安装、配置和管理过程。

完成初版开发后,我与openGauss社区取得了联系,表达了希望可以把这套工具贡献给社区,以开源回馈开源的想法。

感谢社区运营梅相如同学的大力支持,很快为我开设了代码仓库。又找来openGauss的开发工程师行尘同学,解答我在开发过程中遇到的一些问题。在此也很感谢行尘同学不厌其烦地回答,你们给予了我很大的帮助!

解决部署痛点

如果你有按照官方文档部署一套openGauss的经历,你会发现不论是单点还是集群,均需做不少的前期工作。例如要根据 CPU 和操作系统,下载对应版本的安装包。又需要根据不同的 Linux 操作系统,做一些额外配置。手工部署在这里不仅低效,而且容易有错漏。如果是多节点的部署,手工部署的弱势会被进一步放大。

我开发这套Ansible脚本的目标,就是尽可能地覆盖部署前、部署中和部署后的场景,并且把手工部署过程中遇到的一些坑,也通过自动化来解决掉。降低openGauss的部署门槛,推动openGauss的普及。

例如在openEuler 20.03 系统里部署openGauss 5.0,你会遇到readline-devel这个依赖包的版本是 8,而openGauss 5.0 需要的是 libreadline.so.7,导致安装过程失败。我查找到解决方法后,加入到部署流程中,自动帮大家把这个坑给填了。

在给未部署 CM 的架构做扩容时,需要在主备之间做一次 switchover 后才能安装 CM。这些我们也加入到自动化流程中,免除了大家遇到这些问题还要花时间查找解决方法的麻烦。

部署过程中,有需要在 root omm账号之间多次切换的操作,Ansible里用become_user就可以轻松自动切换。这些都是手工部署过程中的痛点。

已实现的功能

总结下来,目前我们这个工具能实现以下功能:

1.提供一个专属的ansible-docker子项目,只要控制机可运行docker,即可运行一个Ansible容器,适配 AFO 的执行。对于不熟悉Ansible的同学非常友好。

2.自动适配 CPU 架构(条件受限,目前仅测试了 X86 架构)和操作系统(已支持 CentOS openEuler 20.03),自动下载对应的openGauss安装包,自动对操作系统做适配修改。

3.实现从单节点到多节点的多种架构模式的一次性部署。

4.使用本工具部署的单点或集群,还能通过添加服务器,再次运行脚本,实现平滑扩容。实测可直接从单主扩容 1 2 2 级联。

5.允许用户自定义一些变量,例如指定部署目录,指定openGauss版本(5.0 或以上),指定sysctl的参数配置。

6.免除手工部署中的问答环节,自动生成相关密码,自动填写。最后生成部署报告。

效率是如何提升的?

以配置网卡 MTU 为例,3 台服务器的执行时间如下:

Ansible 0.517 秒的时间内,完成了 3 台服务器的网卡 MTU 修改。因为,它是并行操作的。

以生成 cluster_config.xml 为例

3 台服务器的节点,手工写 cluster_config.xml,需要花费多少时间,各位可以自己计时看看。

而我们利用Ansible的模板功能,可以在 1 秒内生成该文件,编排非常清晰,一目了然。

我们甚至考虑到了在机房里使用小尺寸显示器查看 cluster_config.xml 的场景,对 xml 做了换行处理,避免出现单行过长的问题。

自动化思路

AFO 主要的工作流如下:

1.对部署环境的信息进行采集。

2.将用户自定义的变量和脚本默认变量合并,优先使用自定义变量。

3.检查是否已部署openGauss,如无,进入初次部署流程。

4.如果已部署openGauss,则检查用户是否有添加新节点,进入节点扩容流程。

5.节点扩容流程里又分 2 步,先扩容备机节点,再扩容级联节点。因为级联节点只连接备机。

6.如果集群节点数量为 3 或以上,且未部署 CM,则进入 CM 部署流程。

7.最后,检查确认集群已正常运行,生成部署报告。

结果展示

3 VirtualBox虚拟机为例,统一 8U+16GB 配置,都在 1 块物理 SATA 盘上读写。

另外,虚拟机都已经提前安装好相关依赖包,openGauss安装包也已经下载到本地。排除网络下载速度的不确定因素。

单节点,4 40 秒(下图右下角)完成部署。

1 1 备,7 48 秒(下图右下角)完成部署。

从单点数据库,扩容为 1 1 1 级联,耗时 23 分(下图右下角)完成部署。

扩容模式需要额外的流程,因此耗时比直接部署 3 节点的要多。

最后生成部署报告

项目代码

这套工具已经收录在openGauss社区的官方代码库,欢迎大家前往下载试用,并向我们多多提出宝贵意见。

代码地址:https://gitee.com/opengauss/ansible-for-opengauss

参与贡献

1.欢迎对Ansible熟悉的同学,加入我们,改进完善我们的项目。

2.更欢迎大家提交 issue,提出宝贵的意见和建议。

3.也欢迎可以提供测试资源的同学,与我联系。目前我们需要 ARM 平台的测试环境。

TODO

1.增加openGauss相关生态软件的自动化部署,例如图形化管理,监控管理。

2.增加 ARM 平台的适配。

3.增加数据库定时备份的配置流程。

4.增加对 1 1 备架构的主备自动切换配置。

5.有限度地提供gs_guc自动化配置,方便运维人员对数据库参数做修改更新。

6.更多的想法,由你们来补充。

","gnid":"9a936df65af6b7871","img_data":[{"flag":2,"img":[{"desc":"","height":"480","title":"","url":"https://p0.ssl.img.360kuai.com/t01fabeebc238d3b347.jpg","width":"776"},{"desc":"","height":"554","title":"","url":"https://p0.ssl.img.360kuai.com/t0131abeaa0e03cf677.jpg","width":"1080"},{"desc":"","height":"595","title":"","url":"https://p0.ssl.img.360kuai.com/t014f0ab8f0f3680437.jpg","width":"1080"},{"desc":"","height":989,"title":"","url":"https://p0.ssl.img.360kuai.com/t0168350a1faf517927.jpg","width":950},{"desc":"","height":"910","title":"","url":"https://p0.ssl.img.360kuai.com/t01b53163056f5da611.jpg","width":"835"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"pika","pub_time":1700875898000,"pure":"","rawurl":"http://zm.news.so.com/ec617b6f488917b561155e5864914c3e","redirect":0,"rptid":"a02eac8948444d69","rss_ext":[],"s":"t","src":"openGaussMan","tag":[],"title":"自动化部署 扩容Ansible for openGauss

羊仇包936依赖包是什么东西,在哪下载? -
石东邢17721376959 ______ 顾名思义,一个插件要正常运行,需要的一个程序包.可以说是,一个插件的插件.你安装那个插件的时候会自动安装的

羊仇包936着急求安装httpd - devel依赖包 -
石东邢17721376959 ______ 先把依赖包apr-devel和apr-util-devel装上 或者用yum装,自动安装依赖包:yum install httpd-devel 前提是配置好yum源

羊仇包936如何在windows操作系统下下载某个Ubuntu软件的deb包,并自动下载其依赖项以便于Ubuntu离线安装这个软件? -
石东邢17721376959 ______ 不装双系统,那么装虚拟机也行吧.装一个虚拟的ubuntu系统. 要自动下载依赖项,还得靠apt、dpkg等命令. 如果你愿意手动分析的话,把下载的deb文件解压缩,可查看里面的control文件得知依赖关系

羊仇包936为什么iphone越狱完.cydia不能下载插件.提示因所依赖的软件包未找到或存在冲突软件包,操作无法完成 -
石东邢17721376959 ______ 之前我的也是一样,重新刷固件在重新越就没问题了

羊仇包936maven怎么扫描依赖包的配置文件 -
石东邢17721376959 ______ 打开Maven Repository网页链接;搜索需要的Spring依赖,得到结果列表,找到你所需要的依赖包;举个例子,比如说你需要的是Spring Web MVC,选择所需的版本;选择好对应的版本之后可以看到相应的页面,此时就可以打开自己的Maven项目,找到pom.xml文件,准备进行对这个依赖的添加;方法一:下载jar包,手动导入到项目中(不推荐).方法二:复制图中文本框内的内容,添加至pom.xml中的标签下,系统会自动下载这个依赖到该项目中,如下图.希望可以帮助到你 (*^_^*)

羊仇包936如何解决linux安装软件的依赖? -
石东邢17721376959 ______ 为什么会依赖: 编写软件的人不想自己一个人做完所有的事情,就像寻求外援,于是就找上了各种各样的软件包. 举个例子,我只是想写一个QQ,但是如果没有图形界面库(或者说我不用图形界面库),我就得自己想办法怎么在屏幕上画一...

羊仇包936[Maven]download依赖包的同时能否download对应的sources和javadoc包 -
石东邢17721376959 ______ 在Maven2的online repository,看到很多artifact目录中是有*-sources.jar和*-javadoc.jar的,能不能在M2 download依赖的artifact的同时,把它的sources.jar和javadoc.jar一起download下来呢?这样在Eclipse中也可以直接在Java Build Path的Liberaries中直接为依赖包关联source和API,开发的时候方便好多.

羊仇包936linux依赖包里面到底什么?不好意识,我的问题比较2,包里面到底是什么东西,什么格式的文件
石东邢17721376959 ______ 这个问题很简单!包里面主要是软件控制信息和安装内容,包括软件信息和依赖关系. 安装内容大体和win类似,不过文件系统结构不同,会有稍微的区别! 区别不是问题. ====================== linux分为源码包和安装包,安装包和win类似,源码包就是一堆源码,源码安装的软件需要编译环境,没有环境就无法编译!这个和win也是类似的! 楼主了解一下LFS吧!之后就知道linux了

羊仇包936如何解决Maven依赖本地仓库eclipse报错的问题 -
石东邢17721376959 ______ 1、 首先,从其他可以在外网下载相应依赖包的地方下载好相应的依赖包到本地仓库,再将该本地仓库拷贝到项目相应位置,便于引用. 2、安装Maven2并进行相应配置,关于Maven2具体安装和配置,略过. 注意:在Maven2的配置文件...

羊仇包936ifile怎么安装不上 -
石东邢17721376959 ______ ifile需要一大堆依赖插件,你可以先去cydia上安装正版的ifile,但是不要在队列那点安装,要点继续队列,然后返回ifile的界面点更改,然后清除,这样就把需要的依赖都装上了,最后再装ifile就行了

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024