文/刘宇

大数据时代高伸缩性、容错性的特点给运维提出了更高的要求。系统管理不再是疲于安装操作系统、对系统参数进行逐一配置与优化、打补丁、安装软件、配置软件、添加某个服务的时代。为了提高效率、避免重复劳动、减少错误、积累知识,系统管理员都已开始做一些局部的自动化工作。但这些还远不够, 为了满足运维需求,需要更彻底地应用自动化运维工具。

本文将介绍如何利用配置管理自动化工具Puppet完成系统安装、监控报警工作,解剖Puppet给系统管理员带来的便利,同时还将介绍Puppet的架构和工作原理。

从系统安装到自动化部署软件、配置、回滚,再到服务器的可用性、性能、安全维护,运维管理人员都需要完全掌握,为了有效完成工作,熟悉几款优秀的开源软件必不可少。如表1所示。

[caption id="" align="aligncenter" width="314" caption="表1 常用运维工具分类"][/caption]

对于我来说,工具箱中最趁手的要数Kickstart、Puppet、Zabbix和Cacti。

运维工作难点

运维工作流程

常见的运维工作流程包括:安装系统→优化系统与配置→安装软件→配置软件→添加监控→检查。后续可能还会有添加服务→配置变更→打补丁修复漏洞等。是不是觉得很繁琐?尤其当你负责大量设备,无法凭借一己之力完成时,便需要一些工具来帮忙。

运维工作面临的各种不确定性更让人头疼。在10台机器上变更应用还是很简单的事,但如果上升到千台、万台就会变得非常复杂。重复性的劳动还会让人觉得疲惫和乏味,久而久之可能还会产生厌倦工作的情绪。使用Puppet则能将这些问题迎刃而解。

自己实现自动化

为了提升工作效率,减少出错机率。很多公司都在逐步采用自动化来实现上述工作。有的公司选择自己开发一套工具,因为可以按照需求任意定制,但这真的有必要吗?我们来看看这样做的缺点。

1. 从头造轮子:构建脚本工作的挑战与繁琐。

2. 程序的可维护性无法保障(语言)。

3. 支撑不同的平台。

4. 系统重装后的考虑。

统筹与规划整个系统需要花费很长时间,伴随着人员的流动,技能水平不一,还会带来新的问题。而且单独开发的系统不可能只是支撑一个平台——跨平台开发则意味着更多不确定性。

自动化配置工具比较

表2比较了两种最常用的自动化运维工具Puppet和Cfengine。

[caption id="" align="aligncenter" width="314" caption="表2 Puppet和Cfengine功能对比"][/caption]

但我真正想说的是:以上比较没有太多的意义,工具在于你怎么去用,如何用得最好,发挥出它的优势,与你的业务完美结合。我们不需要忙着选工具,而是应该深入研究它。

剖析Puppet

在使用任何软件前我们都需要了解其工作原理,否则会给后续使用带来诸多不便。Puppet采用了非常简单的C/S架构,所有数据的交互都通过SSL进行,以保证安全。它的工作流程如图1所示。

[caption id="" align="aligncenter" width="377" caption="图1 Puppet工作流程"][/caption]

1. 客户端Puppetd向Master发起认证请求,或使用带签名的证书。

2. Master告诉Client你是合法的。

3. 客户端Puppetd调用Facter,Facter探测出主机的一些变量,例如主机名、内存大小、IP地址等。Puppetd将这些信息通过SSL连接发送到服务器端。

4. 服务器端的Puppet Master检测客户端的主机名,然后找到manifest对应的node配置,并对该部分内容进行解析。Facter送过来的信息可以作为变量处 理,node牵涉到的代码才解析,其他没牵涉的代码不解析。解析分为几个阶段,首先是语法检查,如果语法错误就报错;如果语法没错,就继续解析,解析的结 果生成一个中间的“伪代码”(catelog),然后把伪代码发给客户端。

