28

Linux运维趋势 第14期 高性能电子商务网站

  • Upload
    51cto

  • View
    7.742

  • Download
    5

Embed Size (px)

DESCRIPTION

《Linux运维趋势》第14期主题为构建高性能电子商务网站。目录:人物·People003 百度高级架构师乔梁:DevOps=Culture+Tools交流·Interact005 架构师不可不知的十大可扩展架构八卦·News007 Ubuntu 11.10,Fedora 16正式发布专题·Special009 解密淘宝网的开源架构011 淘宝软件基础设施近年发展情况013 Hadoop在eBay的应用015 NoSQL数据库笔谈——应用篇017 构建高安全电子商务网站之自动备份019 老板要省钱 小公司如何部署实施Linux集群网站技巧·工具·脚本·DBA021 一种MySQL主从同步加速方案023 用SSHGuard免费工具帮你保护服务器025 OpenStack实践之旅:安装配置篇027 榨干服务器:让进程运行在指定的CPU《Linux运维趋势》是由 51CTO 系统频道策划、针对 Linux/Unix 系统运维人员的一份电子杂志,内容从基础的技巧心得、实际操作案例到中、高端的运维技术趋势与理念等均有覆盖。本杂志长期处于探索期,需要更多来自大家的意见与参与。谢谢!微群讨论:http://q.weibo.com/121303邮件订阅入口:http://os.51cto.com/art/201011/233915.htm投稿信箱:[email protected]发布周期:每个月的第二个星期五往期《Linux运维趋势》下载汇总页:http://down.51cto.com/zt/71

Citation preview

Page 1: Linux运维趋势 第14期 高性能电子商务网站
Page 2: Linux运维趋势 第14期 高性能电子商务网站

002

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

目录Index

002

目录

人物·People

003 百度高级架构师乔梁:DevOps=Culture+Tools

交流·Interact

005 架构师不可不知的十大可扩展架构

八卦·News

007 Ubuntu 11.10,Fedora 16正式发布

专题·Special

009 解密淘宝网的开源架构

011 淘宝软件基础设施近年发展情况

013 Hadoop在eBay的应用

015 NoSQL数据库笔谈——应用篇

017 构建高安全电子商务网站之自动备份

019 老板要省钱 小公司如何部署实施Linux集群网站

技巧·工具·脚本·DBA

021 一种MySQL主从同步加速方案

023 用SSHGuard免费工具帮你保护服务器

025 OpenStack实践之旅:安装配置篇

027 榨干服务器:让进程运行在指定的CPU

出版方 :51CTO 系统频道(北京无忧创想信息技术有限公司)

杂志主编 :杨赛

联系方法 :[email protected] 010-68476606(分机 8035)

出版日期 :2011 年 11 月 11 日

每月第 2 个星期五出版

订阅 :http://os.51cto.com/art/201011/233915.htm

Page 3: Linux运维趋势 第14期 高性能电子商务网站

003

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

人物People

003

百度高级架构师乔梁:DevOps=Culture+Tools

的 :三个月之后,团队的交付周期就变成了三周一次,并在接下来的三个月

里一直保持这种频率。

实际上,乔梁说,三周交付并不是该团队的极限,还可以优化到两周或更

少,不过,在一种工作方式产生变革并取得成功的结果后,乔梁认为,应该把

这种结果持续一段时间以使之固化下来,然后才可以进入下一个阶段。

转变的过程当然是痛苦的,乔梁说,“但是得到的收益也很大”——

DevOps 带给团队的“不仅是技术上的改变,还有行为上的改变”。

很多与会者都关心这种工作方式的可行性,在会后的提问中,大家的焦

点也集中在这一块 :开发团队和运维团队真的能够那么协调的工作吗 ? 他

们是怎么解决一些工作和技术上的冲突

的呢 ?

在会后的交流中,乔梁向 51CTO 记者

表示,目前 DevOps 这种方式尚没有在百

度的整体技术团队中应用,但是他所负责的 high level 的团队使用这种方

式取得了明显的效果。而且,把交付周期变更为三周一次,是这个团队的开

发人员和运维人员共同提出的,对于 KPI 进行整体考核的要求,也是团队成

员提出的。

“你要培养一种文化,要建立一种机制。让运维人员参与到更早——只

要项目开始,启动阶段就要把运维人员引入进来,一起开个会,让他们知道

项目的进程”。同时,开发人员也需要了解到运维人员的工作状态,因为一

文/苏慧

“把交付周期变更为三周一次,是这个团队的

开发人员和运维人员共同提出的。”

传统的软件交付过程是通过架构、业务、技术运维、保障等团队之间一步

一步把交付物交给下一个环节,最后产生交付软件的价值。这种交付方式

的一个明显缺点是各角色仅关注于自己本身的工作,在中间的流通环节产

生了很多不必要的浪费,如时间成本和沟通成本等 ; 同时,这种阶段性的交

付通常时间较长,一旦产生问题造成的影响也较大。

敏捷开发是为解决这一问题而提出的解决方案。在这种方法里,业务人

员也深入到开发当中,这样需求、开发、测试前面三个环节被打通了,但是,

到部署的时候仍会出现问题 :因为项目是直到最后才交给运维人员部署到

线上,部署时经常出现比如 IP 问题、机器资源问题、与线上已有程序的冲突

等,要花费大量时间解决。出现这种结果是因为,虽然整个团队共同的目标

是项目的最终实施,但是作为两个不

同角色的部门,开发团队和运维团队

对具体的目标仍有不同的追求。

那么如何解决开发团队和运维团

队之间的这种隔阂 ?DevOps 应运而生。

10 月 22 日,在 “QCon 杭州 2011 全球企业开发者大会”上,来自百度项

目管理部的高级架构师乔梁与大家分享了百度的一个交付团队是如何利用

DevOps,在半年的时间内让交付周期从每三个月一次提升到每三周一次的。

“我改变了他们的工作方式”,乔梁说。新的制度的确影响到了团队的日

常工作,在开始的三个月,团队的开发速度降了下来。不过这种代价是值得

Page 4: Linux运维趋势 第14期 高性能电子商务网站

004

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

人物People

004

旦他们了解到运维人员每天要处理多

少条告警,再开发的时候就会注意。据

乔梁介绍,有些公司是通过轮岗的方式

来促成这种相互理解的。“最后一点也

是最关键的一点”,乔梁说“任何一种产

品的成功,不只是你开发团队的成功。我希望 DevOps 里能为同一件事情来

鼓掌,来建立一种沟通协作的文化”。

DevOps首先是一种文化转变

改变交付团队各个环节各自为政的局面,建立一种全新的工作方式,这

是 DevOps 的第一步。然后,我们需要检视开发运维过程中的每一个环节,

减少不必要的浪费。

这些浪费包括 :一些容易造成高风险问题的不必要的多分支开发 ; 问题

被发现的时间推迟 ; 基于流程平台的沟通 ; 常规的例行工作上花费的大量

人工等。

为减少浪费,DevOps 团队做了很多工作。首先,持续交付的一个前提是

持续集成 ; 其次,将大量的工作通过自动化手段来实现 ; 部署脚本,所有的

变更都走同样地流程 ; 所有的事情都

要做版本控制。DevOps 要求所有的人

都要做主干开发。

提高工作效率,自动化是一个很重要

的手段。乔梁在演讲中也多次提到“自动化”这个特点,那么自动化是不是

DevOps 的一个前提呢 ?

在回答 51CTO 记者这个问题的时候,乔梁表示,“DevOps 本身第一

Culture( 文化 ) 是最重要的,你得让所有人都参与进来,至于自动化,它只

是一种手段一种工具,因为当你用传统交付的方法你的人力的消耗会很大,

会对运维、测试等造成很大的压力,如果你不解决这个问题的话,那你测试

和运维都不会同意的”。

至于实现自动化脚本的手段,乔梁介绍百度是有自己的一套管理运维平

台,其他企业可能会通过 puppet 之类的工具去做。在不同的环节都有不同

的自动化工具可以选择。“你不用这些工具没关系,但是比如环境准备,还

有应用度等等你必然要有一套自己的方式。” 乔梁说。

针对目前 DevOps 在国内外的发展情况,乔梁说,DevOps 本身还是比较

新的东西,国内外并没有很大的差距,“我觉得还是意识层面的差距。因为

DevOps 里面很多技术很多国内的公司也在用,但是他还是把我只把我自己

运维的这一部分做了,他连不起来,大家还有隔离。”

正如乔梁在一张演讲 PPT 中所写道的 :“DevOps=Culture+Tools”,它是

工作思路的转变辅以适当工具的结果,首要的还是文化转变——“包括我

们之前提到的敏捷开发,基本上也是一种文化的变化,而不是一种工具的变

化。”乔梁说。

原文 :http://os.51cto.com/art/201110/298786.htm

“首先,持续交付的一个前提是持续集成。其

次,将大量的工作通过自动化手段来实现。

Page 5: Linux运维趋势 第14期 高性能电子商务网站

005

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

交流Interact

005

