网站运维之道 之自动化管理

还是继续这个网站运维的话题吧。前面谈了知识管理与积累,这次谈一下运维过程中的自动化管理。

在进行这篇的扯淡之前,让我想起了《太平广记》里的一个《 板桥三娘子》的故事,姓赵的客商窥探到客栈老板娘三娘子在小箱子中取出小孩玩具大小的木头牛,木头人,喷口水,木头人、牛开始犁地耕作,撒一粒荞麦种子,木头小人种下,不一会儿,荞麦长成开花结实,木头人收割,乃至磨成面粉。然后三娘子把木头牛、人收入箱中,用得来的面粉做了数张面饼。多么好的一个自动化场景呀。

自动化的目的

自动化管理是网站规模化之后必须要面对的问题。为什么要自动化?肯定不是为了炫技,针对一个发展中的网站来说,自动化的主要目的还是为了节省维护成本,提升运维成熟度能力。另外一个经常被忽略的收益是能让运维工作更有趣味性一些,不那么无聊,不无聊的有益副作用是减少人为出错的可能。

自动化针对的范围大致可以分为安装自动化、部署自动化、软件发布自动化、升级自动化、监控自动化等几个方面。优化自动化? 别,这个稍微”高级”并且不靠谱了一点。

自动化要解决的问题是 N 次循环的过程,如果 N 不具备延续性,那么自动化未必有必要。比如某个过程可能只是短时间内需要临时进行几次,是否有必要将其自动化就有待于商榷。如果计划和开发自动化过程的成本高于非自动化成本就没必要了。

开发自动化过程

如果看过古龙的小说,他曾经描述过几个有趣的懒人,懒人造了一些木头人和机关来帮自己干一些不愿意做的事情。自动化多少就是”懒人”要做的事情,因为懒嘛,所以才会想办法节省时间和其他成本。一般来说,这个过程的开发者也是使用者,所以没必要一定要按照所谓的项目过程去走,但是开发者必须能够产出一份文档给同团队的伙伴(如果有的话)。

考虑到多数的网站运维可能都是在 Unix like 环境中的,而 Unix 的哲学思想之一就是”Write programs that do one thing and do it well”,每个过程只做一件事情就很关键,”功能单一的自动化模块”是有必要的,把不同的模块拼装起来再去完成更复杂的需求。

Unix 相比 Windows 来说,天生具备可自动化能力。如 Shell/BASH(自动化日常操作)、CronTab(自动化任务调度) 、Expect (自动化交互场景) 、rsync(数据远程同步)等 啊都是一些需要注意的技术内容。

优化自动化过程

自动化过程一般要有个生命周期,定期升级、优化也是有必要的。面对不同的应用场景应该逐渐改进自动化的可用性。

示例:自动部署 Linux

对于批量的 Linux 安装,RedHat 提供有 Kickstart Installations 自动安装解决方案,不过该方案相对比较繁琐,前不久推出的 Cobbler 是让人眼前一亮的好工具(参见 hutuworm 的介绍文章)。我一直怀疑 Cobbler 是中国人命名的项目,因为 PXE 发音为”pixie”(皮鞋),而 Cobbler 的中文意思是”补鞋匠”。

OS 安装完毕之后的软件安装、更新是个麻烦事。在一个 Linux 的环境中,SA 一定不要为软件相互依赖性浪费太多的时间。什么 YUMAPTYAST 啊,能用就用上。别太迷信自己编译软件所能带来的优化收益,实际上犯错的几率更大。达到某个规模后,本地建立、维护一个软件资料库(repositories)也是有必要的。

Linux 软件安装进化之路:

手工预编译-->RPM-->APT 等工具

已经进化到更好的阶段了,没必要还走着老路在原地折腾。

其他参考:Flickr 运维曾经采用 System Image 来自动化 Linux 相关的的运维工作。或许也可以尝试一下。

在系统配置管理(别混淆到另一个配置管理上去)方面,其实 cfengine 就挺好用的。更多类似工具参考这个比较列表

标准化,减少后续维护成本是节省人力资源的一大法门。

自动化的一些风险

必须要承认的是,自动化有的时候是容易带来一些风险的,比如”冲掉”原有配置文件信息,不恰当的自动化脚本给系统带来额外负载等,在运维过程中需要不断总结经验。(又落入俗套)

这方面值得推荐的一本书是《UNIX和Linux自动化管理》,借鉴一下其中的思路和方法。