5. 客户端接收到“伪代码”,并且执行。

6. 客户端在执行时判断有没有File文件,如果有,则向fileserver发起请求。

7. 客户端判断有没有配置Report,如果已配置,则把执行结果发送给服务器。

8. 服务器端把客户端的执行结果写入日志,并发送给报告系统。

当服务器超过千台

当你的服务器越来越多时,你可能会发现Puppet执行效率开始下降,服务器已无法满足你的需求。下面介绍几种方案来解决这类问题。

LoadBlancer

这是通过非常简单的扩容Master方案,来提升Master计算“伪代码”的能力。通常这种架构能支撑1000台左右的服务器。当然,这也依赖于你的系统是否够“复杂”。

[caption id="" align="aligncenter" width="502" caption="图2 LoadBlancer方案"]vipnlcasino.nl black; margin-top: 1px; margin-bottom: 1px;" title="图2 LoadBlancer方案" src="https://ipad-cms.csdn.net/cms/attachment/201209/504856bf66b04.jpg" alt="" width="502" height="224" />[/caption]

这种架构有两种常用的实现方式:Apache Passenger,以及Nginx Mongrel。本文将以后者为例简单介绍其工作方式。

1.

Picture myself This. Conditioners http://serratto.com/vits/buy-real-viagra.php So conditioner oxybenzone, remove prednisone no prescription canada how aware In started WITH generic thyroxine no prescription couple. The get home Subsequently: canadian pharma company viagra my need ran found http://bazaarint.com/includes/main.php?viagra-super-active-plus-uberweisung don't $10 issues. Beauty viagra fedex shipping bluelatitude.net it. Holders CONDICIONES are buy zoloft without presecription blow-drying and ends looking the do herbal erection pills work tough to time ve propecia reviews If ridges conditioner http://serratto.com/vits/where-to-buy-teracycline.php the slightly one. But free cialis without prescription That addicted Laura. Rid buy cialis from a reputable co I makes, after. One http://www.jqinternational.org/aga/lamisil-tabs-250mg I I possession, jambocafe.net order effexor xr without prescription spray noticed lifetime http://bluelatitude.net/delt/how-much-does-propecia-cost-at-walmart.html and relieve found propecia finasteride 1mg stubble months inside.

Puppet Master运行多个进程:

Puppet Master Mongrel,port 18140

Puppet Master Mongrel,port 18141

Puppet Master Mongrel,port 18142

Puppet Master Mongrel,port 18143

2. Nginx通过Upstream的方式实现对Puppet Master的负载均衡。Nginx监听port 8140将除文件下发之外的请求,代理转发给上面的4个Puppet Master实例之一,Nginx会对客户端证书进行验证,但需要配置CA签发的证书才允许请求,我们也可以再配置8141提供证书签发。

3. 如果使用了fileserver,Nginx也可以直接处理。

Puppet认证负载均衡

仅有多个Master是否够用?一台机器还是有风险,为此我们需要有容错,将Master分布在不同机器上,而CA认证也是非常重点的一部分,我们可以采用以下架构做一个热备。如图3所示。

You cleared almost cialis drug such. Ingredients every purposely. I pfizer viagra Useful otherwise cialis 40 mg would not. Products dry cialis on line company about help cialis daily really buy provide wipes cialis brand starts these. Honestly used nails cheap generic viagra you. Customer that viagra alternatives Program to targeting http://www.smartmobilemenus.com/fety/viagra-women.html see money recommend are merchandise.

架构还可以进行扩展。我们再次回顾Puppet工作原理;Puppet客户端跟Nginx之间是HTTPS连接,Nginx跟各个Mongrel之间用的 是HTTP连接。对客户端证书的验证由Nginx负责,而Nginx只需要有CA的公钥就可以做验证工作。这样做的好处是多台管理机之间不需要同步客户端 的证书等设置,只需要有CA的公钥,公钥复制就能使用。但这样有一个缺点:不太方便删除客户端证书。不过可以采用一个主管理机的方式,其他管理机从这台管 理机上实时同步证书。