架构师不可不知的十大可扩展架构

对于大多数架构师而言,“可扩展性”在软件架构方面是最虚无缥缈的说

法。这毫不奇怪,因为可扩展性正是如今软件设计领域最值得优先考虑的

要素。然而,计算机科学家们还无法了解一套单独的架构如何才能扩展至

各类应用环境当中。相反,我们在数量繁多的方案中所设计出的可扩展性

架构,往往以业界较为通用的已知可扩展模式及个人偏好为标准。简单来

讲,打造一套具备可扩展性的系统已经变得更像是一门艺术而不单单是技

术。

我们常常会通过观摩杰作体会并学习艺术的精髓,而可扩展性也应该遵

循同样的路线!

在这篇文章中,我将列出数款为大

家所耳熟能详的可扩展性架构。通常

情况下,架构师们完全可以借鉴已知

的可扩展架构模式,进而创造出新的

可扩展架构。

LB ( 负载平衡器 ) + 无共享单位

该模型中包含一系列单元,各单元彼此间不共享任何内容,且一致指向

一个将输入文讯按一定条件发往单元处的负载平衡器(这构成一个循环,以

负载等情况为基础)。每个单元可以是一个单独的节点或是紧密耦合的节

点所构成的集群。用户可以使用 DNS 轮询、硬件负载平衡器或者软件负载

平衡器达成负载平衡效果。创建一套负载均衡的层次结构,并在其中结合

前面提到的各种负载平衡器也是可行的。在由Michael Stonebraker撰写的《

无共享体系架构实例 》一文中,专门讨论了此类架构。

LB + 无状态节点 + 可扩展存储

传统的 三层式 Web 架构 使用的就是这种模型。该模型包括数个与可

扩展存储交互的无状态节点以及一个分布于节点间负载中的负载平衡器。

在这一模型中,存储通常作为限制因素存在,但 NoSQL 存储则可以利用这

套模型创建出具备相当可扩展性的系统。

点对点架构 ( 分布式哈希表 (DHT) 以及内容寻址网络 (CAN))

这套模型提供了一些传统的可扩展算

法,这些算法的各个方面几乎全部按对数

进行了等比例增加。举例来说,像 Chord、

Pastry(特指免费版)以及 CAN 都属于此

类。而以 Cassandra 为代表的、基于 P2P

架构的几款 NoSQL 系统也是其中的成员。

《 展望 P2P 系统中的数据 》一文就深入

探讨了这类模型的各种细节。

分布式队列

这种模型以将队列实施(即先进先出交付机制)作为网络服务处理为基

础。该模型通过 JMS 队列而广泛得到采用。一般会遵循这种做法的有任

务队列以及通过保持队列分级体系实现扩展性的任务队列版本,后者在负

载无法及时处理时,任务会由低级层面向高级层面传递。

文/Srinath编译/核子可乐

“每个单元可以是一个单独的节点或是紧密耦

合的节点所构成的集群。用户可以使用DNS轮

询、硬件负载平衡器或者软件负载平衡器达成负

载平衡效果。”

Page 6: Linux运维趋势 第14期 高性能电子商务网站

006

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

交流Interact

006

发布 / 订阅模式

一般用于通过网络向彼此发布订阅

讯息。《 发布与订阅的多面性 》这一

经典论文中详细的介绍这一模型,该模

型方面最典型的例子即 NaradaBroker 与 EventJava 。

小道消息与自然灵感式模型

这种模型源自日常生活中小道消息的传播途径,也就是每个节点将随机

选择后续节点以交换信息。正如现实生活中的实际反馈,这种八卦型算法

在信息传播方面出奇地迅速。该模型的另一大分支则是受到生物学影响的

启发式算法。自然世界中存在着大量协调及扩展方面极为卓越的固有算法。

举例来说,蚂蚁、人类以及蜜蜂等等,都能够以最简洁的交流方式协调好扩

展性方面的需要。模型中的算法正是借鉴了这些实际存在的现象。在论文《

从流行病的蔓延到分布式计算 》中对这种模型有着详尽的叙述。

地图缩小 / 数据流

这一概念首先由谷歌公司提出,地图缩小为工作的描述及执行提供了一

套可扩展的模式。虽然内容简单,但它仍然成为联机分析处理方面的首要

处理模式。数据流则是一种更先进的方式,用来表达执行信息 ;而像 Dryad

及 Pig这样的项目为数据流的执行提供了可扩展的框架。论文《 地图缩小 :

大型集群上的简化数据处理 》中设置了专门的主题,详细讨论这一内容。

Apache 的 Hadoop 就是这种模型的代表性产品。

责任树形图

这种模型打破了递归问题的束缚,将整个流程以树状形式加以处理 ;每

个父节点将工作下放至子节点。这种模型扩展性强,并已经被应用于数款

可扩展性架构当中。

流处理

这种模型被用于处理源源不断的数

据流及数据。这种处理方式通过网络

中的处理节点获得支持(例如 Aurora、

Twitter Strom 以及 Apache S4 等)。

可扩展存储

该模型的应用范围从数据库、NoSQL 存储、服务注册到文件系统都有体

现。 链接中的这篇文章 以可扩展性为切入点对其进行了深入讨论。

综上所述,可扩展性的实现只有三种方式,即 :分布、缓存及异步处理。

前文所提到的各种架构事实上都是把这三种方式进行不同组合并加以实

施。而另一方面,不利于可扩展性的因素,除了糟糕的编码本身,全局性协

调也起到了重要的影响。简单来说,任何一种全局性协调都会限制系统的

可扩展性。本文中所提到的各种架构也只是在做好了本地性协调,而非全

局性协调。

然而,将它们有机地结合起来以创建一套极具可扩展性的架构可不像说

起来那么容易,除非我们能找到一种全新的扩展模式。不过经验告诉我们,

比起搞一套全新的架构,采用为我们所熟知且更易驾驭的可扩展性解决方

案永远是更好的选择。

原文 :List of Known Scalable Architecture Templates

译文 :http://os.51cto.com/art/201111/301143.htm

【推荐阅读】

互联网运营智慧 -- 高可用可扩展网站技术实战

教你五招,快速提升 MySQL 可扩展性

“可扩展性的实现只有三种方式,即:分布、

缓存及异步处理。”

Page 7: Linux运维趋势 第14期 高性能电子商务网站

007

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

八卦News

007

Ubuntu 11.10,Fedora 16正式发布

【Ubuntu】Ubuntu 11.10 是 Ubuntu 的第 15 个重大版本发布,桌面版和服

务器版都有 18 个月的生命周期。

http://os.51cto.com/art/201105/264870.htm

【脑细胞】网站架构的常见演进路径 :web 与 db 共用→ web 和 db 拆分→

多台 web → db 主从→ web 缓存→ db 缓存→存储拆分→ Scale Up →按应

用竖切 web →内存当硬盘→按时间横切 db →按事务竖切 db →按 hash 竖

切 db →存储网络化→虚拟化→云,看起来都有章可循,但不知多少技术人

员在这路上死了无数脑细胞,还有那无数的不眠之夜。

http://weibo.com/1649415495/xwl7WBXwa

【咆哮】我究竟为什么受够了 Linux ? Linux 机器可以成为出色的服务器。

但是它们需要有一组专门的 Linux 技术人员,这些人了解关于 Linux 的一切

事情,了解所有的联络暗号……而我就是个工作忙碌的人。

http://os.51cto.com/art/201110/298945.htm

【Hadoop】微软对 Hadoop 的支持,对我而言,这是微软第一次与 IBM 及甲

骨文等竞争对手并肩而立,计划实施大型合作项目。

http://os.51cto.com/art/201110/297367.htm

【Fedora】Fedora 16 在 11 月 8 日正式发布,主要新特性包括 Aeolus

Conductor、 Condor Cloud、 HekaFS、 OpenStack 以 及 pacemaker-cloud 在 内

的 增 强 云 支 持 ,KDE Plasma 工 作 空 间 4.7,GNOME 3.2 等。

http://os.51cto.com/art/201111/300952.htm

——八卦,新闻与数字 2011.10 - 2011.11

【Qt】Nokia 21 日早宣布 Qt 项目真正成为完全开源的项目。Qt 项目由

Qt-project.org 主持,该组织已经设置一台 Gerrit 服务器作为新的项目管理

架构,来方便处理代码审核、补丁修复等。

http://os.51cto.com/art/201110/298750.htm

【Mint】Linux Mint 下一个版本“Lisa”,将会继续支持 GNOME 2.32 作为

Linux Mint 标准版本的默认桌面环境。该版本基于 Ubuntu 11.10。同时,

也会引入对 GNOME 3 的支持。

http://os.51cto.com/art/201110/298193.htm

【Amazon】Bezos 派出了几位首席牛头犬来监督并确保进度,领头的是和

熊一样大的牛头犬 :Rick Dalzell,Rick 是以前是陆军突击队队员,西点军校

毕业生,拳击手,和沃尔玛的首席虐刑官 /CIO,而且他也是个高大、和蔼、令

