目录

那些年,我搭过的环境

Linux下环境搭建方式

工作这么多年,环境搭建是项很重要的能力, 在工作中搭建过很多环境了,归纳起来,离不开下面几点

  1. 源码编译安装,这种安装方式在Linux中很常见的。 主要是下载源码包,再make install 进行编译安装。

  2. rpm 方式,这种安装方式是利用下载好的rpm包进行安装,缺点是没有网络的话,有的rpm会依赖很多rpm包且安装顺序严格。优点是可以自己编译rpm包,定制iso会用到。

  3. docker安装,利用dockerfile等,将服务放到docker里,自动构建镜像进行安装。这种安装方式也挺方便的。是云原生时代算是很简便的安装方式了

  4. 整个虚拟机打包,这种在云桌面云平台方面用的很多,利用云平台去构建环境。

  5. 在线装 yum/dnf/apt安装

December 11, 2022在看NJSD大会时,看到复旦大学的研究生,现场演示了部署了一套环境,是在openharmony系统的。虽然没有用过这种微型的系统,但我看第一次就知道了!可能是因为那边毕竟还是学生,而我毕竟工作了那么多年,能看懂也不奇怪。但我想说的是关于环境部署,真的就那么多东西!没什么难的!真的是一通百通!

那些年我搭过的环境

在实际工作中搭建过不少环境了,这里简单列举几个:

openstack自动化部署

基于kolla-ansible部署openstack V版本自动化脚本

这套脚本是针对openstack victoria 版本,centos8 定制的自动化脚本。回想起来,是我研究了2个月,调试了不下百遍搞出来的。当时没有服务器,在openstack里装虚拟机,在虚拟机里再装openstack,后来在exsi虚拟机里不断测试和尝试,优化脚本。再经过无数次的实践,最终有了这套东西,确实很方便,不需要在手动一个个安装了,以极大的提高部署openstack 效率。

其实写这样一套东西,是因为当时工作总是需要搭环境,而我这个”懒人“,是绝对不想一条一条命令去copy,paste,一台一台去搞了。更何况如果服务器多起来,那就更不能这么搞了。要知道openstack不同于其它简单的环境搭建,它搭建步骤很复杂。用脚本前期投入确实非常巨大,但后期却为我省了很多事情。

这套代码经过我个人和我周围的同事不断的试错,基本已经成熟,代码已经开源出来,希望能帮到有用的小伙伴, 👉online_deploy_victoria 但这套脚本前提必须是保证环境配置是对的,且不缺少包。对执行顺序也有一定要求,尤其是要注意ceph存储那边的搭建以及各个配置文件的修改。

至于openstack的其他内容,就不详细说了,零零散散的很多。记录在了👉notion笔记里。后面有时间会专门介绍这方面的内容。

/linux基础/20230501213951.png /linux基础/20230501213811.png

cobbler批量安装系统

为什么要提这个东西呢,当时因为考虑到现场环境服务器很多,需要一台一台安装系统。就很麻烦。而这套系统,可以做到批量安装系统。不是大批量安装服务器,不需要上cobbler,维护起来也挺麻烦。

搞这套东西,也花了不少时间, 里面也有很多注意点。👉这里记录了基于centos8.13 cobbler的安装,调试的过程,网上的资料基于centos7的居多, 没有基于centos8的。当时这个东西确实把我折腾的够呛,可以说为了这套东西,日渐消瘦。当然最后搞出来还是很有成就感的。

后来折腾的是,这篇文章比较长,而且图片很多,当时我用的hexo博客,重新整理的时候复制图片花了很长时间,后来换notion,发现图片都展示不了了。我又一个个把图片弄上来了,将近30张图片。因为时间关系就不重新整理到这个博客平台来了。感兴趣的可以看一下我notion的记录👉基于centos8.3 cobbler批量安装系统

我大致看了一下调试的过程,文档里的很多东西还是值得学习的。虽然后面不会用到,尤其是那几个服务还挺有意思的,还有就是它的安装原理及流程,配置文件等,这些需要注意的。

glusterfs2存储


为什么要提一下这套环境搭建呢,这是我在YJ工作时遇到的,印象比较深刻;当时要用到gfs2存储,我也是花了很大的精力去搞这个东西,虽然它对现在的我来说已经不算什么有难度的事情了,但对当时的我来说,甚至是对周围同事来说,都没搞过这个东西。而且网上这方面的资料几乎没有。只有官网有少许的并不完整的资料。我只能一点点摸着石头过河,一点点去尝试,反复搭建和推翻。就这样从一开始搭这样一套环境需要一周,时间缩短到半天,越来越熟练。并且形成文档交给了别的同事进行脚本安装,因为当时我们要定制iso,这种存储是打包到iso里的。

LoginVSI环境

这套环境是在windows下搭建的,用于性能测试。很难!从搭建到优化流程,花了我将近两个月时间,包括后续的一些脚本优化。它的原理大致是服务端,负责接收和采集数据。客户端安装在虚拟机里,负责触发操作,模拟正常人工操作,分析统计打开应用的延时等等。