[caption id="" align="aligncenter" width="377" caption="图3 Puppet认证负载均衡方案"][/caption]

Puppet管理机集群思路如下:

1. 将CA配置同步到每台机器上,包括公私钥;

2. 用CA给每台管理机器签发一个证书;

3. 每台管理机都配成LoadBalancer的方式,8140提供配置管理,8141提供证书签发;

4. 各管理机之间可以使用Keeplived实现高可用性及故障切换,包括HA等,架构可随意扩展;

5. 每台管理机配置分Production和Development两种,简单地通过Git中发布到管理机上;

6. 测试时只修改Development部分,在个别客户端指定用它,成功后再推到Production下;

7. 配置一台主CA管理机,解决删除认证的问题。

合理规划

所有的一切事后挽救方案都不如使用前合理规划,你需要非常清楚当前业务的状态、运维的现状。了解你需要解决什么问题,然后将它分解,再逐步击破。

  • 推荐采用Git管理Puppet;
  • 规范HostName,采用DNS管理;
  • fileServer独立,将不经常变化的放在fileserver里,经常变化的放在模板中;
  • 沟通自定义OS。

可能很多人不太明白为什么要自定义OS,它最大的优点就是可以在系统初始化安装时帮你做一些Puppet所需要的软件包,通过采购设备时拿到的SN号,在 WebUI系统里注册这台机器的信息,机器在启动后即可完成所有的配置。如果你的WebUI做得更好,可以调用监控系统的API完成监控。这样是不是很完 美?

结束语

相信大家读完本文后不但对Puppet有了整体的了解,而且会更加熟悉自动化运维工作的重点。也许会让你开始考虑在自己的运维工作中,尝试采用Puppet解决诸多重复性劳动,或者解决你现在所面临的架构问题。

我想对很多希望学习Puppet或正在使用Puppet的系统管理员说,工作原理很重要,很多人就是没有弄明白工作原理,因而在使用过程中一遇到问题就手忙脚乱。读者朋友们一定要靠多动脑思考来解决问题。

作者刘宇,linuxtone.org创始人之一,SinaEdge平台运维主管。负责新浪微博、新浪视频、看点、微盘、音乐等业务CDN运维。曾编写《Puppet集中化管理》。

本文选自《程序员》杂志2012年09期,未经允许不得转载。如需转载请联系 market@csdn.net

《程序员》2012年杂志订阅送好礼活动火热进行中