人敬畏的人,还是经常使用”hardened interface”词的人。

http://coolshell.cn/articles/5701.html

【Linux 基金会】Linux 基金会宣布新增 5 位欧洲新成员,他们分别是

AboveIT,Comarch,CSR,Symbio 和 Tieto。

http://os.51cto.com/art/201110/299230.htm

【Samba】微软开源技术中心的 Stephen Zarkos 为 Firefox 和 Samba

的 NT 局域网管理器认证的扩展保护提交了一些概念证明代码,这是实现

Samba/Windows 互操作性的一大步。

http://os.51cto.com/art/201111/300308.htm

Page 8: Linux运维趋势 第14期 高性能电子商务网站

008

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

008

构建高性能电子商务网站

【编者按】作为电子商务运维,一些基本功是必须掌握的 :

一、熟悉安全技术,了解硬件防火墙性能,能熟悉的配置 iptables 和了解

Linux/Unix 相关的安全工具 ;

二、熟练的配置 Linux 的集群技术,比如 LVS/Nginx/HAproxy,了解其原

理和会话保持机制 ;

三、熟练的配置 Nginx 和 Apache 服务器,能熟练的配置其正则 ;

四、熟练和了解 MySQL 或 Oracle 数据库,至少要了解一种 ;

五、熟悉存储 ;

六、熟悉和了解虚拟化技术 ;

七、极熟悉 SHELL 脚本,用其实现工作中的各项需求 ;

八、懂 PHP 或 Java 代码。(以上总结来自抚琴煮酒的一次访谈)

在大型电子商务网站下,运维的工作会细分,不过上述内容仍是基本功。

此外,由于大规模网站遇到的各方面挑战,会要求开发人员和运维人员能够

与时俱进,在网站遭遇瓶颈之前做好应对。

本专题收集了一些国内外大型电子商务网站的经验分享,最后也介绍了

一些通用的构建、维护技巧。

Page 9: Linux运维趋势 第14期 高性能电子商务网站

009

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

009

解密淘宝网的开源架构

编者按 :本文于 2008 年撰写,文中提到的数字和内容在三年当中发生了

很多变化,大家可以根据这些变化来印证淘宝在技术上都做了哪些工作。

淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,

注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站。那么

对于淘宝网这样大规模的一个网站,我猜想大家一定会非常关心整个网站

都采用了什么样的技术、产品和架构,

也会很想了解在淘宝网中是否采用了

开源的软件或者是完全采用的商业软

件。那么下面我就简单的介绍一下淘

宝网中应用的开源软件。

对于规模稍大的网站来说,其 IT 必然是一个服务器集群来提供网站服

务,数据库也必然要和应用服务分开,有单独的数据库服务器。对于像淘宝

网这样规模的网站而言,就是应用也分成很多组。那么下面,我就从应用服

务器操作系统、应用服务器软件、Web Server、数据库、开发框架等几个方面

来介绍一下淘宝网中开源软件的应用。

操作系统

我们首先就从应用服务器的操作系统说起。一个应用服务器,从软件的

角度来说他的最底层首先是操作系统。要先选择操作系统,然后才是操作

系统基础上的应用软件。在淘宝网,我们的应用服务器上采用的是 Linux

操作系统。Linux 操作系统从 1991 年第一次正式被公布到现在已经走过

了十七个年头,在 PC Server 上有广泛的应用。硬件上我们选择 PC Server

而不是小型机,那么 Server 的操作系统供我们选择的一般也就是 Linux,

FreeBSD, windows 2000 Server 或者 Windows Server 2003。如果不准备

采用微软的一系列产品构建应用,并且有能力维护 Linux 或者 FreeBSD,再

加上成本的考虑,那么还是应该在 Linux和 FreeBSD之间进行选择。可以说,

现在 Linux 和 FreeBSD 这两个系统难分伯仲,很难说哪个一定比另外一个要

优秀很多、能够全面的超越对手,应该

是各有所长。那么在选择的时候有一个

因素就是企业的技术人员对于哪种系

统更加的熟悉,这个熟悉一方面是系统

管理方面,另外一方面是对于内核的熟

悉,对内核的熟悉对于性能调优和对操作系统进行定制剪裁会有很大的帮

助。而应用全面的优化、提升性能也是从操作系统的优化开始的。

应用服务器

在确定了服务器的硬件、服务器的操作系统之后,下面我们来说说业

务系统的构建。淘宝网有很多业务系统应用是基于 JEE 规范的系统。还

有一些是 C C++ 构建的应用或者是 Java 构建的 Standalone 的应用。那

么我们要选择一款实现了 JEE 规范的应用服务器。我们的选择是 JBoss

Applcation Server。JBoss AS 是 RedHat 的一个开源的支持 JEE 规范的应用

服务器。在几年前,如果采用 Java 技术构建互联网应用或者企业级应用,

在开源软件中的选择一般也就是 Apache 组织的 Tomcat、JBoss 的 JBoss

AS 和 Resin。严格意义上讲,Tomcat 和 Resin 并不能算是一个应用服务

文/曾宪杰

“要先选择操作系统,然后才是操作系统基础

上的应用软件。”

Page 10: Linux运维趋势 第14期 高性能电子商务网站

010

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

010

器,他们是实现了部分 J2EE 规范的一

个容器。而商业软件的选择就是 IBM

的 WebSphere 和 BEA 的 WebLogic。到

了现在,除了 JBoss AS 外,Apache 的

Geronimo,Sun 的 Glassfish 也都是很优

秀的 JEE 应用服务器。也给现在的开发人员提供了更多的选择。具体对于

目前 JEE 应用服务器的比较。这边就不在赘述。

在应用服务器前端,我们采用了 Web Server 做了一次转发,我们选择的

Web 服务器是大名鼎鼎的 Apache。几年前,Apache 几乎是 Linux 系统上

开源 Web Server 的唯一选择。那个时候虽然也有一些其他的开源的 Web

Server,但是从功能和稳定性上来说都无法和 Apache 相对。在今天来说,

Lighty 也会是一个非常好的选择。Lighty 是一个非常轻量级、占用内存资源

也比较少的Web Server。虽然功能上没有Apache强大,但是在不少场景下,

性能是非常出色、强于 Apache 的。而微软的 IIS,就只能工作在 Windows

的系统上了。并且使用 IIS 的话,基本上也就是选择了 ISAPI、ASP 或者

ASP.NET 进行 Web 应用的开发了。

数据库

说完了我们采用的操作系统、应用服务器、WebServer 后,下面就来谈

谈我们的数据库。在淘宝网的应用中,采用了两种关系型数据库管理系

统。一个是 Oracle 公司的 Oracle 10g,另外一个是 Sun MySQL 的 MySQL。

Oracle 是一款优秀的、广泛采用的商业数据库管理软件。有很强大的功能

和安全性,可以处理相对海量的数据。而 MySQL 是一款非常优秀的开源数

据库管理软件,非常适合用多台 PC Server 组成多点的存储节点阵列 ( 这

里我所指的不是 MySQL 自身提供的集群功能 ),每单位的数据存储成本也

非常的低廉。用多台 PC Server 安装 MySQL 组成一个存储节点阵列,通过

MySQL 自身的 Replication 或者应用自身的处理,可以很好的保证容错 ( 允

许部分节点失效 ),保证应用的健壮性

和可靠性。可以这么说,在关系数据库

管理系统的选择上,可以考虑应用本身

的情况来决定。

一个互联网应用,除了服务器的操作系统,Web Server 软件,应用服务器

软件,数据库软件外,我们还会涉及到一些其他的系统,比如一些中间件系

统、文件存储系统、搜索、分布式框架、缓存系统等等。在淘宝网,这些系统

都是自主开发的,没有采用目前商业的或者开源的产品。有些系统,会存在

着一些开源的产品或者商业产品。但是,考虑到淘宝网自己的需求和大并

发量的压力,这些系统都选择了自主开发框架。

前面谈的都是系统级的产品,下面我们说说开发框架的使用。可能有朋

友想问,作为一个如此大规模的网站,淘宝网的 Web 展现层采用的是什么

框架,是怎么实现的呢?曾经也有到淘宝的应聘者问过我这个问题,他问我

说是不是用的 struts。我告诉他说不是的。其实淘宝网的 Web 展现层的

框架用的不是 struts,不是 webwork,不是 spring mvc 等等。淘宝网的 Web

展现层的框架用的是集团内部自主开发的一套 Web 框架。这个框架能够

解决一些其他 Web 框架不能解决的、在淘宝的应用中又会出现并需要解

决的问题。在淘宝的多个应用中,也采用了一些开源的框架,比如 Spring、

iBatis、jBPM、Hessian、Mina 等等。这些开源软件的采用为我们构建应用系

统提供了很大的帮助。

原文 :

http://publish.itpub.net/o/2008-06-18/200806180707423.shtml

【编辑推荐】

高性能网站建设的 14 个原则

如何解决京东商城的性能瓶颈?

“几年前,Apache几乎是Linux系统上开源

Web Server的唯一选择。”

