汽车之家网(车网之家)

作者介绍王显宝,汽车之家运维团队成员,主要负责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

赞赏作者

人赞赏

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

(0)
上一篇 2022年9月11日
下一篇 2022年9月11日

热点推荐

  • 5000人互推微信号(5000人互推微信号)

    但今天重点讲一下微信引流为什么没有效果以及专业工作室怎么做的?讲之前先说下10元5000人的微信粉和5000人互推微信号这些到底水分有多少?10元5000人微信粉,再明显不过是僵尸粉,对你自己10元并不是很多,但对于做这种买卖的人…

    汽车 2022年10月1日
    148
  • 小草莓是什么意思(小草莓是什么意思污词)

    你是否有曾在和男朋友约会回家后,发现自己的脖子被种了草莓呢?对女性来说,种草莓真的是令人既高兴又害羞。不过,如果草莓种错地方的话,也会令人非常困扰呢!有的男性会喜欢在女朋友身上种草莓,因为两人之间有着特别的关系。那么,男性喜欢种草…

    汽车 2022年10月6日
    141
  • 两个插板接一起危险吗(两个插板接一起危险吗接两个水壶)

    两个插板接一起危险。因排插本身的功率是额定的,倘若两个排插连在一起,就会增加功率,容易出现过载运行,从而引发危险。而在上面有接入微波炉、洗衣机等设备,会有设备使用的总功率大过插排总功率的情况,容易导致火灾发生。插排即是带线多位插座…

    汽车 2022年10月6日
    183
  • 鄢怎么读(鄢怎么读音姓氏)

    yān。鄢,左右结构汉字。基本字义是指中国周代诸侯国名,在今河南省鄢陵县一带;该字也是姓。鄢姓源流单纯,一支出自妘姓,以国名、居住地为氏;一支得姓始祖:求言。相传帝颛顼的元孙陆终的第四个儿子名求言,封在郐国,今河南省新郑县西北的…

    汽车 2022年10月8日
    191
  • 虎牙是什么(虎牙是什么直播平台)

    虎牙又叫犬齿,是一种常见的畸形牙,指唇侧错位的尖牙(上颌的两颗单尖牙),它突出于牙弓之外。其常常在十二三岁时向外毗出,很像老虎口角的牙齿,故谓“虎牙”。虎牙牙体粗壮,牙根深长,外形像锋利的尖刀,独具撕裂食物的作用。“虎牙”绝对不能…

    汽车 2022年10月4日
    111
  • 颌怎么读(颌怎么读美颌龙)

    两个读法:hé、gé。颌(hé),释义:构成口腔上部和下部的骨头与肌肉等组织。颌(gé),释义:口。颌的组词:下颌、突颌月鯵、开颌、颌骨、颌首低眉、上颌骨、颌首等。笔顺:撇、点、横、竖、横折、横、横、撇、竖、横折、撇、点。口位于头…

    汽车 2022年10月8日
    189
  • 富锦市属于哪个市(富锦市属于哪个省份)

    富锦市属于佳木斯市。富锦市地处黑龙江省东北部、松花江下游南岸,是三江平原腹地的中心城市。富锦是铁路、公路、水路三路相通的国家一类开放口岸城市,是黑龙江省重点产粮和甜菜基地。是“中国大豆之乡”“中国东北大米之乡”,享有“北国粮都”之…

    汽车 2022年10月4日
    144
  • 取空青为名有什么寓意(取空青为名有什么寓意)

    取空青为名的寓意是饱读诗书、文采斐然。空青,药名。别名青油羽、青神羽、杨梅青。空青石又名营浆石,由于生成条件特殊,极不容易见到,是一种世上罕见的奇特矿石。用作男孩名字寓意独特、有才华。姓名:由姓和名组成,也称名字。人的姓名,是人类…

    汽车 2022年10月4日
    121
  • 生日发朋友圈怎样写好(祝自己生日快乐怎么发朋友圈)

    1、承蒙时光不弃,终究又长大了一岁,感谢每个阶段不同的自己。2、又长大了一岁,要更勇敢,少发脾气,按时睡觉,不要乱想。3、对于过去遗憾的事,笑一笑。今天,停下来和自己SAY生日快乐。4、往后的日子里,不将就,不辜负,感谢经历,感谢…

    汽车 2022年10月8日
    167
  • exp是什么意思?(except是什么意思英语)

    01保质期、失效期EXP是Expirydate(Exp.date)、Expiration或Expiring失效期,也就是平常所说的保质期,如exp.02/19,就是指保质期到2019年2月。常常在药品、化妆品上看到exp字样,那么…

    汽车 2022年9月21日
    135