汽车之家网(车网之家)

作者介绍王显宝,汽车之家运维团队成员,主要负责AutoCMS的开发工作和缓存平台的运维工作,擅长python自动化运维,分布式缓存和分布式文件系统应用管理。汽车之家运维团队,是汽车之家技术部里最为核心的团队,由op和dev共同组成…

作者介绍

王显宝,汽车之家运维团队成员,主要负责AutoCMS的开发工作和缓存平台的运维工作,擅长python自动化运维,分布式缓存和分布式文件系统应用管理。

汽车之家运维团队,是汽车之家技术部里最为核心的团队,由op和dev共同组成。我们的目标是为汽车之家集团打造一个高性能,高可扩展,低成本,并且稳定可靠的网站基础设施平台。

团队技术博客地址为 http://autohomeops.github.io/

正文

一、前言

AutoCMS 是汽车之家目前正在使用的统一配置管理工具,本文将详细介绍该系统的使用方法和架构实现。

先来回顾下汽车之家软件部署和配置文件管理的经历的几个阶段:

原始阶段(依靠手工部署,wiki制定规范)

软件包的来源没有强制规范,带来了很大的安全隐患。

新业务上线或者业务紧急扩容,运维投入大量人力来完成繁重的体力劳动。

部署目录标准化依赖wiki规范维护,人力部署的时候经常会出现问题

汽车之家网(车网之家)

最初阶段软件部署和配置文件管理完全依赖人力完成。部署新业务,运维根据研发测试环境的软件版本,去官网下载软件包,在服务器上编译安装,然后根据研发需求,手工配置文件,启动服务。该阶段暴露出诸多问题:

半自动化阶段(依赖人力打包,yum方式部署)

随着运维自动化的推行,搭建自己的yum源,自己打包来规范软件版本来源和部署目录。需要批量部署的时候,逐台登录服务器执行yum install 安装相关的软件包即可,该阶段已经节省了很大的人力,不过依然需要逐台登录服务器去修改配置文件才能够满足上线需求。配置文件变更前的备份和故障后的恢复依然需要人力维护。

自动化阶段

现在正在使用的管理系统AutoCMS,实现页面化管理软件部署和配置文件,实现快速批量管理软件。

下面将详细介绍一下我们正在使用的AutoCMS。

二、AutoCMS使用方法介绍

AutoCMS 是基于puppet实现的软件部署和配置文件管理的一套系统,避免手动安装部署软件,提供可靠的软件标准化部署,配置文件和基础服务的管理服务。 本系统主要实现以下几点功能:

批量部署软件包

页面管理软件的配置文件变更,支持备份和回滚

多环境部署,开发,测试,线上环境相互隔离

灰度推送配置

远程执行安全的命令

基本的统计功能

使用者操作流程如下:

创建主机

主机组是需要批量部署同一个软件或者下发相同配置的主机的集合,创建主机组的同时需要关联一下配置模块,该配置模块是提前写好的puppet模块。

添加主机

将需要部署该模块的主机加入该组内(本系统中主机的输入源是cmdb接口)

选择环境

根据需求选择该主机的环境,各个环境的配置数据独立存储,彼此不受影响。

配置部署参数

根据配置模块不同,编写配置文件,生成不同的配置页面,业务运维只要在页面上选择相应的参数,puppet会根据这些参数生成相应的配置文件。

推送配置

业务运维再前端页面配置完成后,返回主机组管理页面,选择主机并进行推送配置,便会触发相关主机的puppet agent 运行,部署相应的软件和配置。

三、系统架构说明

AutoCMS使用django作为前端框架,后端部署程序主要基于puppet实现,通过puppet的enc和report功能实现完整的部署和配置逻辑,整体架构如下:

简要分析下:

前端配置页面

由于各个软件配置选项不同,所以前端的软件参数配置页面要采用配置文件动态生成。

数据存储

设计初期,我们在mysql和MongoDB之间选择了MongoDB,主要出于一下几点考虑:

Schema-less,json风格存储:由于配置数据根据软件的不同,其数据不能依靠key-value能够存放的,每个软件的配置项可能会有自定义的结构,所以采用了json格式来处理,而MongoDB的bson恰好能够满足需求,省去了在mysql中频繁使用外键。此外,json格式数据易于掌握和理解,存储的数据一目了然。

CRUD方便快捷,支持范围查询和正则查询,还支持支持upsert选项(如果不存在则插入)。

与其他nosql产品相比,我们对mongodb的持久化和高可用方案更加熟悉。

部署实施层

该部分是通过puppet模块实现,模块中引用的参数通过自定义facter或者使用enc来读取配置存储的MongoDB获得,

一台主机的多实例部署通过create_resources函数实现,例如一台主机需配置多个tomcat实例,数据会是如下结构:

多环境分离实现: 本系统中puppet代码部分有git作为版本控制,通过git自身的多分支的特性来做puppet代码层面的环境分离。根据需求来执行不同分支的puppet代码即可。

四、配置案例

下面以tomcat自动部署模块为例,进行详细介绍:

1. 根据部署需求,设计出配置数参数的存储结构

2. 填写前端布局的配置文件,自动生成前端配置页面。

3. 编写puppet自动部署模块。

4. 编写enc转换程序

5.以上准备工作做好之后,系统上线,运维可以创建主机组,关联tomcat模块,将需要批量部署的主机加入该组内,并进行参数配置

6. 配置完成后,进行灰度发布验证没问题后,进行全量推送,观察状态,配置完成。