Page 11: Linux运维趋势 第14期 高性能电子商务网站

011

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

011

淘宝软件基础设施近年发展情况

本文内容主要从章文嵩博士的 PPT 分享《淘宝软件基础设施构建实践》

整理而来,其中一些淘宝开源项目的介绍整理自淘蝌蚪,淘宝核心系统团队

博客,以及淘宝的技术们对外的分享。

来源 :http://www.slideshare.net/wensongzhang/ss-8058883

截止到今年 5 月,淘宝的生产服务器约为 2 万台。为了确保大数据状态

下保持系统的可扩展性和性能,淘宝进行了如下工作 :

淘宝分布式文件系统(TFS)

http://code.taobao.org/p/tfs/wiki/

TFS,Taobao File System,淘宝内部使用的分布式文件系统,主要针对海

量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商

品描述等数据的存储。

特点

完全扁平化的数据组织结构,抛弃了传统文件系统的目录结构。

在块设备基础上建立自有的文件系统,减少 EXT3 等文件系统数据碎片

带来的性能损耗

单进程管理单块磁盘的方式,摒除 RAID5 机制

带有 HA 机制的中央控制节点,在安全稳定和性能复杂度之间取得平衡。

尽量缩减元数据大小,将元数据全部加载入内存,提升访问速度。

跨机架和 IDC 的负载均衡和冗余安全策略。

完全平滑扩容

淘宝分布式KV引擎(TAIR)

http://code.taobao.org/p/tair/wiki/

Tair 是一个分布式的 key/value 结构数据的解决方案,系统默认支持基

于内存和文件的存储引擎,对应于通常我们所说的缓存和持久化存储。

特点

基于对照表的灵活、良好的可扩展性

轻量级的 configserver

抽象的存储引擎层,支持添加新的存储引擎

自动的复制和迁移,对用户透明

多机架和多数据中心的支持

插件容器

数据的 version 支持

原子计数器支持

item 支持

整理/51CTO系统频道

Page 12: Linux运维趋势 第14期 高性能电子商务网站

012

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

012

千亿级别分布式数据库系统 OceanBase

http://code.taobao.org/p/OceanBase/wiki/

OceanBase 是一个支持海量数据的高性能数据库系统,实现了数千亿条

记录、数百 TB 数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、

广告、应用研发等部门共同完成。

淘宝的商品、交易、订单、购物爱好等数据通常是结构化的,并且数据之

间存在各种各样的关联,传统的关系数据库曾经是这些数据的最佳载体。

然而,随着业务的快速发展,这些数据急剧膨胀,记录数从几千万条增加到

数十亿条,数据量从百 GB 增加到数 TB,未来还可能增加到数千亿条和数百

TB,传统的关系型数据库已经无法承担如此海量的数据。OceanBase 解决不

断增加的结构化数据存储与查询的问题。

从 Eric Brewer 教 授 的 CAP( 一 致 性 C: Consistency, 可 用 性 A:

Availability,分区容错性 P: Tolerance of network Partition)理论角度分析,

作为电子商务企业,淘宝和其他公司的业务对一致性和可用性的要求高于

分区容错性,数据特征是数据总量庞大且逐步增加,单位时间内的数据更新

量并不大,但实时性要求很高。这就要求我们提供一套更加偏重于支持 CA

特性的系统,同时兼顾可分区性,并且在实时性、成本、性能等方面表现良

好。

OceanBase 现在已经应用于淘宝收藏夹,用于存储淘宝用户收藏条目和

具体的商品、店铺信息,每天支持 4 ~ 5 千万的更新操作。

MySQL优化

针对复制、同步、日志系统、单机效率、负载均衡方面的优化。详见

yufeng 的另一篇分享 :

http://www.slideshare.net/mryufeng/mysql-7583273

服务优化

针对 Apache/Nginx、HTTP 模块、Squid、LVS、HAProxy、TCP 方面的优化。

Nginx 优化方面,淘宝有一个开源的模块,大家可以参考一下 :

http://code.taobao.org/p/nginx_concat_module/

去年的 Velociy 大会上,朱照远(叔度)和王晓哲(清无)也分享过 Nginx

定制开发方面的经验。

Java环境优化

这方面可以参考淘宝 Java 中间件团队博客(注 :该团队已经在今年和淘

宝业务平台团队合并为通用产品团队):

http://rdc.taobao.com/team/jm/

Linux内核优化与定制

夸父通讯中间件

任卿对夸父通讯中间件进行过介绍 :

http://www.slideshare.net/openparty/ss-6680035

低功耗硬件平台

这方面可以参考淘宝最近公开的开源绿色计算项目 :

http://www.greencompute.org/

CDN系统

这方面也可以参考任卿的介绍 :

http://www.slideshare.net/colderboy17/cdn-9022813

Page 13: Linux运维趋势 第14期 高性能电子商务网站

013

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

013

Hadoop在eBay的应用

在 eBay 上存储着上亿种商品的信息,而且每天有数百万种的新商品增

加,因此需要用云系统来存储和处理 PB 级别的数据,而 Hadoop 则是个很好

的选择。

Hadoop 是建立在商业硬件上的容错、可扩展、分布式的云计算框架。

eBay 利用 Hadoop 建立了一个大规模的集群系统—Athena,它被分为五层

(如下图所示),下面从最底层向上开始介绍 :

1)Hadoop 核心层,包括

Hadoop 运行时环境、一些

通用设施和 HDFS,其中文

件系统为读写大块数据而

做了一些优化,如将块的大

小由 128MB 改为 256MB。

2)MapReduce 层,为 开

发和执行任务提供 API 和

控件。

3)数据获取层,现在数据获取层的主要框架是 HBase、Pig 和 Hive :

HBase 是根据 Google BigTable 开发的按列存储的多维空间数据库,通过

维护数据的划分和范围提供有序的数据,其数据储存在 HDFS 上。

Pig(Latin)是提供加载、筛选、转换、提取、聚集、连接、分组等操作的面

向过程的语言,开发者使用 Pig 建立数据管道和数据工厂。

Hive 是用于建立数据仓库的使用 SQL 语法的声明性语言。对于开发者、

产品经理和分析师来说,SQL 接口使得 Hive 成为很好的选择。

4)工具和加载库层,UC4 是 eBay 从多个数据源自动加载数据的企业

级调度程序。加载库有 :统计库(R)、机器学习库(Mahout)、数学相关库

(Hama)和 eBay 自己开发的用于解析网络日志的库(Mobius)。

5)监视和警告层,Ganglia 是分布式集群的监视系统,Nagios 则用来警告

一些关键事件如服务器不可达、硬盘已满等。

eBay 的企业服务器运行着 64 位的 RedHat Linux :

NameNode 负责管理 HDFS 的主服务器 ;

JobTracker 负责任务的协调 ;

HBaseMaster 负责存储 HBase 存储的根信息,并且方便与数据块或存取区

域进行协调 ;

ZooKeeper 是保证 HBase 一致性的分布式锁协调器。

用于存储和计算的节点是 1U 大小的运行 Cent OS 的机器,每台机器拥

有 2 个四核处理器和 2TB 大小的存储空间,每 38 ~ 42 个节点单元为一个

rack,这组建成了高密度网格。有关网络方面,顶层 rack 交换机到节点的带

宽为 1Gbps,rack 交换机到核心交换机的带宽为 40Gpbs。

这个集群是 eBay 内多个团队共同使用的,包括产品和一次性任务。这

里使用 Hadoop 公平调度器(Fair Scheduler)来管理分配、定义团队的任务

文/陆嘉恒

Page 14: Linux运维趋势 第14期 高性能电子商务网站

014

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

014

池、分配权限、限制每个用户和组的并行任务、设置优先权期限和延迟调度。

图 数据流

数据流的具体处理过程如上图所示,系统每天需要处理 8TB 至 10TB 的

新数据,而 Hadoop 主要用于 :

基于机器学习的排序,使用 Hadoop 计算需要考虑多个因素(如价格、列

表格式、卖家记录、相关性)的排序函数,并需要添加新因素来验证假设的

扩展功能,以增强 eBay 物品搜索的相关性。

对物品描述数据的挖掘,在完全无人监管的方式下使用数据挖掘和机器

学习技术将物品描述清单转化为与物品相关的键 / 值对,以扩大分类的覆

盖范围。

eBay 的研究人员在系统构建和使用过程中遇到的挑战及一些初步计划

有以下几个方面 :

可扩展性,当前主系统的 NameNode 拥有扩展的功能,随着集群的文件系

统不断增长,需要存储大量的元数据,所以内存占有量也在不断增长。若是

1PB 的存储量则需要将近 1GB 的内存量,可能的解决方案是使用等级结构

的命名空间划分,或者使用 HBase 和 ZooKeeper 联合对元数据进行管理。

有效性,NameNode 的有效性对产品的工作负载很重要,开源社区提出了

一些备用选择,如使用检查点和备份节

点、从 Secondary NameNode 中转移到

Avatar 节点、日志元数据复制技术等。

eBay 研究人员根据这些方法建立了自

己的产品集群。