对了,补充一下前面的《板桥三娘子》的故事发展,三娘子的面饼如果被客人吃下,则会变成驴…… 同样,自动化有的时候会把人陷进去的,运维人不要变成自动化的奴隶。

这个话题还需要继续下去么? 我再想想 …

程立在 SD2C 2008 上的演讲 PPT

这是支付宝首席架构师程立在 CSDN 软件开发 2.0 技术会议(SD2C 2008)上的技术演讲《大规模SOA系统中的分布事务处理》的 PPT 最后定稿。好几位朋友可能都等着着急了吧。

感谢程立的激情演讲与无私分享。原稿件大约有 8M ,我稍微转换了一下,放到了 SlideShare 上,便于更好的传播。如果要下载,点击上面的链接到 SlideShare 上即可。

关于程立

现任支付宝(中国)网络技术有限公司首席架构师,专注于电子支付系统的分布式服务架构与开放架构研究。 2004年程立开始参与淘宝网与支付宝系统的建设,2005年起进入支付宝后一直从事互联网电子支付系统的研发工作,是支付宝发展的见证人之一。

针对这次技术大会,程立说:

去讲这个主题的目的很简单,希望分享一下对大家可能有用的经验,说一些曾经困扰我们的问题,并给出我们的解决办法,不一定是最好的,不一定是正确的,但源自于亲身实践,并经过生产环境的严格验证。

延伸阅读:程立谈架构、敏捷和SOA实践

大家针对该 PPT 有任何问题,请留言或者发邮件给我,我将第一时间转给程立。

EOF

BTW: 支付宝架构组目前还在招聘架构师,有意者发邮件给: [email protected]

补充 :

CSDN 软件开发 2.0 技术会议(3)

周六,北京的气温似乎回升了一点。

宾馆外面的白杨树

上午的课程兴趣不大,和网易的一些朋友聊了一会儿。下午倒是好几个话题都让我非常感兴趣。钱宏武的课程内容大致在意料中。来自 Amazon Jeffrey Barr 介绍的内容也没有让人惊喜的地方。

接下来就是支付宝同事程立的课程开始了。之前我还非常担心因为是最后一天的下午有人会急着回程,担心现场的人数。结果证明我的担心是多余的,现场非常火爆。

程立演讲中
程立演讲中

程立的演讲也很激情,我临来北京前看过一次他的 PPT ,没想到他后来又增加了很多几个有趣的元素进来(比如引用的山寨鸟巢的那个图),平时感觉他挺严肃的,没想到幽默感也十足啊。

程立的幽默

另外,要感谢程立帮我的 Blog 做的广告。我下周一上班把他的 PPT 放上来。大家先别着急。

最后是黄冬的课程,黄冬给我的感觉和车东倒是很像,随和,诚恳。这个课程内容其实寄托了他的一个创业梦想(PPT)。今天还是黄冬的生日,会议结束后,CSDN 还在现场播放了生日快乐歌。

黄东演讲中

合影,告别,挥手再见!结束了,为期三天的活动就这样结束了。

九华16区大厅
EOF

CSDN 软件开发 2.0 技术会议(2)

周五上午听了一下云风的课程: 高性能健壮系统中的内存管理。这个课程是我之前计划要听的。一个有趣的花絮,云风提问,有个朋友答对了,然后云风很老实的说”我没有礼品送啊”。

云风在演讲

我发现云风一个有趣的小习惯,如果你和他对面站着,他会不停的晃动身体,我都快头晕了。可如果他在台上,他根本不晃 :)

碰上阿朱和张银奎老师在签售。阿朱的前面聚了一大堆人,而《软件调试》的大部头似乎感兴趣的人不多,我实在看不过去,把博文视点海猫同学的话筒抢过来,帮着吆喝了几句,然后简单的说了一下昨天听课的真实感受。还别说,我如果做书托还真有点效果。然后又帮阿朱喊了几嗓子。

保持低调的张老师:

张银奎老师在签售

下午听了一会儿周爱民的讲座,其他的几个话题我不感兴趣,到城里和互动百科的朋友做了一番交流,话题集中在网站架构、开发方面,大约说了三个小时。然后在海底捞(还真不是一般的火爆)吃了一顿饭,再回到九华山庄都差不多半夜了。

出租车内拍的北京

晚安,北京,晚安,所有未眠的人们!

EOF

此文作者:, 位于 MyLife 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.