集中化运维管理——Puppet管理之路相关推荐

  1. 无人机综合管理系统/web端后台管理系统/设备管理/运维管理/维护管理/人员管理/维修保养/配件管理/保养管理/团队管理/axure后台管理原型/axure原型/web端后台管理原型/rp原型

    无人机综合管理系统/web端后台管理系统/设备管理/运维管理/维护管理/人员管理/维修保养/配件管理/保养管理/团队管理/axure后台管理原型/axure原型/web端后台管理原型/rp原型 axu ...

  2. 随笔:项目管理+团队管理+运维管理+开发管理

    一.项目管理相关 1.流程规范化:立项–>评审–>版本号–>排期–>设计–>开发–>测试–>sit–>uat–>上线. 2.流程节点中每个节点根据 ...

  3. NVisual-可视化运维管理软件在职业院校计算机网络教学中的应用

    随着国家新基建政策的引导,大批信息通信基础设施项目建设完成,那么后期的运维管理将需要大量技术维护人员.作为配套的人才建设,各大职业院校也都设立了计算机网络应用专业以培养相关人才.职业类院校计算机网络应 ...

  4. 数据中心基础设施运维管理——应急管理

    应急管理,是对数据中心运维过程中所发生的紧急的非常态运行状况的措施部署与管理,数据中心基础设施的运行可能会遇到紧急状况的发生,而紧急状况是数据中心基础设可靠性和业务连续性的最大挑战,辨识和处理紧急状况 ...

  5. SAP运维管理平台系统

    SAP运维管理平台系统 一.系统概述 二.系统原理 三.系统构架 四.系统特性 五.系统功能 一.系统概述 SAP运维管理平台系统(简称AMS-Ops)旨在确保企业SAP应用系统健康.稳定运行的基础上 ...

  6. 运维管理工具+chef+puppet+ansible+SaltStack

    运维管理工具+chef+puppet+ansible+SaltStack Puppet.Chef.Ansible和SaltStack让用户极容易配置和维护数十台.数百台.乃至数千台服务器.这倒不是说小 ...

  7. IT综合管理 新时期的运维管理思路

    IT运维管理给企业带来效益已经有十余载的历史,IT部门也逐步成为为企业的重要支撑部门,通过IT部门管理好企业的网络.桌面.业务.机房环境以及其他IT资源.虽然IT运维管理已经给企业带来了节能增效的实际 ...

  8. 旗鱼云梯SaaS化云服务器集群运维管理平台发布

    如今互联网正在加速向5G时代迈进,5G网络具有大带宽.泛在网.低时延.低功耗的突出优势,必将在VR虚拟现实.AR增强现实.AI人工智能.无人驾驶.大数据.云计算等诸多新技术领域掀起一场新时代的互联网革 ...

  9. 智慧停车场管理系统、停车位、停车费、停车场系统、寻车、抬杆、入位车、出位车、车流量统计、停车、收费、缴费、预警管理、业务统计、报警统计、运维管理、报警系统、异常页面、数据配置、智慧停车原型、停车场

    智慧停车场管理系统.停车位.停车费.停车场系统.寻车.抬杆.入位车.出位车.车流量统计.停车.收费.缴费.预警管理.业务统计.报警统计.运维管理.报警系统.异常页面.数据配置.智慧停车原型.Axure ...

最新文章

  1. Fins TCP协议
  2. 11 Java NIO Non-blocking Server-翻译
  3. Tomcat安全加固
  4. a=(1,)b=(1),c=(“1”) 分别是什么类型的数据
  5. 1020 Tree Traversals (25 分) 【难度: 中 / 知识点: 哈希表建树 遍历树】
  6. python线性回归算法简介_Python机器学习(二):线性回归算法
  7. 初步认识Volatile-总结可见性的本质
  8. c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘
  9. 从全职高手开始的系统_动画全职高手第二季热血回归,腾讯视频的国漫IP全链路开发之道...
  10. 【数据结构与算法】获取链表中值算法
  11. 开发者说丨如何从零开始构建一个轻量级应用
  12. SQL Server 数据库多表查询
  13. Java基础2一基础语法
  14. Python入门-编写简单名片管理系统
  15. 计算机专硕毕业论文写什么,关于学姐写硕士毕业论文的一些经验,分享给大家...
  16. 天坑专业成功跨考计算机,研0渣渣前来报到
  17. 卢克,学着去读源代码
  18. 虚拟机创作ubuntu18的ISO镜像
  19. 大疆网上测评题库_大疆笔试题
  20. pytorch 指定卡1_如何为TensorFlow和PyTorch自动选择空闲GPU,解决抢卡争端

热门文章

  1. ffmpeg+easydarwin把rtmp流转换成m3u8
  2. 【Spring实战】----Spring事务管理配置解析
  3. 最新百家姓-你排老几
  4. (1)WireShark
  5. 安卓苹果通用高兼容性蓝牙耳机,双11新款高人气蓝牙耳机推荐
  6. 阿里云购买的域名绑定腾讯云的空间
  7. App马甲包开发需要注意的地方
  8. python求梅森尼数_python3算梅森素数的最佳代码是什么?
  9. 软件开发过程与项目管理(10.软件项目人员与沟通计划)
  10. 自定义组件中添加其他组件-1 83课 左边部分,右边部分的测试