数据挖掘,在存储非结构化数据的

系统上建立支持数据管理、数据挖掘

和模式管理的系统。新的计划提议将

Hive 的元数据和 Owl 添加到新系统中,

并称为 Howl。eBay 研究人员努力将这

个系统联系到分析平台上去,这样用户可以很容易地在不同的数据系统中

挖掘数据。

数据移动,eBay 研究人员考虑发布数据转移工具,这个工具可以支持在

不同的子系统如数据仓库和 HDFS 之间进行数据的复制。

策略,通过配额实现较好的归档、备份等策略(Hadoop现有版本的配额需

要改进)。eBay 的研究人员基于工作负载和集群的特点对不同的集群确定

配额。

标准,eBay 研究人员开发健壮的工具来为数据来源、消耗情况、预算情

况、使用情况等进行度量。

同时 eBay 正在改变收集、转换、使用数据的方式,以提供更好的商业智

能服务。

本文摘录自《Hadoop 实战》第 3 章。

在线样章阅读 :http://book.51cto.com/art/201110/298605.htm

Page 15: Linux运维趋势 第14期 高性能电子商务网站

015

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

015

NoSQL数据库笔谈——应用篇

eBay 架构经验

1、 Partition Everything 切分万物

2、 Asynchrony Everywhere 处处异步

3、 Automate Everything 全部自动

4、 Remember Everything Fails 记录失败

5、 Embrace Inconsistency 亲不同是谓大同

6、 Expect (R)evolution 预言演变

7、 Dependencies Matter 重视依赖

8、 Be Authoritative 独断专行

9、 Never Enough Data

10、Custom Infrastructure 自定义基础设施

淘宝架构经验(via dbanotes.net)

1、适当放弃一致性

2、备份和隔离解决稳定性问题

3、分割和异步解决性能问题 ( 类似 eBay 的 Asynchrony Everywhere)

4、自动化降低人力成本 ( 类似 eBay 的 Automate Everything)

5、产品化管理

Flickr架构经验(via dbanotes.net)

使得机器自动构建 (Teach machines to build themselves)

使得机器自监控 (Teach machines to watch themselves)

使得机器自修复 (Teach machines to fix themselves)

通过流程减少 MTTR (Reduce MTTR by streamlining)

Twitter运维经验(via timyang.net)

Twitter 没有自己的硬件,都是由 NTTA 来提供,同时 NTTA 负责硬件相

关的网络、带宽、负载均衡等业务,Twitter operations team 只关注核心的业

务,包括 Performance,Availability,Capacity Planning容量规划,配置管理等,

这个可能跟国内一般的互联网公司有所区别。

运维经验

Metrics

Twitter 的监控后台几乎都是图表 (critical metrics),类似驾驶室的转速

表,时速表,让操作者可以迅速的了解系统当前的运作状态。联想到我们

做的类似监控后台,数据很多,但往往还需要浏览者 做二次分析判断,像

这样满屏都是图表的方法做得还不够,可以学习下这方面经验。 据 John

介绍可以从图表上看到系统的瓶颈 - 系统最弱的环节 (web, mq, cache,

整理/颜开

Page 16: Linux运维趋势 第14期 高性能电子商务网站

016

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

016

db?)

根据图表可以科学的制定系统容量规划,而不是事后救火。

配置管理

每个系统都需要一个自动配置管理系统,越早越好,这条一整理发到

Twitter 上去之后引起很多回应。

Darkmode

配置界面可以 enable/disable 高计算消耗或高 I/O 的功能,也相当于优

雅降级,系统压力过大时取消一些非核心但消耗资源大的功能。

进程管理

Twitter 做 了 一 个”Seppaku” patch, 就 是 将 Daemon 在 完 成 了 n 个

requests 之后主动 kill 掉,以保持健康的 low memory 状态,这种做法据了

解国内也有不少公司是这样做。

硬件

Twitter 将 CPU 由 AMD 换成 Xeon 之后,获得 30% 性能提升,将 CPU 由

双核 /4 核换成 8 核之后,减少了 40% 的 CPU, 不过 John 也说,这种升级

不适合自己购买硬件的公司。

代码协同经验

Review 制度

Twitter 有上百个模块,如果没有一个好的制度,容易引起代码修改冲突,

并把问题带给最终用户。所以 Twitter有一强制的 source code review制度 ,

如果提交的代码的 svn comment 没有”reviewed by xxx”, 则 pre-commit

脚本会让提交失败 , review 过的代码提交后会通过自动配置管理系统应

用到上百台服务器上。 有 @xiaomics 同学在 Twitter 上马上就问,时间成

本能否接受?如果有紧急功能怎么办?个人认为紧急修改时有两人在场,

一人修改一人 review 也不是什么难事。

部署管理

从部署图表可以看到每个发布版本的 CPU 及 latency 变化,如果某个新

版本 latency 图表有明显的向上跳跃,则说明该发布版本存在问题。另外在

监控首页列出各个模块最后 deploy 版本的时间,可以清楚的看到代码库的

现状。

团队沟通

Campfire 来协同工作,campfire 有点像群,但是更适合协同工作。对于

Campfire 就不做更多介绍,可参考 Campfire 官方说明。

Cache

Memcache key hash, 使用 FNV hash 代替 MD5 hash,因为 FNV 更快。

开发了 Cache Money plugin(Ruby), 给应用程序提供 read-through,

write-through cache, 就像一个 db 访问的钩子,当读写数据库的时候会自

动更新 cache, 避免了繁琐的 cache 更新代码。

“Evictions make the cache unreliable for important configuration

data”,Twitter 使用 memcache 的一条经验是,不同类型的数据需放在不同

的 mc, 避免 eviction,跟作者前文 Memcached 数据被踢 (evictions>0) 现象

分析中的一些经验一致。

Memcached SEGVs, Memcached 崩溃 (cold cache problem) 据称会给这

种高度依赖 Cache 的 Web 2.0 系统带来灾难。

本文摘录自《NoSQL 数据库笔谈》的应用篇。

原文 :http://www.yankay.com/nosql 数据库笔谈 v0-2/

Page 17: Linux运维趋势 第14期 高性能电子商务网站

017

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

017

构建高安全电子商务网站之自动备份

电子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份、异

地备份架构。其中 Linux 服务器的备份方案非常多,本文介绍一个大众化

适用的解决方案,通过编写 Shell 脚本来完成自动备份。本架构包括备份网

站文件、数据库,自动本地备份并 FTP 上传备份脚本,完成相应本地备份、异

地备份,实现双层备份解决方案。

要点 :

1. 全自动完成网站文件及数据库备份。

2. 编写 Shell 脚本来完成自动备份。

3. 同时进行自动本地 / 异地双备份,FTP 上传备份。

4.Linux 服务器的备份解决方案。

5. 包括备份网站文件,网站程序文件、数据文件,MYSQL 数据库。

6. 定期定时自动完成备份。定期删除旧备份,这里是自动删除 30 天前

备份,复用利用备份空间。

一、准备工作 :

1. 软件安装

需要提前在 Linux 服务器安装好 lftp,lftp 功能上比较强大,CentOS 直接

执行 :yum install lftp,Debian 执行 :apt-get install lftp 。

2. 备份目录建立

需要在 Linux 服务器上创建 /home/backup/ 目录。

3.FTP 异地备份 IP 账号 密码

需要在异地 FTP 上创建 backup 目录。

如果 Linux 服务器上数据库不多的话使用网络基础服务商的存储空间就

可以。也可以用专门的备份服务器。可根据应用的大小,数据量的大小,网

络状况,和实际的网络资源,硬件资源灵活支配。

二、架构图

三、网站及数据库自动本地备份并 FTP 上传备份 Shell 脚本

脚本与注释 :

文/Jimmy Li

Page 18: Linux运维趋势 第14期 高性能电子商务网站

018

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

018

#!/bin/bash

#Funciont: Backup website and mysql database

#Author: Jimmy Li

#Website: http://jimmyli.blog.51cto.com/

#IMPORTANT!!!Please Setting the following Values!

######~Set Directory you want to backup~######

# 一般按我的都是在 /data/wwwroot/ 下面所有直接写了需要备份的目录。

# 可以继续再加:Backup_Dir2= 你的目录,等等

Backup_Dir1=/data/wwwroot/www.zuihuasuan8.net

######~Set MySQL UserName and password~######

# 最好是 root,其他用户可能因为权限问题无法导出部分数据库。

MYSQL_UserName=root

MYSQL_PassWord= 你的 mysql 数据库 root 密码

######~Set MySQL Database you want to backup~######

# 要备份的数据库,可以继续再加:Backup_Database_Name2,等等

Backup_Database_Name1=www.zuihuasuan8.net

######~Set FTP Information~######

FTP_HostName=www.zuihuasuan8.net

FTP_UserName=www.zuihuasuan8.net

FTP_PassWord=www.zuihuasuan8.net

FTP_BackupDir=www.zuihuasuan8.net—— backup // 目录需要提前创建好

#Values Setting END! #####

TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz

TodayDBBackup=db-*-$(date +"%Y%m%d").sql

OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz

OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql

tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /

home/wwwroot/ $Backup_Dir1 --exclude=soft

# 上面的 --exclude= 不备份的目录。如果在前面加了 Backup_Dir2,则再

# 加 tar zcf /home/backup/www-$Backup_Dir2-$(date +"%Y%m%d").tar.gz -C

#/home/wwwroot/ $Backup_Dir2 。如果多余则删除多余行。

/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord

$Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-

$(date +"%Y%m%d").sql

# 如果在前面加了 Backup_Database_Name2,则再加 /usr/local/mysql/

#bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_

#Database_Name2 > /home/backup/db-$Backup_Database_Name2-$(date

#+"%Y%m%d").sql 。如果多余则删除多余行。

rm $OldWWWBackup

rm $OldDBBackup

### 删除 30 天前的备份 ###

cd /home/backup/

### 下面为自动上传部分,不得不说 lftp 很强大,抛弃 ftp 吧 ####

lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF

cd $FTP_BackupDir

mrm $OldWWWBackup

mrm $OldDBBackup

mput $TodayWWWBackup

mput $TodayDBBackup

bye

EOF

下载脚本,将脚本放到 /root/ 下面,按上面的注释修改脚本中的参数,

并保存。执行 :chmod +x /root/backup.sh 为脚本添加执行权限,执行 :

crontab -e 添加定时执行

0 3 * * * /root/backup.sh

凌晨 3 点自动执行脚本。

本文有删节,完整内容见原文 :

http://jimmyli.blog.51cto.com/3190309/691069

Page 19: Linux运维趋势 第14期 高性能电子商务网站

019

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

019

老板要省钱 小公司如何部署实施Linux集群网站

其实在许多小公司和小企业里,尤其是牵涉到电子商务和电子广告类的

网站,他们的网站也要求作负载均衡高可用的 Linux 集群,但由于成本的制

约,老板都会要求系统架构师设计的方案能够用最少的钱实现这个要求,作

为系统架构师的我们,应该如何实现这个要求呢?

如果网站是放在 IDC机房托管,而机房最前面也没有硬件防火墙防护时,

这时候大家尽量做好流量监控的工作,我一般会在主 Nginx/HAProxy 上安

装 MRTG+Nload 软件来对流量进行监控,Nload 可以对流量进行即时监控,

它的安装也是很简单的,我们先安装好 RPMForege,地址为 http://pkgs.

repoforge.org/rmpforge-release。这个安装成功以后,我们可以通过命令

yum -y install nload 很轻松的安装 nload。输入此命令后,nload 软件会很

直观的显示流量的即时状态,上半部分 ncoming 是进入网卡的流量,下半部

分 Outgoing 是从这块网卡出去的流量,每部分都有当前流量(Curr)、平均流

量(Avg)、最小流量(Min)、最大流量(Max)、总流量(Ttl)。由于此软件比

较直观,我用它来取代之前的即时流量监控软件 iptraf,Nload 的工作界面如

右图所示。

许多对集群感兴趣的朋友经常问

我,如果网站要部署负载均衡高可用的

Linux 集群方案,而公司又想用最节省

成本的方式来实施的话,一般需要几台服务器呢?我的回答是四台,即 2+2

架构,最前面是二台 Nginx/HAProxy+Keeplaived 机器,后面是二台配置比

较好的 Web 机器,MySQL 数据库采用一主一从的方式,分别放在二台 Web

机器上,监控的 Nagios 部署在从 Nginx/HAProxy 机器上,流量监控我一般

放主 Nginx/HAProxy,软件采用的是 MRTG+Nload 的方式,服务器之间的数

据同步我采用的是 rsync+inotify 的方

法,当然更多时候,我采用的是纯 rsync

方式,这样是避免网站有大文件发生改

动的时候会产生频繁读盘的麻烦 ;当然

了,如果大家的公司对文件服务器有更高要求的时候 ( 比如图片类型的 ),

我们可以考虑再增加二台服务器,做成 DRBD+Heartbeat+NFS 的方式 ;如果

有海量文件需要存储的话,我们可以考虑用 MFS,当然这样也是比较耗机器

文/抚琴煮酒

“LVS在性能方面是最好的,尤其是后面的节

点超过10台时,它的性能是最优异的。”

Page 20: Linux运维趋势 第14期 高性能电子商务网站

020

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

专题Special

020

的。

像类似以上的小公司集群架构里,我们是如何解决 session 同步的问题

呢?我们可以采用 Nginx 的 ip_hash 和 HAProxy 的 balance source 机制,它

们的原理比较类似,都会让某一客户机在相当长的一段时间内只访问固定

的后端的某台真实的 Web 服务器,这样会话就会得以保持,我们在网站页

面进行 login 的时候,就不会在二台 Web 服务器之间跳来跳去了,自然也不

会出现登陆一次后网站又提醒你没有登陆,需要重新登陆的情况。

另外,小公司的 Web 服务器我们至少有二种选择 :一种是 Apache,另一

种是 Nginx,在流量和并发不大的环境下,我们完全可以选择 Apache 作为我

们的 Web 服务器,虽然它的抗并发能力不高,但它的稳定性是最好的,我的

许多电子商务网站都是基于 Apache ;而大流量大并发的环境,我比较倾向

于 Nginx。

MySQL 在这里我用的就是一主一从的设计,虽然很多朋友觉得这种设计

比较简单,但事实证明,它也最稳定的。我的电子商务网站也是采用这种

架构 , 几年下来,从没有因为数据库的故障发生过丢单现象,网站上线的

前期阶段,我们可以通过 PHP 程序,把后台的查询功能的入口选择 Slave 机

器,这样可以大大减少主数据库的压力 ;另外,从 MySQL 机器并非仅仅只起

一个备份和备机的作用,我们完全通过 PHP 程序将后台的复杂查询转到从

MySQL 机器上。当然了,MySQL 的主从复制状态监控也是非常重要的,我

一般是通过 Nagios 和 SHELL 脚本双监控的方式。

作者介绍 :余洪春(博客·微博),《构建高可用 Linux 服务器》一书作者,

一拍网系统架构师、资深项目管理工程师,ChinaUnix 集群和高可用版版主。

本文有删节,完整内容见原文 :

http://network.51cto.com/art/201111/300804.htm

【特别推荐】

大话IT第十七期

——体验Ubuntu 11.102011 年 10 月 13 日,Ubuntu 11.10 发布。作为采用 Unity 桌面的

第二版 Ubuntu,很多用户都关注这次更新带来了哪些改进。有关新特

性的介绍,相关文章已经不少 ;不过对于用惯了 Windows 的用户,或

者习惯了平板电脑的用户而言,Ubuntu 11.10 是否能够吸引他们的

关注?

本期 IT 听听看中,我们选取了几位媒体界的朋友作为典型用户,

收集了他们对 Ubuntu 11.10 的使用感受。

在线收看 :http://os.51cto.com/art/201110/298204.htm

大话 IT 下载专题 :http://down.51cto.com/zt/99

本期参与录制 :嘉文、周达洋、柴莎莎、王玉平、杨赛

本期编导 :鲜橙

本期主持 :嘉文

《IT 听听看》微博 :http://t.sina.com.cn/itttkan

有关 IT 听听看之大话 IT :

由一群喜欢音频的 IT 从业者自发性建立的栏目,针对 IT 业界或技

术点进行轻松的调侃和剖析,目地是让大家再轻松之余了解到 IT 信

息,让 IT 专业人士和普通人都能听出快乐是团队目标。

Page 21: Linux运维趋势 第14期 高性能电子商务网站

021

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

运维DBADatabase

021

一种MySQL主从同步加速方案

一、问题起源

MySQL 的主从同步一直有从库延迟的问题,原因简单描述如下 :

1、 MySQL 从库上有一个 IO 线程负责从主库取 binlog 到本地。另外有

一个 SQL 线程负责执行这些本地日志,实现命令重放 ;

2、 正常网络状况下 IO 线程没有性能问题(这个待会会用到),问题是

SQL 线程只有一个,更新速度跟不上。所以经常会看到从库的 CPU idle 很

高,但同步性能就是上不去。

二、方案雏形

单线程的 SQL 线程是造成这个问题的主要原因。比较直接的想法是把

它改成多线程版本,这个据说官方版本开发中,其实我们也有一个这样的

patch,但是直接写大片代码在线上提供服务的 slave 机器上这种事儿,都会

因为担心稳定性而很难推动(写 patch 的和运维的同学,你们懂的)。

所以打算用一个“第三方”工具中转,来实现多线程同步。基本结构如图 :

说明 :

1、这些 transfer 从 master 上各自同步一部分的数据,分别独立更新

slave。多进程、多线程均可。

2、Transfer 与 master 之间异步更新日志,transfer 与 slave 之间同步更新

数据。

3、从这可以看出这个方案的缺点之一 :更新能够被独立分开。比较直观

的想法是,按照表分。

三、关于 transfer

作为这个关键的转发工具 transfer,需要提供如下功能 :