五、小结

汽车之家网(车网之家)

随着云时代的到来,很多服务器可以定制镜像实现所需的运行环境,不过随着业务规模的扩大,服务器的个性化配置会越来越多,镜像的维护工作也会逐步增加,使用AutoCMS可以灵活的解决这个问题。把各自的配置需求写成配置模块,并把服务器分组,批量推送下去,可以节省运维人员很多体力劳动。让运维人员将精力投入到更有价值的工作中。

欢迎关注汽车之家运维团队订阅号,让我们一起成长。

加入运维帮地方群

现在已经开通上海、广州、深圳、杭州、成都同城群,先加微信yunweibang666,然后拉你进群,敲门口令:你所在城市。

运维帮精选

欢迎加入运维帮QQ技术讨论群:542812110

快乐分享,快乐生活

商务合作,请加微信yunweibang008

赞赏作者

人赞赏

声明:本文内容整理自网络,观点仅代表原作者本人,投稿号仅提供信息发布服务。如有侵权,请联系管理员。

投稿号的头像投稿号注册会员
上一篇 2022年9月11日
下一篇 2022年9月11日

热点推荐

  • 杵怎么读(韦陀杵怎么读)

    拼音:chǔ。部首:木。笔画:8。笔顺:横、竖、撇、点、撇、横、横、竖。基础释义:1、一头粗一头细的圆木棒,用来在臼里捣粮食等或洗衣服时捶衣服。2、用杵捣。3、用细长的东西戳或捅。详细释义:〈名〉(形声。从木,午声。本义:舂米的棒…

    2022年10月11日
    1650
  • 财报解析 | 蔚来二季度成“蔚小理”亏损王,但情况没有那么糟糕

    蔚来汽车的二季度财报姗姗来迟。 北京时间9月7日晚,蔚来汽车公布2022年二季度业绩。二季度,蔚来汽车实现营收102.92亿元,同比增长21.83%;归母净利润为-27.45亿元,相比去年同期亏损扩大316.37%。 ——这是一份…

    2022年9月27日
    1090
  • 满月祝福语(满月祝福语简短8字)

    1、祝你们的宝宝身体健康,幸福安康。2、宝宝健康成长,天天微笑。3、惟愿吾儿平安顺遂,一生喜乐。4、百事如意轻歌扬,岁月风雨成器长。5、愿你像颗种子,勇敢地冲破泥沙。6、愿你是船,劈开蓝色的波澜。7、百事如意轻歌扬,岁月风雨成器长…

    2022年10月11日
    2320
  • 故宫金水桥两侧是什么门(故宫金水桥的图片)

    故宫金水桥两侧是午门、太和门。午门是北京故宫的正门,平面呈“凹”字形,其形制与南京故宫午门一致,位于紫禁城南北轴线,通高37.95米,始建于明朝永乐十八年(1420年),清朝顺治四年(1647年)重修,清朝嘉庆六年(1801年)再…

    2022年9月29日
    1020
  • 在微信上怎么开店(在微信上怎么开店卖东西)

    制作一个能在线售卖货品的小程序店铺,将会使商家的线上交易方便很多。而且现在想要开通小程序店铺是非常简单的,没多大难度,普通小商户也能顺利做一个。那么微信小程序怎么做店铺?教程如下:第一步:申请小程序账号怎么申请微信小程序开店铺?首…

    2022年10月7日
    950
  • 新秀丽箱子密码忘了(新秀丽箱子密码设置)

    新秀丽密码箱忘记密码怎么办?新秀丽拉杆箱密码怎么修改?拉杆箱品牌Samsonite忘记密码如何设置初始密码?下面介绍一下新秀丽拉杆箱密码修改吧。一、新秀丽拉杆箱密码忘了怎么办1.先把箱子侧过来,看密码锁的侧面。2.慢慢转动数字轮,…

    2022年9月23日
    1350
  • 生物和科兴有什么区别?(科兴和北京生物什么关系)

    01生物和科兴的主要区别是两者是由不同的公司生产的。北京生物的疫苗上市相对比较早,在2020年12月31日上午10点获批上市,也是我国首个获批上市的新冠疫苗。北京科兴疫苗上市时间比北京生物晚了一个多月,是在2021年2月5日正式获…

    2022年10月6日
    950
  • 宜兴汽车(宜兴汽车站时刻表查询)

    网约车的出现确实方便了我们的生活说走就走最近《宜兴市网络预约出租汽车经营管理服务细则(试行)》正式出台!▼▼▼现在如果需要开网约车必须有三个证《网络预约出租汽车经营许可证》(网约车平台牌照)《网络预约出租汽车运输证》(网约车运输证…

    2022年9月11日
    1040
  • 小汽车驾驶技术(小汽车驾驶技术讲座)

    提示:近日,黑龙江绥化一辆白色轿车司机猛打方向盘,车子冲出路面飞身上树,所幸司机仅受到皮外伤。有警方官方微博发帖称:“交警能处理这样的事故,职业生涯一片无悔”。▏来源:…

    2022年9月14日
    1400
  • 洗钱是什么意思?(洗钱的常见方式是什么)

    01一种将非法所得合法化的行为,主要指将违法所得及其产生的收益,通过各种手段掩饰、隐瞒其来源和性质,使其在形式上合法化。现代意义上的洗钱是指将毒品犯罪、黑社会性质的组织犯罪、恐怖活动犯罪、走私犯罪、贪污贿赂犯罪、破坏金融管理秩序犯…

    2022年10月7日
    940