从事云桌面的可以去官网了解一下,这套软件购买的话,我记得一年也要二三十万这样。但是国外的软件确实做的很好!而且我在搭建过程中人家还送了我两次的序列号。虽然离开了公司以后再也不会去用到这套环境了,但是我搭建好的环境,形成的文档,测试流程和脚本,也一直在沿用至今。可以说这是一项开创性的工作。我在研究过程中,还发现一个专利和我的测试方案极为类似,却没有我形成的测试流程完整。除了LoginVSI的搭建,还有涉及到批量建立spice链接的脚本,这就很复杂了。怎么获取终端的ip,推送文件等等,还有虚拟机的一些设置,注意点等等。

minio 对象存储

我在做信息化项目接触的,主要是将一些文件,图片存到了上面。本身难度不大,难在它后期的环境迁移比较麻烦,它的存储是把文件分割,存储到不同的服务器上。迁移的时候不是简单的把数据拷过去就可以的,用的是专门的迁移工具,也有很多注意点,如域名配置等等。

redis集群

这个也并不难,但也没看起来那么简单。难在了集群文件的配置,启动设置,哨兵模式的配置等,调试的过程中需要注意的东西很多。并不是说拿个rpm包,或者安装包编译或者是docker装一下就完事了。调试的过程比搭建的过程更难。真正能把这套环境搭的很规范的人,却没多少。所以不要去小看简单的东西,也不要去觉得复杂的东西很难。再复杂的东西也都是由简单的知识一点点组合而成。

其他环境

这里就不多说了,总之搭过的环境很多,如STF环境Zabbix监控自己编译离线rpm包docker离线仓库pip离线源搭建等等。👉那些年我搭过的环境

搭建了那么多环境,让我具备了一个能力,不管遇到了什么样环境需要搭建,不会去觉得难,反而会觉得这种事情应该很简单才对。这就是做的多了带来的能力。也很容易去解决搭建过程中遇到的一些错误。这都是在实际工作中一点点积累和锻炼出来的。

在工作中锻炼自己的能力

我的环境搭建能力,也是在工作中一步步练出来的,在ZTE时,就已经涉及到比较复杂的环境搭建了,比如webcachedns等等,甚至还用到了http分光等。在YJ,我接触的虚拟化相关的知识,也需要不断的去搭建更为复杂的环境,不管是服务端,还是客户端,还是终端。性能测试时,还用到了LoginVSI工具,这套环境的搭建也让我耗费了很大的精力,甚至都可以申请专利了。后面文章会有介绍。在ZGX,接触openstack等,更是让我的环境搭建能力更上一层楼。理解流程,解决问题的能力,都是在实践中不断锻炼出来的。所以说在实际工作中能力提升还是比较快的。

Linux搭建环境难还是windows难?

我可以肯定的说,在windows下搭环境比在Linux下难!

虽然平时我们办公用windows系统居多,但从行业应用角度来说,却是Linux系统应用的多,作为服务端,基本上都是Linux系统,ubuntu,suse,centos等等,嵌入式系统,边缘节点有时候采用openharmony这种很小的系统,无一例外都是Linux。

我前几份工作涉及虚拟机比较多,在实际项目中,也有用windows搭环境的,只不过很少,比如

  • 采用了在windows server 下搭建域控服务器;
  • 或者window server下搭建sql server数据库
  • 云桌面压测过程中,我使用了LoginVSI工具,这套环境是在windows环境下的,当时花了很多时间去研究这个东西。

Linux系统还是比较简单和纯粹的!windows如果要做一些系统级别的优化和修改,很麻烦,那么多注册表和修改项,我在云桌面项目中也做了一些windows系统优化的工作,可以说很折腾人,每一个系统优化项得一个一个测试,注册表修改等待。Linux就比较简单了,几行命令搞定。所以从服务器角度说,选用Linux系统更好,在Linux系统下搭建各种环境也较为简单。

每一种技术都有它特定的应用场景,Linux也是。所以如果想继续从事软件工作,Linux系统还是有必要去深入了解一下的,比如底层的内核层面的东西等。

总结

小结

环境搭建是一个很重要的能力,虽然在大公司可能会有专门的运维负责构建环境,但大多数情况下,对开发,测试等,也要掌握这些技能。对于要反复搭建的环境,封装成自动化脚本或者是构建docker镜像或虚拟机镜像等。

搭建环境要考虑很多因素,尤其是正式环境,性能(内存,CPU),网络,存储,后期维护和迁移,安全,配置文件的修改等等。 解决报错的能力也很重要,在环境搭建中,不可避免的会遇到各种报错,需要耐心一点去解决这些问题。

总之,在工作中难免会遇到搭建各种环境,但这些环境搭建的路子是类似的,解决问题的思路也是类似的。熟练了以后,就很容易去解决问题,在很短的时间内把环境搭起来。根据项目实际需求选择最合适的搭建方式。