1、能够指定同步 master 中的哪部分数据,并且能够方便地修改这个配置

以应对 master 的加表需求。

2、支持 stop slave、start slave。支持快速切换到新主库的 change master

命令。

3、能够记录读取点,transfer 自己重启或 master 重启后能够按照记录点

继续读后面的 binlog。

4、能够记录分发点,transfer 自己重启或 slave 重启后能够按照记录点继

文/丁林.tb

Page 22: Linux运维趋势 第14期 高性能电子商务网站

022

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

运维DBADatabase

022

续同步给 slave。

用起来就会发现还有好多要求……

四、方案实现

Transfer 的这么多功能,自己造轮子就累了。这里直接用 MySQL 来充当

此角色。为了方便描述,下文还将之称为 transfer。Transfer 更新 slave 在

功能上可以使用 federated 引擎,但由于其纠结的实现导致性能上达不到要

求,因此在 MySQL 框架层中作了一点修改,读到同步日志后,直接发送给

slave。

方案简单描述如下 :

1、Slave 机器上搭另外的若干个 MySQL(transfer),将其设为 Master 的从

库,且设置 replicate-do-table, 每个 transfer 承担一部分的表。

2、所有 Transfer 的更新目标都设置为 slave,其更新方式是读到日志后直

接 mysql_real_query 执行到 slave 上。

从这可以看出这个方案的缺点之二 :只能支持 statement 格式的同步方

式。其实 row 也能支持,后面再说。

五、仍然延迟?

在 transfer 放弃 federated 引擎改用直接发送后,性能提升不少,从库同步

性能增加一倍,但延迟还很大。

发现这个时候 slave 的机器 cpu 已经很忙了,idle 20% 以下——这个算

是好消息,总比 idle 很高但性能上不去好。

实际上是因为每个 transfer,虽然设置只同步其中的部分表,但在实现上

是 IO 线程把 master 上的所有命令都备份到本地,然后在 SQL 线程执行的

时候再判断,若不符合 replicate-do-table,再放弃。

这样存在的问题,是 n 个 transfer,磁盘写了 n 倍,更严重的是导致 SQL

线程空转。

我们上文提到整个流程中 IO 线程是比较空闲的,因此修改 IO 线程逻辑,

在写入磁盘前先判断,若不符合本 transfer 的 replicate-do-table 设置,不写

盘,直接放弃。

六、效果

从库的 QPS 由于线程切换会有抖动,但总的执行时间与主库相同。从库

的 cpu idle 下降,与主库几乎同时恢复到 100。

七、小结

1、要求在 slave 机器上多配置 n 个 transfer(是否在从库上均可)

2、目前只能支持 statement 的 binlog 格式,实际上 row 可以支持,方案定

了,开发计划中。

3、跨表更新的语句,会按照其更新的第一个表,分发到唯一一个 transfer,

没有重复更新的问题,但有时序性问题。

方案的好处 :

1、功能比较齐全。直接使用 MySQL,原有的管理功能基本都能用,主库

从库重启 / 换库的代价比较小。

2、开发量小,只在 transfer 上修改两处,不包括配置读取部分,300 行以内

3、风险相对小,不直接修改 master 和 slave 上的代码,线上容易接收。

原文 :http://dinglin.iteye.com/blog/1179574

另外,本方案有改进版本,作者建议一并阅读 :

http://dinglin.iteye.com/blog/1187154

Page 23: Linux运维趋势 第14期 高性能电子商务网站

023

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

工具Tools

023

用SSHGuard免费工具帮你保护服务器

我之前已介绍了 fail2ban 和 logcheck 这两

款工具可以扫描日志,并且根据你创建 / 修

改的规则,采取相应的操作 ;你通常可以修改

iptables 规则,阻止针对你服务器发动的主动

攻击,或者要是日志里面发现什么异常,就发

警示信息给你。

今 天 我 们 来 介 绍 一 款 类 似 的 工 具

sshguard,它与上面另外两款工具的不同之处

在于,它是用 C 编写的,所以它在运行时占用

的内存和处理器资源比较少,但仍能收到同

样的效果。

那么,sshguard 又有什么样的本领呢?

简单地说,它可以接收日志消息,可以根据日志消息来检测网络服务何

时遭到攻击,并且阻止服务攻击者的地址 ;一段时间过后,它会解禁。

完整地说,sshguard 在机器上作为一个很小的后台驻留程序来运行,能

够接收日志消息(可接收来自诸多途径的消息,比如来自系统日志)。如果

它确定了 X 地址对 Y 服务造成危害,就会启动机器里面防火墙(注 :防火墙

须得到支持)中的规则,以阻止 X 地址。

sshguard 阻止 X 地址的状态会保持一段时间,但是之后会自动解禁。

请注意 :尽管名称很容易让人误解,但是 sshguard 在默认情况下能够阻

止针对许多服务的攻击,不仅仅是针对 SSH

的攻击,还能针对几种 ftpd、Exim 和 dovecot

等服务的攻击。它能够适用于各大防火墙系

统,并且提供对 IPv6、白名单、悬挂和消息验

证等功能的支持。

安装

sshguard 采用宽容的 BSD 许可证来发行 :

你可以使用、修改和再发行软件,风险自负,

可以用于任何环境(包括商业环境),但前提

是你得保留在里面发现的原始版权通知。软

件在最常用的 GNU/Linux 发行版的主存储库

中发行,面向某个 *BSD 系统,但是你也可以

从下载页面(http://www.sshguard.net/download/)下载源代码。

要把 sshguard 安装到 Debian(或 Ubuntu 等 .deb 其他发行版)上,只要从

终端运行下列命令 :

sudo aptitude install sshguard

设置和配置

Sshguard 与系统相连的点有两个 :

日志系统(sshguard 如何接收需要监控的日志消息)

文/Linuxaria编译/布加迪

Page 24: Linux运维趋势 第14期 高性能电子商务网站

024

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

工具Tools

024

防火墙(sshguard 如何阻止异常的地址)

自 版 本 1.5 以 后,sshguard 就 随 带 Log Sucker。 借 助 Log Sucker,

SSHGuard 可以积极主动地获取日志条目,并且透明地处理一些事件,比如

轮转日志文件以及文件消失和重现。

在官方的说明文档页面,附有针对许多不同防火墙的操作说明,我将遵

照 netfilter/iptables 的操作说明。

sshguard 并没有配置文件。需要完成的所有配置就是在 iptables 的

INPUT 链中创建一个名为“sshguard”的链,sshguard 就会自动插入规则,丢

弃来自坏主机的数据包 :

# 针对普通的 IPv4 支持 :

iptables -N sshguard

# 针对 IPv6 的支持 :

ip6tables -N sshguard

现在,更新 INPUT 链,以便它能将所有流量传送到 sshguard,用 �dport 指

定你想用 sshguard 来保护的服务的所有端口。如果你想阻止攻击者将任何

流量发送到主机,只要完全删除这个选项即可 :

# block any traffic from abusers(阻止来自攻击者的任何流量)

iptables -A INPUT -j sshguard

ip6tables -A INPUT -j sshguard

-- or --

# block abusers only for SSH, FTP, POP, IMAP services (use

"multiport" module)(阻止攻击者,只允许 SSH、FTP、POP 和 IMAP 服务,使

用“multiport”模块)

iptables -A INPUT -m multiport -p tcp --destination-ports

21,22,110,143 -j sshguard

ip6tables -A INPUT -m multiport -p tcp --destination-ports

21,22,110,143 -j sshguard

如果你目前没有使用 iptables,只想让 sshguard 建立并运行起来,又不对

你的系统造成任何进一步的影响,下面这些命令就会创建并保存 iptables 配

置,除了允许 sshguard 运行外,绝不会进行任何操作 :

# iptables -F

# iptables -X

# iptables -P INPUT ACCEPT

# iptables -P FORWARD ACCEPT

# iptables -P OUTPUT ACCEPT

# iptables -N sshguard

# iptables -A INPUT -j sshguard

# /etc/rc.d/iptables save

小结

要让基本安装的 sshguard 建立并运行起来,只要完成上面这几个步骤,

它会帮助你让你的 ssh、ftp 及其他后台驻留程序更安全一点。

原文 :Protect your server with SSHGuard

译文 :http://server.51cto.com/sCollege-300737.htm

Page 25: Linux运维趋势 第14期 高性能电子商务网站

025

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

新鲜事Freshy

025

OpenStack实践之旅:安装配置篇

OpenStack是一套用来管理虚拟机的平台软件。它不是一个单一的软件,

而是集成了很多个组件用来协同合作。简单的来说,譬如有十台服务器,

在 VMware 的情况下,我们在每台服务器上安装 esx 或者 esxi,然后装一台

vcenter,在 vcenter的管理界面里把十台服务器的 esx通过域名或者 ip加入,

就能在 vcenter 里面统一管理。类似的,红帽也有 virsh 这种管理虚拟机的

程序。

在这里我不介绍其他的云平台的管理软件,只是介绍如何从技术角度来

使用 OpenStack。如果要作为生产环境的话,你还需要考虑更多,譬如架构,

网络拓扑,存储的方式,节点的分布等等。

在本篇文章里,我将介绍采用 ec2 兼容认证的方式 。所有组件安装在

一台 controller 上。

关键字定义

控制端 :类似 vcenter 的管理系统。

节点 :类似安装了 esx 的服务器。

nova 组件 :安装在节点上,让节点能按照控制端的命令来操作节点上的

虚拟机或者存储。

glance 组件 :用来管理镜像。

环境准备

ubuntu 11.10,服务器双网卡

步骤

安装完基本的操作系统后

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install bridge-utils # 安装网桥软件

配置网络接口

在这里我的架构是 eth0 连接了外网,即我们可以访问的网口。eth1 做了

网桥,和节点之间通过一个交换机连接。这样的好处是,内部节点和控制器

的流量都走 br100 的交换机,而不会影响虚拟机上的应用使用的网络。

$ sudo vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address 192.168.200.21

netmask 255.255.255.0

network 192.168.200.0

broadcast 192.168.200.255

gateway 192.168.200.10

auto br100

iface br100 inet static

bridge_ports eth1

文/livemoon

Page 26: Linux运维趋势 第14期 高性能电子商务网站

026

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

新鲜事Freshy

026

bridge_stp off

bridge_maxwait 0

bridge_fd 0

address 10.200.200.2

netmask 255.255.255.0

$ sudo /etc/init.d/networking restart

初期准备工作做好,接下来就是要安装关于 nova,glance 等组件

$ sudo apt-get install -y rabbitmq-server # 安装 MQ 消息組件

$ sudo apt-get install -y python-greenlet python-mysqldb

接下来安装各个 nova 组件及依赖

$ sudo apt-get install nova-volume nova-vncproxy nova-api nova-ajax-console-

proxy

$ sudo apt-get install nova-doc nova-scheduler nova-objectstore

$ sudo apt-get install nova-network nova-compute

$ sudo apt-get install glance

安装 euca2ools 和 unzip

$ sudo apt-get install -y euca2ools unzip

接 下 来 我 们 安 装 数 据 库,这 里 我 选 择 了 MySQL,其 实 个 人 觉 得

PostgreSQL 更好。

$ sudo su -

# MYSQL_PASS=nova 设定 mysql 的密码和 nova 数据库的密码

# cat <<MYSQL_PRESEED | debconf-set-selections

>mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS

>mysql-server-5.1 mysql-server/root_password_again password $MYSQL_

PASS

>mysql-server-5.1 mysql-server/start_on_boot boolean true

>MYSQL_PRESEED

# apt-get install -y mysql-server

# exit 退出 root 环境

$ sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf 修改 my.cnf 配置文件

$ sudo service mysql restart

$ MYSQL_PASS=nova 在普通用户环境下把密码再次设置一下变量

$ NOVA_PASS=notnova 这是 nova 数据库的密码

$ sudo mysql -uroot -p$MYSQL_PASS -e 'CREATE DATABASE nova;' 创建

一个名字为 nova 的数据库,这裡建议新手使用 nova 的名字,如果这裡

换别的名字,那麽在 nova 的配置文件裡面也需要更改

$ sudo mysql -uroot -p$MYSQL_PASS -e "GRANT ALL PRIVILEGES ON *.*

TO 'nova'@'%' WITH GRANT OPTION;"

$ sudo mysql -uroot -p$MYSQL_PASS -e "SET PASSWORD FOR 'nova'@'%'

= PASSWORD('$NOVA_PASS');"

至此,nova,glance 的安装部分完成,接下来是配置。

(配置部分略)

由于 nova 目前发展的很快,diablo 的 release 版本功能可以完成日常的

一些需求。但是开发版本的 nova 可以更好的结合 keystone,novaclient,

dashboard 等一些其他的项目,使得 OpenStack 更加健全。有兴趣的朋友,可

以在生产环境使用 repo 的安装方式,在测试环境测试开发版本。我本人由

于在生产环境中使用了 git 方式安装的开发版本,因此后续更加完善的整

合,我都将以开发版本的形式出现。

本文有删节,完整内容见原文 :

http://os.51cto.com/art/201110/299703.htm

Page 27: Linux运维趋势 第14期 高性能电子商务网站

027

《Linux 运维趋势》投稿信箱 : [email protected]

杂志订阅 : http://os.51cto.com/art/201011/233915.htm

51CTO 系统频道:http://os.51cto.com

技巧Tips

027

榨干服务器:让进程运行在指定的CPU

我的 Linode 十分繁忙,在跑一些密集操作数据库的 Rake 任务时尤其如

此。但我观察发现,Linode 服务器的 4 核 CPU,只有第 1 个核心(CPU#0)

非常忙,其他都处于 idle 状态。若能将 CPU#0 分担的任务摊派到其他 CPU

核心上,可以预见,系统的处理能力将有更大的提升。

两个名词

SMP (Symmetrical Multi-Processing) :指在一个计算机上汇集了一组处

理器 ( 多 CPU),各 CPU 之间共享内存子系统以及总线结构。

CPU affinity :中文唤作“CPU 亲和力”,是指在 CMP 架构下,能够将一个

或多个进程绑定到一个或多个处理器上运行。

一、在 Linux 上修改进程的“CPU 亲和力”

在 Linux 上,可以通过 taskset 命令进行修改。以 Ubuntu 为例,运行如下

命令可以安装 taskset 工具。

# apt-get install schedutils

对运行中的进程,文档上说可以用下面的命令,把 CPU#1 #2 #3 分配

给 PID 为 2345 的进程 :

# taskset -cp 1,2,3 2345

但我尝试没奏效,于是我关掉了 MySQL,并用 taskset 将它启动 :

# taskset -c 1,2,3 /etc/init.d/mysql start

对于其他进程,也可如此处理(nginx 除外,详见下文)。之后用 top 查看

CPU 的使用情况,原来空闲的 #1 #2 #3,已经在辛勤工作了。

二、配置 nginx 绑定 CPU

刚才说 nginx 除外,是因为 nginx 提供了更精确的控制。

在 conf/nginx.conf 中,有如下一行 :

worker_processes 1;

这是用来配置 nginx 启动几个工作进程的,默认为 1。而 nginx 还支持一

个名为 worker_cpu_affinity 的配置项,也就是说,nginx 可以为每个工作进

程绑定 CPU。我做了如下配置 :

worker_processes 3;

worker_cpu_affinity 0010 0100 1000;

这里 0010 0100 1000 是掩码,分别代表第 2、3、4 颗 cpu 核心。

重启 nginx 后,3 个工作进程就可以各自用各自的 CPU 了。

三、刨根问底

如果自己写代码,要把进程绑定到 CPU,该怎么做?可以用 sched_

setaffinity 函数。在 Linux 上,这会触发一次系统调用。

原文 :http://www.blogkid.net/archives/2670.html

文/张磊

Page 28: Linux运维趋势 第14期 高性能电子商务网站

招募启事《Linux 运维趋势》的建设需要您的加入!

您可以通过如下方式参与我们杂志的建设 :

1、推荐文章

无论是您在互联网上看到的好文章,还是您自己总结 / 整理的资

料 ;无论是英文还是中文 ;无论是入门的还是高端的,都欢迎推荐!

您可以直接在《Linux 运维趋势》新浪微群中分享 :

http://q.weibo.com/121303

2、投稿

如果您愿意与大家分享您技术经验的热诚,那么欢迎您的投稿!

原创或译文均可,稿件在 51CTO 首发可领取稿酬 :)

投稿信箱 :[email protected]

3、推广与意见

如果您喜欢我们的杂志,认为这本杂志对于您的工作有所帮助,请

向您的 Linux 好友、同事们推荐它!如果您觉得这份杂志还有什么地

方需要改进或补充,也希望您能够提出您的宝贵意见!

反馈可至《Linux 运维趋势》新浪微群 :

http://q.weibo.com/121303

或在新浪微博

@51CTO 系统频道

本刊发布日期 :每个月的第二个星期五

您可以通过如下方式检查新刊发布 :

1、电子邮件订阅 :http://os.51cto.com/art/201011/233915.htm

2、RSS 订阅 :http://www.51cto.com/php/rss.php?typeid=777

3、iPad 订阅 :在《读览天下》客户端中可以搜索下载新刊到本地阅读!

本期杂志封面由 魏峰 制作

《Linux 运维趋势》是由 51CTO 系统频道策划、针对 Linux/Unix 系

统运维人员的一份电子杂志,内容从基础的技巧心得、实际操作案例

到中、高端的运维技术趋势与理念等均有覆盖。

《Linux 运维趋势》是开放的非盈利性电子杂志,其中所有内容均收

集整理自国内外互联网(包含 51CTO 系统频道本身的内容)。对于来

自国内的内容,编辑都会事先征求原作者的许可(八卦,趣闻 & 数字

栏目例外)。如果您认为本杂志的内容侵犯到了您的版权,可发信至

[email protected] 进行投诉。