SlideShare a Scribd company logo
1 of 28
Download to read offline
目录
杂志订阅 : http://os.51cto.com/art/201011/233915.htm   Index
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 目录
           人物·People                                             技巧·工具·脚本·DBA
 003       百度高级架构师乔梁:DevOps=Culture+Tools                  021   一种MySQL主从同步加速方案
                                                           023   用SSHGuard免费工具帮你保护服务器
           交流·Interact                                     025   OpenStack实践之旅:安装配置篇
 005       架构师不可不知的十大可扩展架构                                 027   榨干服务器:让进程运行在指定的CPU


           八卦·News
 007       Ubuntu 11.10,Fedora 16正式发布


           专题·Special
 009       解密淘宝网的开源架构
                                                            出版方 :
                                                                51CTO 系统频道(北京无忧创想信息技术有限公司)
 011       淘宝软件基础设施近年发展情况                                   杂志主编 :
                                                                 杨赛
 013       Hadoop在eBay的应用                                   联系方法 :
                                                                 yangsai@51cto.com 010-68476606(分机 8035)

 015       NoSQL数据库笔谈——应用篇                                  出版日期 :
                                                                 2011 年 11 月 11 日
                                                                    每月第 2 个星期五出版
 017       构建高安全电子商务网站之自动备份
                                                            订阅 :
                                                               http://os.51cto.com/art/201011/233915.htm
 019       老板要省钱 小公司如何部署实施Linux集群网站




                                                   002                                    51CTO 系统频道 :
                                                                                                     http://os.51cto.com
人物
杂志订阅 : http://os.51cto.com/art/201011/233915.htm        People
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




百度高级架构师乔梁:DevOps=Culture+Tools
                                                                                                                    文/苏慧




    传统的软件交付过程是通过架构、业务、技术运维、保障等团队之间一步                           的:
                                                                三个月之后,团队的交付周期就变成了三周一次,并在接下来的三个月
 一步把交付物交给下一个环节,最后产生交付软件的价值。这种交付方式                              里一直保持这种频率。
 的一个明显缺点是各角色仅关注于自己本身的工作,在中间的流通环节产
                                                                 实际上,乔梁说,三周交付并不是该团队的极限,还可以优化到两周或更
 生了很多不必要的浪费,如时间成本和沟通成本等 ; 同时,这种阶段性的交
                                                               少,不过,在一种工作方式产生变革并取得成功的结果后,乔梁认为,应该把
 付通常时间较长,一旦产生问题造成的影响也较大。
                                                               这种结果持续一段时间以使之固化下来,然后才可以进入下一个阶段。
    敏捷开发是为解决这一问题而提出的解决方案。在这种方法里,业务人
                                                                 转 变 的 过 程 当 然 是 痛 苦 的, 梁 说, 是 得 到 的 收 益 也 很 大” ——
                                                                                       乔   “但
 员也深入到开发当中,这样需求、开发、测试前面三个环节被打通了,但是,
                                                               DevOps 带给团队的“不仅是技术上的改变,还有行为上的改变”。
 到部署的时候仍会出现问题 :
              因为项目是直到最后才交给运维人员部署到
 线上,部署时经常出现比如 IP 问题、机器资源问题、与线上已有程序的冲突                            很多与会者都关心这种工作方式的可行性,在会后的提问中,大家的焦

 等,要花费大量时间解决。出现这种结果是因为,虽然整个团队共同的目标                             点也集中在这一块 :
                                                                        开发团队和运维团队真的能够那么协调的工作吗 ? 他

 是项目的最终实施,但是作为两个不                                                                    们是怎么解决一些工作和技术上的冲突

 同角色的部门,开发团队和运维团队                              “把交付周期变更为三周一次,是这个团队的                  的呢 ?

 对具体的目标仍有不同的追求。                               开发人员和运维人员共同提出的。”                         在会后的交流中,乔梁向 51CTO 记者

   那么如何解决开发团队和运维团                                                                    表示,目前 DevOps 这种方式尚没有在百

 队之间的这种隔阂 ?DevOps 应运而生。                                        度的整体技术团队中应用,但是他所负责的 high level 的团队使用这种方
                                                               式取得了明显的效果。而且,把交付周期变更为三周一次,是这个团队的开
   10 月 22 日, “QCon 杭州 2011 全球企业开发者大会” 来自百度项
             在                        上,
                                                               发人员和运维人员共同提出的,对于 KPI 进行整体考核的要求,也是团队成
目管理部的高级架构师乔梁与大家分享了百度的一个交付团队是如何利用
                                                               员提出的。
DevOps,在半年的时间内让交付周期从每三个月一次提升到每三周一次的。
                                                                 “你要培养一种文化,要建立一种机制。让运维人员参与到更早——只
  “我改变了他们的工作方式” 乔梁说。新的制度的确影响到了团队的日
               ,
                                                               要项目开始,启动阶段就要把运维人员引入进来,一起开个会,让他们知道
常工作,在开始的三个月,团队的开发速度降了下来。不过这种代价是值得
                                                               项目的进程”。同时,开发人员也需要了解到运维人员的工作状态,因为一

                                                         003                                   51CTO 系统频道 :
                                                                                                          http://os.51cto.com
人物
杂志订阅 : http://os.51cto.com/art/201011/233915.htm            People
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



 旦他们了解到运维人员每天要处理多                                                                              变更都走同样地流程 ; 所有的事情都
 少条告警,再开发的时候就会注意。据                                  “首先,持续交付的一个前提是持续集成。其                       要做版本控制。DevOps 要求所有的人
 乔梁介绍,有些公司是通过轮岗的方式                                 次,将大量的工作通过自动化手段来实现。                         都要做主干开发。
 来促成这种相互理解的。“最后一点也
                                                                                                 提高工作效率,自动化是一个很重要
 是最关键的一点” 乔梁说
         ,   “任何一种产
                                                                   的手段。乔梁在演讲中也多次提到“自动化”这个特点,那么自动化是不是
 品的成功,不只是你开发团队的成功。我希望 DevOps 里能为同一件事情来
                                                                   DevOps 的一个前提呢 ?
 鼓掌,来建立一种沟通协作的文化”。
                                                                     在 回 答 51CTO 记 者 这 个 问 题 的 时 候, 梁 表 示,
                                                                                                   乔     “DevOps 本 身 第 一
                                                                   Culture( 文化 ) 是最重要的,你得让所有人都参与进来,至于自动化,它只
                                                                   是一种手段一种工具,因为当你用传统交付的方法你的人力的消耗会很大,
                                                                   会对运维、测试等造成很大的压力,如果你不解决这个问题的话,那你测试
                                                                   和运维都不会同意的”。

                                                                     至于实现自动化脚本的手段,乔梁介绍百度是有自己的一套管理运维平
                                                                   台,其他企业可能会通过 puppet 之类的工具去做。在不同的环节都有不同
                                                                   的自动化工具可以选择。“你不用这些工具没关系,但是比如环境准备,还
                                                                   有应用度等等你必然要有一套自己的方式。 乔梁说。
                                                                                      ”

                                                                     针对目前 DevOps 在国内外的发展情况,乔梁说,DevOps 本身还是比较
                             DevOps首先是一种文化转变                       新的东西,国内外并没有很大的差距,
                                                                                   “我觉得还是意识层面的差距。因为
    改变交付团队各个环节各自为政的局面,建立一种全新的工作方式,这                                DevOps 里面很多技术很多国内的公司也在用,但是他还是把我只把我自己
 是 DevOps 的第一步。然后,我们需要检视开发运维过程中的每一个环节,                             运维的这一部分做了,他连不起来,大家还有隔离。”
 减少不必要的浪费。
                                                                     正如乔梁在一张演讲 PPT 中所写道的 : DevOps=Culture+Tools” 它是
                                                                                         “                      ,
    这些浪费包括 :
           一些容易造成高风险问题的不必要的多分支开发 ; 问题                              工作思路的转变辅以适当工具的结果,首要的还是文化转变——“包括我
 被发现的时间推迟 ; 基于流程平台的沟通 ; 常规的例行工作上花费的大量                              们之前提到的敏捷开发,基本上也是一种文化的变化,而不是一种工具的变
 人工等。                                                              化。 乔梁说。
                                                                     ”

    为减少浪费,DevOps 团队做了很多工作。首先,持续交付的一个前提是                              原文 :
                                                                        http://os.51cto.com/art/201110/298786.htm
 持续集成 ; 其次,将大量的工作通过自动化手段来实现 ; 部署脚本,所有的


                                                             004                                        51CTO 系统频道 :
                                                                                                                   http://os.51cto.com
交流
杂志订阅 : http://os.51cto.com/art/201011/233915.htm        Interact
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 架构师不可不知的十大可扩展架构
                                                                                                              文/Srinath
                                                                                                            编译/核子可乐


    对于大多数架构师而言,
              “可扩展性”在软件架构方面是最虚无缥缈的说                            无共享体系架构实例 》一文中,专门讨论了此类架构。
 法。这毫不奇怪,因为可扩展性正是如今软件设计领域最值得优先考虑的
                                                                   LB + 无状态节点 + 可扩展存储
 要素。然而,计算机科学家们还无法了解一套单独的架构如何才能扩展至
 各类应用环境当中。相反,我们在数量繁多的方案中所设计出的可扩展性                                  传统的 三层式 Web 架构 使用的就是这种模型。该模型包括数个与可

 架构,往往以业界较为通用的已知可扩展模式及个人偏好为标准。简单来                              扩展存储交互的无状态节点以及一个分布于节点间负载中的负载平衡器。

 讲,打造一套具备可扩展性的系统已经变得更像是一门艺术而不单单是技                              在这一模型中,存储通常作为限制因素存在, NoSQL 存储则可以利用这
                                                                                   但

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

    我们常常会通过观摩杰作体会并学习艺术的精髓,而可扩展性也应该遵                                点对点架构 ( 分布式哈希表 (DHT) 以及内容寻址网络 (CAN))

 循同样的路线!                                                                              这套模型提供了一些传统的可扩展算

    在这篇文章中,我将列出数款为大                            “每个单元可以是一个单独的节点或是紧密耦                 法,这些算法的各个方面几乎全部按对数

 家所耳熟能详的可扩展性架构。通常                             合的节点所构成的集群。用户可以使用DNS轮                 进行了等比例增加。举例来说, Chord、
                                                                                                  像

 情况下,架构师们完全可以借鉴已知                             询、硬件负载平衡器或者软件负载平衡器达成负                 Pastry(特指免费版)以及 CAN 都属于此
                                                                                    类。 而 以 Cassandra 为 代 表 的、 于 P2P
                                                                                                             基
 的可扩展架构模式,进而创造出新的                             载平衡效果。”
 可扩展架构。                                                                             架构的几款 NoSQL 系统也是其中的成员。
                                                                                   《 展望 P2P 系统中的数据 》一文就深入
    LB ( 负载平衡器 ) + 无共享单位
                                                               探讨了这类模型的各种细节。
    该模型中包含一系列单元,各单元彼此间不共享任何内容,且一致指向
                                                                   分布式队列
 一个将输入文讯按一定条件发往单元处的负载平衡器(这构成一个循环,以
 负载等情况为基础)。每个单元可以是一个单独的节点或是紧密耦合的节                                  这种模型以将队列实施(即先进先出交付机制)作为网络服务处理为基

 点所构成的集群。用户可以使用 DNS 轮询、硬件负载平衡器或者软件负载                           础。该模型通过 JMS 队列而广泛得到采用。一般会遵循这种做法的有任

 平衡器达成负载平衡效果。创建一套负载均衡的层次结构,并在其中结合                              务队列以及通过保持队列分级体系实现扩展性的任务队列版本,后者在负

 前面提到的各种负载平衡器也是可行的。在由 Michael Stonebraker 撰写的《                 载无法及时处理时,任务会由低级层面向高级层面传递。

                                                         005                                  51CTO 系统频道 :
                                                                                                         http://os.51cto.com
交流
杂志订阅 : http://os.51cto.com/art/201011/233915.htm            Interact
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



    发布 / 订阅模式                                                                                         流处理
                                                    “可扩展性的实现只有三种方式,即:分布、
    一般用于通过网络向彼此发布订阅                                                                                   这种模型被用于处理源源不断的数
 讯息。 发布与订阅的多面性 》这一
    《
                                                   缓存及异步处理。”                                        据流及数据。这种处理方式通过网络
 经典论文中详细的介绍这一模型,该模                                                                                  中的处理节点获得支持(例 如 Aurora、
 型方面最典型的例子即 NaradaBroker 与 EventJava 。                             Twitter Strom 以及 Apache S4 等)。

    小道消息与自然灵感式模型                                                       可扩展存储

    这种模型源自日常生活中小道消息的传播途径,也就是每个节点将随机                                    该模型的应用范围从数据库、NoSQL 存储、服务注册到文件系统都有体
 选择后续节点以交换信息。正如现实生活中的实际反馈,这种八卦型算法                                  现。 链接中的这篇文章 以可扩展性为切入点对其进行了深入讨论。
 在信息传播方面出奇地迅速。该模型的另一大分支则是受到生物学影响的
                                                                       综上所述,可扩展性的实现只有三种方式, :
                                                                                          即 分布、缓存及异步处理。
 启发式算法。自然世界中存在着大量协调及扩展方面极为卓越的固有算法。
                                                                   前文所提到的各种架构事实上都是把这三种方式进行不同组合并加以实
 举例来说,蚂蚁、人类以及蜜蜂等等,都能够以最简洁的交流方式协调好扩
                                                                   施。而另一方面,不利于可扩展性的因素,除了糟糕的编码本身,全局性协
 展性方面的需要。模型中的算法正是借鉴了这些实际存在的现象。在论文《
                                                                   调也起到了重要的影响。简单来说,任何一种全局性协调都会限制系统的
 从流行病的蔓延到分布式计算 》中对这种模型有着详尽的叙述。
                                                                   可扩展性。本文中所提到的各种架构也只是在做好了本地性协调,而非全
    地图缩小 / 数据流                                                     局性协调。

    这一概念首先由谷歌公司提出,地图缩小为工作的描述及执行提供了一                                    然而,将它们有机地结合起来以创建一套极具可扩展性的架构可不像说
 套可扩展的模式。虽然内容简单,但它仍然成为联机分析处理方面的首要                                  起来那么容易,除非我们能找到一种全新的扩展模式。不过经验告诉我们,
 处理模式。数据流则是一种更先进的方式,用来表达执行信息 ;
                             而像 Dryad                              比起搞一套全新的架构,采用为我们所熟知且更易驾驭的可扩展性解决方
 及 Pig 这样的项目为数据流的执行提供了可扩展的框架。论文 地图缩小 : 案永远是更好的选择。
                               《
 大型集群上的简化数据处理 》中设置了专门的主题,详细讨论这一内容。
                                                                       原文 :
                                                                          List of Known Scalable Architecture Templates
 Apache 的 Hadoop 就是这种模型的代表性产品。
                                                                       译文 :
                                                                          http://os.51cto.com/art/201111/301143.htm
    责任树形图
                                                                       【推荐阅读】
    这种模型打破了递归问题的束缚,将整个流程以树状形式加以处理 ;
                                  每
 个父节点将工作下放至子节点。这种模型扩展性强,并已经被应用于数款                                      互联网运营智慧 -- 高可用可扩展网站技术实战

 可扩展性架构当中。                                                             教你五招,快速提升 MySQL 可扩展性



                                                             006                                              51CTO 系统频道 :
                                                                                                                         http://os.51cto.com
八卦
杂志订阅 : http://os.51cto.com/art/201011/233915.htm              News
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 Ubuntu 11.10,Fedora 16正式发布
                                                                                                      ——八卦,新闻与数字 2011.10 - 2011.11

  【Ubuntu】Ubuntu 11.10 是 Ubuntu 的第 15 个重大版本发布,桌面版和服                      【Qt】Nokia 21 日早宣布 Qt 项目真正成为完全开源的项目。Qt 项目由
 务器版都有 18 个月的生命周期。                                                      Qt-project.org 主持,该组织已经设置一台 Gerrit 服务器作为新的项目管理
                                                                        架构,来方便处理代码审核、补丁修复等。
    http://os.51cto.com/art/201105/264870.htm
                                                                          http://os.51cto.com/art/201110/298750.htm
  【脑细胞】网站架构的常见演进路径 : 与 db 共用→ web 和 db 拆分→
                   web
 多台 web → db 主从→ web 缓存→ db 缓存→存储拆分→ Scale Up →按应                        【Mint】Linux Mint 下一个版本“Lisa” 将会继续支持 GNOME 2.32 作为
                                                                                                     ,
 用竖切 web →内存当硬盘→按时间横切 db →按事务竖切 db →按 hash 竖                            Linux Mint 标准版本的默认桌面环境。该版本基于 Ubuntu 11.10。同时,
 切 db →存储网络化→虚拟化→云,看起来都有章可循,但不知多少技术人                                    也会引入对 GNOME 3 的支持。
 员在这路上死了无数脑细胞,还有那无数的不眠之夜。
                                                                          http://os.51cto.com/art/201110/298193.htm
    http://weibo.com/1649415495/xwl7WBXwa
                                                                         【Amazon】Bezos 派出了几位首席牛头犬来监督并确保进度,领头的是和
  【咆哮】我究竟为什么受够了 Linux ? Linux 机器可以成为出色的服务器。                             熊一样大的牛头犬 :
                                                                                 Rick Dalzell,Rick 是以前是陆军突击队队员,西点军校
 但是它们需要有一组专门的 Linux 技术人员,这些人了解关于 Linux 的一切                              毕业生,拳击手,和沃尔玛的首席虐刑官 /CIO,而且他也是个高大、和蔼、令
 事情,了解所有的联络暗号……而我就是个工作忙碌的人。                                             人敬畏的人,还是经常使用”hardened interface”词的人。

    http://os.51cto.com/art/201110/298945.htm                             http://coolshell.cn/articles/5701.html

  【Hadoop】微软对 Hadoop 的支持,对我而言,这是微软第一次与 IBM 及甲                            【Linux 基 金 会】Linux 基 金 会 宣 布 新 增 5 位 欧 洲 新 成 员, 们 分 别 是
                                                                                                                        他
 骨文等竞争对手并肩而立,计划实施大型合作项目。                                                AboveIT,Comarch,CSR,Symbio 和 Tieto。

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

  【Fedora】Fedora 16 在 11 月 8 日 正 式 发 布, 要 新 特 性 包 括 Aeolus
                                       主                                 【Samba】微软开源技术中心的 Stephen Zarkos 为 Firefox 和 Samba
 Conductor、Condor Cloud、HekaFS、OpenStack 以及 pacemaker-cloud 在 内         的 NT 局域网管理器认证的扩展保护提交了一些概念证明代码,这是实现
 的增强云支持,KDE Plasma 工作 空间 4.7,GNOME 3.2 等。                               Samba/Windows 互操作性的一大步。

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


                                                                  007                                              51CTO 系统频道 :
                                                                                                                              http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm   Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




                                     构建高性能电子商务网站
                                                             【编者按】作为电子商务运维,一些基本功是必须掌握的 :

                                                             一、熟悉安全技术,了解硬件防火墙性能,能熟悉的配置 iptables 和了解
                                                          Linux/Unix 相关的安全工具 ;

                                                             二、熟练的配置 Linux 的集群技术,比如 LVS/Nginx/HAproxy,了解其原
                                                          理和会话保持机制 ;

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

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

                                                             五、熟悉存储 ;

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

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

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

                                                             在大型电子商务网站下,运维的工作会细分,不过上述内容仍是基本功。
                                                          此外,由于大规模网站遇到的各方面挑战,会要求开发人员和运维人员能够
                                                          与时俱进,在网站遭遇瓶颈之前做好应对。

                                                             本专题收集了一些国内外大型电子商务网站的经验分享,最后也介绍了
                                                          一些通用的构建、维护技巧。




                                                    008                                 51CTO 系统频道 :
                                                                                                   http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm            Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 解密淘宝网的开源架构
                                                                                                                           文/曾宪杰



    编者按 :
        本文于 2008 年撰写,文中提到的数字和内容在三年当中发生了                            而 不 是 小 型 机, 么 Server 的 操 作 系 统 供 我 们 选 择 的 一 般 也 就 是 Linux,
                                                                               那
 很多变化,大家可以根据这些变化来印证淘宝在技术上都做了哪些工作。                                  FreeBSD, windows 2000 Server 或者 Windows Server 2003。如果不准备
                                                                   采用微软的一系列产品构建应用,并且有能力维护 Linux 或者 FreeBSD,再
    淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,
                                                                   加上成本的考虑,那么还是应该在 Linux 和 FreeBSD 之间进行选择。可以说,
 注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站。那么
                                                                   现在 Linux 和 FreeBSD 这两个系统难分伯仲,很难说哪个一定比另外一个要
 对于淘宝网这样大规模的一个网站,我猜想大家一定会非常关心整个网站
                                                                                               优秀很多、能够全面的超越对手,应该
 都采用了什么样的技术、产品和架构,
                                                                                               是各有所长。那么在选择的时候有一个
 也会很想了解在淘宝网中是否采用了                                   “要先选择操作系统,然后才是操作系统基础
                                                                                               因素就是企业的技术人员对于哪种系
 开源的软件或者是完全采用的商业软                                  上的应用软件。”
                                                                                               统更加的熟悉,这个熟悉一方面是系统
 件。那么下面我就简单的介绍一下淘
                                                                                               管理方面,另外一方面是对于内核的熟
 宝网中应用的开源软件。
                                                                   悉,对内核的熟悉对于性能调优和对操作系统进行定制剪裁会有很大的帮
    对于规模稍大的网站来说, IT 必然是一个服务器集群来提供网站服
                其                                                  助。而应用全面的优化、提升性能也是从操作系统的优化开始的。
 务,数据库也必然要和应用服务分开,有单独的数据库服务器。对于像淘宝
                                                                      应用服务器
网这样规模的网站而言,就是应用也分成很多组。那么下面,我就从应用服
务器操作系统、应用服务器软件、Web Server、数据库、开发框架等几个方面                               在确定 了服 务器 的硬件、服务 器的操 作系统 之后,下面 我们来 说说业
来介绍一下淘宝网中开源软件的应用。                                                  务系统的构建。淘宝网有很多业务系统应用是基于 JEE 规范的系统。还
                                                                   有一些是 C C++ 构建的应用或者是 Java 构建的 Standalone 的应用。那
   操作系统
                                                                   么 我 们 要 选 择 一 款 实 现 了 JEE 规 范 的 应 用 服 务 器。 我 们 的 选 择 是 JBoss
   我们首先就从应用服务器的操作系统说起。一个应用服务器,从软件的                                 Applcation Server。JBoss AS 是 RedHat 的一个开源的支持 JEE 规范的应用
 角度来说他的最底层首先是操作系统。要先选择操作系统,然后才是操作                                  服务器。在几年前,如果采用 Java 技术构建互联网应用或者企业级应用,
 系统基础上的应用软件。在淘宝网,我们的应用服务器上采用的是 Linux                               在开源软件中的选择一般也就是 Apache 组织的 Tomcat、JBoss 的 JBoss
 操作系统。Linux 操作系统从 1991 年第一次正式被公布到现在已经走过                            AS 和 Resin。 严 格意 义 上 讲,Tomcat 和 Resin 并 不 能 算 是 一 个 应 用 服 务
 了十七个年头, PC Server 上有广泛的应用。硬件上我们选择 PC Server
        在

                                                             009                                        51CTO 系统频道 :
                                                                                                                   http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm              Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



 器, 们 是 实 现 了 部 分 J2EE 规 范 的 一
   他                                                                                                许部分节点失效 ),保证应用的健壮性
 个容器。而商业软件的选择就是 IBM                                 “几年前,Apache几乎是Linux系统上开源                        和可靠性。可以这么说,在关系数据库
 的 WebSphere 和 BEA 的 WebLogic。 到                   Web Server的唯一选择。”                                管理系统的选择上,可以考虑应用本身
 了 现 在, 了 JBoss AS 外,
       除             Apache 的                                                                       的情况来决定。
 Geronimo,Sun 的 Glassfish 也 都 是 很 优
                                                                        一个互联网应用,除了服务器的操作系统,Web Server 软件,应用服务器
 秀的 JEE 应用服务器。也给现在的开发人员提供了更多的选择。具体对于
                                                                     软件,数据库软件外,我们还会涉及到一些其他的系统,比如一些中间件系
 目前 JEE 应用服务器的比较。这边就不在赘述。
                                                                     统、文件存储系统、搜索、分布式框架、缓存系统等等。在淘宝网,这些系统
    在应用服务器前端,我们采用了 Web Server 做了一次转发,我们选择的                           都是自主开发的,没有采用目前商业的或者开源的产品。有些系统,会存在
 Web 服务器是大名鼎鼎的 Apache。几年前,Apache 几乎是 Linux 系统上                       着一些开源的产品或者商业产品。但是,考虑到淘宝网自己的需求和大并
 开源 Web Server 的唯一选择。那个时候虽然也有一些其他的开源的 Web                            发量的压力,这些系统都选择了自主开发框架。
 Server,但是从功能和稳定性上来说都无法和 Apache 相对。在今天来说,
                                                                        前面谈的都是系统级的产品,下面我们说说开发框架的使用。可能有朋
 Lighty 也会是一个非常好的选择。Lighty 是一个非常轻量级、占用内存资源
                                                                     友想问,作为一个如此大规模的网站,淘宝网的 Web 展现层采用的是什么
 也比较少的 Web Server。虽然功能上没有 Apache 强大,但是在不少场景下,
                                                                     框架,是怎么实现的呢?曾经也有到淘宝的应聘者问过我这个问题,他问我
 性能是非常出色、强于 Apache 的。而微软的 IIS,就只能工作在 Windows
                                                                     说是不是用的 struts。我告诉他说不是的。其实淘宝网的 Web 展现层的
 的 系 统 上 了。 并 且 使 用 IIS 的 话, 本 上 也 就 是 选 择 了 ISAPI、
                            基                      ASP 或 者
                                                                     框架用的不是 struts,不是 webwork,不是 spring mvc 等等。淘宝网的 Web
 ASP.NET 进行 Web 应用的开发了。
                                                                     展现层的框架用的是集团内部自主开发的一套 Web 框架。这个框架能够
    数据库                                                              解决一些其他 Web 框架不能解决的、在淘宝的应用中又会出现并需要解
                                                                     决的问题。在淘宝的多个应用中,也采用了一些开源的框架,比如 Spring、
    说完了我们采用的操作系统、应用服务器、WebServer 后,下面就来谈
                                                                     iBatis、jBPM、Hessian、Mina 等等。这些开源软件的采用为我们构建应用系
 谈我们的数据库。在淘宝网的应用中,采用了两种关系型数据库管理系
                                                                     统提供了很大的帮助。
 统。一个是 Oracle 公司的 Oracle 10g,另外一个是 Sun MySQL 的 MySQL。
 Oracle 是一款优秀的、广泛采用的商业数据库管理软件。有很强大的功能                                   原文 :
 和安全性,可以处理相对海量的数据。而 MySQL 是一款非常优秀的开源数
                                                                        http://publish.itpub.net/o/2008-06-18/200806180707423.shtml
 据库管理软件,非常适合用多台 PC Server 组成多点的存储节点阵列 ( 这
 里我所指的不是 MySQL 自身提供的集群功能 ),每单位的数据存储成本也                                  【编辑推荐】

 非常的低廉。用多台 PC Server 安装 MySQL 组成一个存储节点阵列,通过                             高性能网站建设的 14 个原则
 MySQL 自身的 Replication 或者应用自身的处理,可以很好的保证容错 ( 允
                                                                        如何解决京东商城的性能瓶颈?

                                                               010                                            51CTO 系统频道 :
                                                                                                                         http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm          Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 淘宝软件基础设施近年发展情况
                                                                                                                整理/51CTO系统频道



    本文内容主要从章文嵩博士的 PPT 分享《淘宝软件基础设施构建实践》                              跨机架和 IDC 的负载均衡和冗余安全策略。
 整理而来,其中一些淘宝开源项目的介绍整理自淘蝌蚪,淘宝核心系统团队
                                                                    完全平滑扩容
 博客,以及淘宝的技术们对外的分享。
                                                                 淘宝分布式KV引擎(TAIR)
   来源 :
      http://www.slideshare.net/wensongzhang/ss-8058883
                                                                    http://code.taobao.org/p/tair/wiki/
    截止到今年 5 月,淘宝的生产服务器约为 2 万台。为了确保大数据状态
 下保持系统的可扩展性和性能,淘宝进行了如下工作 :                                          Tair 是一个分布式的 key/value 结构数据的解决方案,系统默认支持基
                                                                 于内存和文件的存储引擎,对应于通常我们所说的缓存和持久化存储。
 淘宝分布式文件系统(TFS)
                                                                    特点
    http://code.taobao.org/p/tfs/wiki/
                                                                    基于对照表的灵活、良好的可扩展性
    TFS,Taobao File System,淘宝内部使用的分布式文件系统,主要针对海
 量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商                                  轻量级的 configserver

 品描述等数据的存储。                                                         抽象的存储引擎层,支持添加新的存储引擎

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

   完全扁平化的数据组织结构,抛弃了传统文件系统的目录结构。                                     多机架和多数据中心的支持

   在块设备基础上建立自有的文件系统,减少 EXT3 等文件系统数据碎片                               插件容器
 带来的性能损耗
                                                                    数据的 version 支持
   单进程管理单块磁盘的方式,摒除 RAID5 机制
                                                                    原子计数器支持
    带有 HA 机制的中央控制节点,在安全稳定和性能复杂度之间取得平衡。
                                                                    item 支持
    尽量缩减元数据大小,将元数据全部加载入内存,提升访问速度。


                                                           011                                            51CTO 系统频道 :
                                                                                                                     http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm          Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



 千亿级别分布式数据库系统 OceanBase                                            服务优化

    http://code.taobao.org/p/OceanBase/wiki/                        针对 Apache/Nginx、HTTP 模块、Squid、LVS、HAProxy、TCP 方面的优化。

    OceanBase 是一个支持海量数据的高性能数据库系统,实现了数千亿条                            Nginx 优化方面,淘宝有一个开源的模块,大家可以参考一下 :
 记录、数百 TB 数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、
                                                                    http://code.taobao.org/p/nginx_concat_module/
 广告、应用研发等部门共同完成。
                                                                    去年的 Velociy 大会上,朱照远(叔度)和王晓哲(清无)也分享过 Nginx
   淘宝的商品、交易、订单、购物爱好等数据通常是结构化的,并且数据之
                                                                   定制开发方面的经验。
间存在各种各样的关联,传统的关系数据库曾经是这些数据的最佳载体。
然而,随着业务的快速发展,这些数据急剧膨胀,记录数从几千万条增加到                                  Java环境优化

数十亿条,数据量从百 GB 增加到数 TB,未来还可能增加到数千亿条和数百                               这方面可以参考淘宝 Java 中间件团队博客(注 :
                                                                                             该团队已经在今年和淘
TB,传统的关系型数据库已经无法承担如此海量的数据。OceanBase 解决不                            宝业务平台团队合并为通用产品团队):
断增加的结构化数据存储与查询的问题。
                                                                    http://rdc.taobao.com/team/jm/
   从 Eric Brewer 教 授 的 CAP( 一 致 性 C: Consistency, 可 用 性 A:
                                                                   Linux内核优化与定制
Availability,分区容错性 P: Tolerance of network Partition) 理论角度分析,
 作为电子商务企业,淘宝和其他公司的业务对一致性和可用性的要求高于                                  夸父通讯中间件
 分区容错性,数据特征是数据总量庞大且逐步增加,单位时间内的数据更新
                                                                    任卿对夸父通讯中间件进行过介绍 :
 量并不大,但实时性要求很高。这就要求我们提供一套更加偏重于支持 CA
特性的系统,同时兼顾可分区性,并且在实时性、成本、性能等方面表现良                                   http://www.slideshare.net/openparty/ss-6680035

好。                                                                 低功耗硬件平台

   OceanBase 现在已经应用于淘宝收藏夹,用于存储淘宝用户收藏条目和                             这方面可以参考淘宝最近公开的开源绿色计算项目 :
具体的商品、店铺信息,每天支持 4 ~ 5 千万的更新操作。
                                                                    http://www.greencompute.org/
MySQL优化
                                                                   CDN系统
   针 对 复 制、 步、 志 系 统、 机 效 率、 载 均 衡 方 面 的 优 化。 详 见
           同  日      单      负
                                                                    这方面也可以参考任卿的介绍 :
yufeng 的另一篇分享 :
                                                                    http://www.slideshare.net/colderboy17/cdn-9022813
   http://www.slideshare.net/mryufeng/mysql-7583273


                                                             012                                           51CTO 系统频道 :
                                                                                                                      http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm                      Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 Hadoop在eBay的应用
                                                                                                                                      文/陆嘉恒



    在 eBay 上存储着上亿种商品的信息,而且每天有数百万种的新商品增                                             Hive 是用于建立数据仓库的使用 SQL 语法的声明性语言。对于开发者、
 加,因此需要用云系统来存储和处理 PB 级别的数据, Hadoop 则是个很好
                           而                                                     产品经理和分析师来说,SQL 接口使得 Hive 成为很好的选择。
 的选择。
                                                                                   4)工 具 和加 载库 层,UC4 是 eBay 从多 个数 据源 自 动加 载数 据的 企 业
    Hadoop 是 建 立 在 商 业 硬 件 上 的 容 错、 扩 展、 布 式 的 云 计 算 框 架。
                                   可    分                                        级 调 度 程 序。 加 载 库 有 : 计 库
                                                                                                    统    (R) 机 器 学 习 库
                                                                                                            、         (Mahout) 数 学 相 关 库
                                                                                                                              、
 eBay 利用 Hadoop 建立了一个大规模的集群系统— Athena,它被分为五层                                 (Hama) eBay 自己开发的用于解析网络日志的库
                                                                                   和                    (Mobius)。
(如下图所示) 下面从最底层向上开始介绍 :
       ,
                                                                                   5)监视和警告层,Ganglia 是分布式集群的监视系统,Nagios 则用来警告
                                                     1)Hadoop 核心层,包括             一些关键事件如服务器不可达、硬盘已满等。
                                                   Hadoop 运 行 时 环 境、 些
                                                                    一
                                                                                   eBay 的企业服务器运行着 64 位的 RedHat Linux :
                                                   通 用 设 施 和 HDFS, 中 文
                                                                  其
                                                   件系统为读写大块数据而                     NameNode 负责管理 HDFS 的主服务器 ;

                                                   做了一些优化,如将块的大                    JobTracker 负责任务的协调 ;
                                                   小由 128MB 改为 256MB。
                                                                                   HBaseMaster 负责存储 HBase 存储的根信息,并且方便与数据块或存取区
                                                     2)MapReduce 层,为 开           域进行协调 ;
                                                   发 和 执 行 任 务 提 供 API 和
                                                                                   ZooKeeper 是保证 HBase 一致性的分布式锁协调器。
                                                   控件。
                                                                                   用于存储和计算的节点是 1U 大小的运行 Cent OS 的机器,每台机器拥
    3)数据获取层,现在数据获取层的主要框架是 HBase、 和 Hive :
                                Pig
                                                                                 有 2 个四核处理器和 2TB 大小的存储空间, 38 ~ 42 个节点单元为一个
                                                                                                         每
    HBase 是根据 Google BigTable 开发的按列存储的多维空间数据库,通过                                 rack,这组建成了高密度网格。有关网络方面,顶层 rack 交换机到节点的带
 维护数据的划分和范围提供有序的数据,其数据储存在 HDFS 上。                                                宽为 1Gbps,rack 交换机到核心交换机的带宽为 40Gpbs。

    Pig(Latin)是提供加载、筛选、转换、提取、聚集、连接、分组等操作的面                                         这个集群是 eBay 内多个团队共同使用的,包括产品和一次性任务。这
 向过程的语言,开发者使用 Pig 建立数据管道和数据工厂。                                                   里使用 Hadoop 公平调度器(Fair Scheduler)来管理分配、定义团队的任务

                                                                           013                                     51CTO 系统频道 :
                                                                                                                              http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm   Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



 池、分配权限、限制每个用户和组的并行任务、设置优先权期限和延迟调度。                          有效性,NameNode 的有效性对产品的工作负载很重要,开源社区提出了
                                                                                      一些备用选择,如使用检查点和备份节
                                                                                      点、 Secondary NameNode 中 转 移 到
                                                                                        从
                                                                                      Avatar 节点、日志元数据复制技术等。
                                                                                      eBay 研究人员根据这些方法建立了自
                                                                                      己的产品集群。

                                                                                        数据 挖掘, 存储 非结 构化 数 据的
                                                                                              在
                                                                                      系 统 上 建 立 支 持 数 据 管 理、 据 挖 掘
                                                                                                            数
                                                                                      和模式管理的系统。新的计划提议将
                                                                                      Hive 的元数据和 Owl 添加到新系统中,
                                                                                      并称为 Howl。eBay 研究人员努力将这
                                     图 数据流                个系统联系到分析平台上去,这样用户可以很容易地在不同的数据系统中
    数据流的具体处理过程如上图所示,系统每天需要处理 8TB 至 10TB 的                 挖掘数据。
 新数据, Hadoop 主要用于 :
     而
                                                             数据移动,eBay 研究人员考虑发布数据转移工具,这个工具可以支持在
    基于机器学习的排序,使用 Hadoop 计算需要考虑多个因素(如价格、列                  不同的子系统如数据仓库和 HDFS 之间进行数据的复制。
 表格式、卖家记录、相关性)的排序函数,并需要添加新因素来验证假设的
                                                             策略,通过配额实现较好的归档、备份等策略(Hadoop 现有版本的配额需
 扩展功能,以增强 eBay 物品搜索的相关性。
                                                          要改进)。eBay 的研究人员基于工作负载和集群的特点对不同的集群确定
    对物品描述数据的挖掘,在完全无人监管的方式下使用数据挖掘和机器                       配额。
 学习技术将物品描述清单转化为与物品相关的键 / 值对,以扩大分类的覆
                                                             标准,eBay 研究人员开发健壮的工具来为数据来源、消耗情况、预算情
 盖范围。
                                                          况、使用情况等进行度量。
    eBay 的研究人员在系统构建和使用过程中遇到的挑战及一些初步计划
                                                             同时 eBay 正在改变收集、转换、使用数据的方式,以提供更好的商业智
 有以下几个方面 :
                                                          能服务。
    可扩展性,当前主系统的 NameNode 拥有扩展的功能,随着集群的文件系
                                                             本文摘录自《Hadoop 实战》 3 章。
                                                                             第
 统不断增长,需要存储大量的元数据,所以内存占有量也在不断增长。若是
 1PB 的存储量则需要将近 1GB 的内存量,可能的解决方案是使用等级结构                       在线样章阅读 :
                                                                    http://book.51cto.com/art/201110/298605.htm

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

                                                    014                                       51CTO 系统频道 :
                                                                                                         http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm       Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 NoSQL数据库笔谈——应用篇
                                                                                                                     整理/颜开



 eBay 架构经验                                                       5、产品化管理

    1、 Partition Everything 切分万物                              Flickr架构经验(via dbanotes.net)

    2、 Asynchrony Everywhere 处处异步                                使得机器自动构建 (Teach machines to build themselves)

    3、 Automate Everything 全部自动                                  使得机器自监控 (Teach machines to watch themselves)

    4、 Remember Everything Fails 记录失败                            使得机器自修复 (Teach machines to fix themselves)

    5、 Embrace Inconsistency 亲不同是谓大同                             通过流程减少 MTTR (Reduce MTTR by streamlining)

    6、 Expect (R)evolution 预言演变                               Twitter运维经验(via timyang.net)

    7、 Dependencies Matter 重视依赖                                  Twitter 没有自己的硬件,都是由 NTTA 来提供,同时 NTTA 负责硬件相
                                                              关的网络、带宽、负载均衡等业务,Twitter operations team 只关注核心的业
    8、 Be Authoritative 独断专行
                                                              务,包括 Performance,Availability,Capacity Planning 容量规划,配置管理等,
    9、 Never Enough Data                                      这个可能跟国内一般的互联网公司有所区别。
    10、Custom Infrastructure 自定义基础设施                             运维经验
 淘宝架构经验(via dbanotes.net)                                        Metrics
    1、适当放弃一致性                                                    Twitter 的监控后台几乎都是图表 (critical metrics),类似驾驶室的转速
    2、备份和隔离解决稳定性问题                                            表,时速表,让操作者可以迅速的了解系统当前的运作状态。联想到我们
                                                              做的类似监控后台,数据很多,但往往还需要浏览者 做二次分析判断,像
    3、分割和异步解决性能问题 ( 类似 eBay 的 Asynchrony Everywhere)
                                                              这样满屏都是图表的方法做得还不够,可以学习下这方面经验。 据 John
    4、自动化降低人力成本 ( 类似 eBay 的 Automate Everything)              介绍可以从图表上看到系统的瓶颈 - 系统最弱的环节 (web, mq, cache,


                                                        015                                        51CTO 系统频道 :
                                                                                                              http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm          Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



 db?)                                                                本能否接受?如果有紧急功能怎么办?个人认为紧急修改时有两人在场,
                                                                     一人修改一人 review 也不是什么难事。
    根据图表可以科学的制定系统容量规划,而不是事后救火。
                                                                       部署管理
    配置管理
                                                                       从部署图表可以看到每个发布版本的 CPU 及 latency 变化,如果某个新
    每个系 统 都需 要一 个自动 配 置管 理 系 统, 早 越 好, 条 一 整 理 发 到
                               越      这
                                                                     版本 latency 图表有明显的向上跳跃,则说明该发布版本存在问题。另外在
 Twitter 上去之后引起很多回应。
                                                                     监控首页列出各个模块最后 deploy 版本的时间,可以清楚的看到代码库的
    Darkmode                                                         现状。
    配置界面可以 enable/disable 高计算消耗或高 I/O 的功能,也相当于优                        团队沟通
 雅降级,系统压力过大时取消一些非核心但消耗资源大的功能。
                                                                       Campfire 来协同工作,campfire 有点像群,但是更适合协同工作。对于
    进程管理                                                             Campfire 就不做更多介绍,可参考 Campfire 官方说明。
    Twitter 做 了 一 个”Seppaku” patch, 就 是 将 Daemon 在 完 成 了 n 个           Cache
 requests 之后主动 kill 掉,以保持健康的 low memory 状态,这种做法据了
                                                                       Memcache key hash, 使用 FNV hash 代替 MD5 hash,因为 FNV 更快。
 解国内也有不少公司是这样做。
                                                                       开 发 了 Cache Money plugin(Ruby), 给 应 用 程 序 提 供 read-through,
    硬件
                                                                     write-through cache, 就像一个 db 访问的钩子,当读写数据库的时候会自
    Twitter 将 CPU 由 AMD 换成 Xeon 之后,获得 30% 性能提升, CPU 由
                                               将                     动更新 cache, 避免了繁琐的 cache 更新代码。
 双核 /4 核换成 8 核之后,减少了 40% 的 CPU, 不过 John 也说,这种升级
                                                                      “Evictions make the cache unreliable for important configuration
 不适合自己购买硬件的公司。
                                                                     data” Twitter 使用 memcache 的一条经验是,
                                                                          ,                           不同类型的数据需放在不同
    代码协同经验                                                           的 mc, 避免 eviction,跟作者前文 Memcached 数据被踢 (evictions>0) 现象
    Review 制度                                                        分析中的一些经验一致。

    Twitter 有上百个模块,如果没有一个好的制度,容易引起代码修改冲突,                              Memcached SEGVs, Memcached 崩溃 (cold cache problem) 据称会给这
 并把问题带给最终用户。所以 Twitter 有一强制的 source code review 制度 ,                 种高度依赖 Cache 的 Web 2.0 系统带来灾难。
 如果提交的代码的 svn comment 没有”reviewed by xxx” 则 pre-commit
                                         ,                             本文摘录自《NoSQL 数据库笔谈》的应用篇。
 脚本会让提交失败 , review 过的代码提交后会通过自动配置管理系统应
                                                                       原文 :
                                                                          http://www.yankay.com/nosql 数据库笔谈 v0-2/
 用到上百台服务器上。 有 @xiaomics 同学在 Twitter 上马上就问,时间成


                                                               016                                           51CTO 系统频道 :
                                                                                                                        http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm        Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




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


    电子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份、异                              需要在 Linux 服务器上创建 /home/backup/ 目录。
 地备份架构。其中 Linux 服务器的备份方案非常多,本文介绍一个大众化
                                                                  3.FTP 异地备份 IP 账号 密码
 适用的解决方案,通过编写 Shell 脚本来完成自动备份。本架构包括备份网
 站文件、数据库,自动本地备份并 FTP 上传备份脚本,完成相应本地备份、异                            需要在异地 FTP 上创建 backup 目录。

 地备份,实现双层备份解决方案。                                                  如果 Linux 服务器上数据库不多的话使用网络基础服务商的存储空间就

   要点 :                                                        可以。也可以用专门的备份服务器。可根据应用的大小,数据量的大小,网
                                                               络状况,和实际的网络资源,硬件资源灵活支配。
   1. 全自动完成网站文件及数据库备份。
                                                                  二、架构图
   2. 编写 Shell 脚本来完成自动备份。

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

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

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

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

   一、准备工作 :

   1. 软件安装

   需要提前在 Linux 服务器安装好 lftp, 功能上比较强大,
                           lftp     CentOS 直接
 执行 :
    yum install lftp,Debian 执行 :
                               apt-get install lftp 。             三、网站及数据库自动本地备份并 FTP 上传备份 Shell 脚本

    2. 备份目录建立                                                     脚本与注释 :


                                                         017                                  51CTO 系统频道 :
                                                                                                         http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm                       Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



    #!/bin/bash                                                                    #/home/wwwroot/ $Backup_Dir2 。如果多余则删除多余行。
    #Funciont: Backup website and mysql database                                   /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord
    #Author: Jimmy Li                                                                $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-
    #Website: http://jimmyli.blog.51cto.com/                                         $(date +"%Y%m%d").sql
    #IMPORTANT!!!Please Setting the following Values!                              # 如果在前面加了 Backup_Database_Name2,则再加 /usr/local/mysql/
    ######~Set Directory you want to backup~######                                 #bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_
    # 一般按我的都是在 /data/wwwroot/ 下面所有直接写了需要备份的目录。                                     #Database_Name2 > /home/backup/db-$Backup_Database_Name2-$(date
    # 可以继续再加:Backup_Dir2= 你的目录,等等                                                  #+"%Y%m%d").sql 。如果多余则删除多余行。
    Backup_Dir1=/data/wwwroot/www.zuihuasuan8.net                                  rm $OldWWWBackup
    ######~Set MySQL UserName and password~######                                  rm $OldDBBackup
    # 最好是 root,其他用户可能因为权限问题无法导出部分数据库。                                              ### 删除 30 天前的备份 ###
    MYSQL_UserName=root                                                            cd /home/backup/
    MYSQL_PassWord= 你的 mysql 数据库 root 密码                                           ### 下面为自动上传部分,不得不说 lftp 很强大,抛弃 ftp 吧 ####
    ######~Set MySQL Database you want to backup~######                            lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF
    # 要备份的数据库,可以继续再加:Backup_Database_Name2,等等                                      cd $FTP_BackupDir
    Backup_Database_Name1=www.zuihuasuan8.net                                      mrm $OldWWWBackup
    ######~Set FTP Information~######                                              mrm $OldDBBackup
    FTP_HostName=www.zuihuasuan8.net                                               mput $TodayWWWBackup
    FTP_UserName=www.zuihuasuan8.net                                               mput $TodayDBBackup
    FTP_PassWord=www.zuihuasuan8.net                                               bye
    FTP_BackupDir=www.zuihuasuan8.net—— backup // 目录需要提前创建好                        EOF
    #Values Setting END! #####                                                     下载脚本,将脚本放到 /root/ 下面,按上面的注释修改脚本中的参数,
    TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz                                 并保存。执行 :
                                                                                         chmod +x /root/backup.sh 为脚本添加执行权限,执行 :
    TodayDBBackup=db-*-$(date +"%Y%m%d").sql                                      crontab -e 添加定时执行
    OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz
    OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql                               0 3 * * * /root/backup.sh
    tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /            凌晨 3 点自动执行脚本。
      home/wwwroot/ $Backup_Dir1 --exclude=soft
    # 上面的 --exclude= 不备份的目录。如果在前面加了 Backup_Dir2,则再                                 本文有删节,完整内容见原文 :
    # 加 tar zcf /home/backup/www-$Backup_Dir2-$(date +"%Y%m%d").tar.gz -C          http://jimmyli.blog.51cto.com/3190309/691069


                                                                            018                                             51CTO 系统频道 :
                                                                                                                                       http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm             Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 老板要省钱 小公司如何部署实施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)。由于此软件比
                                                                        机器上,监控的 Nagios 部署在从 Nginx/HAProxy 机器上,流量监控我一般
 较直观,我用它来取代之前的即时流量监控软件 iptraf,Nload 的工作界面如
                                                                        放主 Nginx/HAProxy,软件采用的是 MRTG+Nload 的方式,服务器之间的数
 右图所示。
                                                                                             据 同 步 我 采 用 的 是 rsync+inotify 的 方
                                                    “LVS在性能方面是最好的,尤其是后面的节
    许多对集群感兴趣的朋友经常问                                                                           法,当然更多时候,我采用的是纯 rsync
                                                   点超过10台时,它的性能是最优异的。”                       方式,这样是避免网站有大文件发生改
 我,如果网站要部署负载均衡高可用的
 Linux 集 群 方 案, 公 司 又 想 用 最 节 省
               而                                                                             动的时候会产生频繁读盘的麻烦 ;
                                                                                                            当然
 成本的方式来实施的话,一般需要几台服务器呢?我的回答是四台, 2+2
                               即                                        了,如果大家的公司对文件服务器有更高要求的时候 ( 比如图片类型的 ),
 架构,最前面是二台 Nginx/HAProxy+Keeplaived 机器,后面是二台配置比                         我们可以考虑再增加二台服务器,做成 DRBD+Heartbeat+NFS 的方式 ;
                                                                                                                 如果
 较好的 Web 机器,MySQL 数据库采用一主一从的方式,分别放在二台 Web                               有海量文件需要存储的话,我们可以考虑用 MFS,当然这样也是比较耗机器


                                                                  019                                 51CTO 系统频道 :
                                                                                                                 http://os.51cto.com
专题
杂志订阅 : http://os.51cto.com/art/201011/233915.htm       Special
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



 的。
                                                                         【特别推荐】
    像类似以上的小公司集群架构里,我们是如何解决 session 同步的问题
 呢?我们可以采用 Nginx 的 ip_hash 和 HAProxy 的 balance source 机制,
 们的原理比较类似,都会让某一客户机在相当长的一段时间内只访问固定
                                                        它
                                                                  大话IT第十七期
 的后端的某台真实的 Web 服务器,
 面进行 login 的时候,
                   这样会话就会得以保持,我们在网站页
               就不会在二台 Web 服务器之间跳来跳去了,自然也不
                                                                   ——体验Ubuntu 11.10
 会出现登陆一次后网站又提醒你没有登陆,需要重新登陆的情况。                                     2011 年 10 月 13 日,Ubuntu 11.10 发布。作为采用 Unity 桌面的

   另外,小公司的 Web 服务器我们至少有二种选择 :
                            一种是 Apache,另一                         第二版 Ubuntu,很多用户都关注这次更新带来了哪些改进。有关新特

 种是 Nginx,在流量和并发不大的环境下,我们完全可以选择 Apache 作为我                        性的介绍,相关文章已经不少 ;
                                                                                不过对于用惯了 Windows 的用户,或

们的 Web 服务器,虽然它的抗并发能力不高,但它的稳定性是最好的,我的                              者习惯了平板电脑的用户而言,Ubuntu 11.10 是否能够吸引他们的

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

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

   MySQL 在这里我用的就是一主一从的设计,虽然很多朋友觉得这种设计                             收集了他们对 Ubuntu 11.10 的使用感受。

 比较简单,但事实证明,它也最稳定的。我的电子商务网站也是采用这种                                  在线收看 :
                                                                        http://os.51cto.com/art/201110/298204.htm
 架构 , 几年下来,从没有因为数据库的故障发生过丢单现象,网站上线的
                                                                   大话 IT 下载专题 :
                                                                              http://down.51cto.com/zt/99
前期阶段,我们可以通过 PHP 程序,把后台的查询功能的入口选择 Slave 机
 器,这样可以大大减少主数据库的压力 ;
                   另外, MySQL 机器并非仅仅只起
                      从                                            本期参与录制 :
                                                                          嘉文、周达洋、柴莎莎、王玉平、杨赛
一个备份和备机的作用,我们完全通过 PHP 程序将后台的复杂查询转到从                                本期编导 :
                                                                        鲜橙
MySQL 机器上。当然了,MySQL 的主从复制状态监控也是非常重要的,我
                                                                   本期主持 :
                                                                        嘉文
一般是通过 Nagios 和 SHELL 脚本双监控的方式。
                                                                   《IT 听听看》微博 :
                                                                              http://t.sina.com.cn/itttkan
   作者介绍 :
        余洪春(博客·微博),
                  《构建高可用 Linux 服务器》一书作者,
一拍网系统架构师、资深项目管理工程师,ChinaUnix 集群和高可用版版主。                            有关 IT 听听看之大话 IT :

   本文有删节,完整内容见原文 :                                                 由一群喜欢音频的 IT 从业者自发性建立的栏目,针对 IT 业界或技
                                                                  术点进行轻松的调侃和剖析,目地是让大家再轻松之余了解到 IT 信
   http://network.51cto.com/art/201111/300804.htm
                                                                  息, IT 专业人士和普通人都能听出快乐是团队目标。
                                                                    让



                                                            020                                     51CTO 系统频道 :
                                                                                                               http://os.51cto.com
运维DBA
杂志订阅 : http://os.51cto.com/art/201011/233915.htm         Database
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 一种MySQL主从同步加速方案
                                                                                                                       文/丁林.tb




    一、问题起源                                                           3、从这可以看出这个方案的缺点之一 :
                                                                                       更新能够被独立分开。比较直观
                                                                    的想法是,按照表分。
    MySQL 的主从同步一直有从库延迟的问题,原因简单描述如下 :
                                                                     三、关于 transfer
    1、 MySQL 从库上有一个 IO 线程负责从主库取 binlog 到本地。另外有
 一个 SQL 线程负责执行这些本地日志,实现命令重放 ;                                        作为这个关键的转发工具 transfer,需要提供如下功能 :

    2、 正常网络状况下 IO 线程没有性能问题(这个待会会用到) 问题是
                                   ,                                 1、能够指定同步 master 中的哪部分数据,并且能够方便地修改这个配置
 SQL 线程只有一个,更新速度跟不上。所以经常会看到从库的 CPU idle 很                           以应对 master 的加表需求。
 高,但同步性能就是上不去。
                                                                     2、支持 stop slave、start slave。支持快速切换到新主库的 change master
    二、方案雏形                                                          命令。

    单线程的 SQL 线程是造成这个问题的主要原因。比较直接的想法是把                                3、能够记录读取点,transfer 自己重启或 master 重启后能够按照记录点
 它改成多线程版本,这个据说官方版本开发中,其实我们也有一个这样的                                   继续读后面的 binlog。
 patch,但是直接写大片代码在线上提供服务的 slave 机器上这种事儿,都会
                                                                     4、能够记录分发点,transfer 自己重启或 slave 重启后能够按照记录点继
 因为担心稳定性而很难推动(写 patch 的和运维的同学,你们懂的)。

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

    说明 :

    1、 些 transfer 从 master 上 各 自 同 步 一 部 分 的 数 据, 别 独 立 更 新
      这                                          分
 slave。多进程、多线程均可。

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


                                                              021                                    51CTO 系统频道 :
                                                                                                                http://os.51cto.com
运维DBA
杂志订阅 : http://os.51cto.com/art/201011/233915.htm            Database
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com



 续同步给 slave。                                                             这样存在的问题, n 个 transfer,
                                                                                 是             磁盘写了 n 倍,更严重的是导致 SQL
                                                                       线程空转。
    用起来就会发现还有好多要求……
                                                                         我们上文提到整个流程中 IO 线程是比较空闲的,因此修改 IO 线程逻辑,
    四、方案实现
                                                                       在写入磁盘前先判断,若不符合本 transfer 的 replicate-do-table 设置,不写
    Transfer 的这么多功能,自己造轮子就累了。这里直接用 MySQL 来充当                           盘,直接放弃。
 此 角 色。 为 了 方 便 描 述, 文 还 将 之 称 为 transfer。Transfer 更 新 slave 在
                    下
                                                                         六、效果
 功能上可以使用 federated 引擎,但由于其纠结的实现导致性能上达不到要
 求,因此在 MySQL 框架层中作了一点修改,读到同步日志后,直接发送给                                    从库的 QPS 由于线程切换会有抖动,但总的执行时间与主库相同。从库
 slave。                                                                的 cpu idle 下降,与主库几乎同时恢复到 100。

    方案简单描述如下 :                                                           七、小结

    1、Slave 机器上搭另外的若干个 MySQL(transfer),将其设为 Master 的从                    1、要求在 slave 机器上多配置 n 个 transfer(是否在从库上均可)
 库,且设置 replicate-do-table, 每个 transfer 承担一部分的表。
                                                                         2、目前只能支持 statement 的 binlog 格式,实际上 row 可以支持,方案定
    2、所有 Transfer 的更新目标都设置为 slave,其更新方式是读到日志后直                         了,开发计划中。
 接 mysql_real_query 执行到 slave 上。
                                                                         3、跨表更新的语句,会按照其更新的第一个表,分发到唯一一个 transfer,
    从这可以看出这个方案的缺点之二 :
                    只能支持 statement 格式的同步方                              没有重复更新的问题,但有时序性问题。
 式。其实 row 也能支持,后面再说。
                                                                         方案的好处 :
    五、仍然延迟?
                                                                         1、功能比较齐全。直接使用 MySQL,原有的管理功能基本都能用,主库
    在 transfer 放弃 federated 引擎改用直接发送后,性能提升不少,从库同步                      从库重启 / 换库的代价比较小。
 性能增加一倍,但延迟还很大。
                                                                         2、开发量小,只在 transfer 上修改两处,不包括配置读取部分, 行以内
                                                                                                            300
   发现这个时候 slave 的机器 cpu 已经很忙了,idle 20% 以下——这个算
                                                                         3、风险相对小,不直接修改 master 和 slave 上的代码,线上容易接收。
 是好消息,总比 idle 很高但性能上不去好。
                                                                         原文 :
                                                                            http://dinglin.iteye.com/blog/1179574
   实际上是因为每个 transfer,虽然设置只同步其中的部分表,但在实现上
 是 IO 线程把 master 上的所有命令都备份到本地,然后在 SQL 线程执行的                              另外,本方案有改进版本,作者建议一并阅读 :

 时候再判断,若不符合 replicate-do-table,再放弃。                                      http://dinglin.iteye.com/blog/1187154


                                                                 022                                             51CTO 系统频道 :
                                                                                                                            http://os.51cto.com
工具
杂志订阅 : http://os.51cto.com/art/201011/233915.htm   Tools
《Linux 运维趋势》投稿信箱 : yangsai@51cto.com




 用SSHGuard免费工具帮你保护服务器
                                                                                                                    文/Linuxaria
                                                                                                                    编译/布加迪


    我之前已介绍了 fail2ban 和 logcheck 这两                                                    止针对许多服务的攻击,不仅仅是针对 SSH
 款工具可以扫描日志,并且根据你创建 / 修                                                                的攻击,还能针对几种 ftpd、Exim 和 dovecot
 改的规则,采取相应的操作 ;
              你通常可以修改                                                                 等服务的攻击。它能够适用于各大防火墙系
 iptables 规则,阻止针对你服务器发动的主动                                                            统,并且提供对 IPv6、白名单、悬挂和消息验
 攻击,或者要是日志里面发现什么异常,就发                                                                 证等功能的支持。
 警示信息给你。
                                                                                            安装
    今天我们来介绍一款类似的工具
                                                                                            sshguard 采用宽容的 BSD 许可证来发行 :
 sshguard,它与上面另外两款工具的不同之处
                                                                                      你可以使用、修改和再发行软件,风险自负,
 在于,它是用 C 编写的,所以它在运行时占用
                                                                                      可以用于任何环境(包括商业环境) 但前提
                                                                                                      ,
 的内存和处理器资源比较少,但仍能收到同
                                                                                      是你得保留在里面发现的原始版权通知。软
 样的效果。
                                                                                      件在最常用的 GNU/Linux 发行版的主存储库
    那么,sshguard 又有什么样的本领呢?                                                            中发行,面向某个 *BSD 系统,但是你也可以
                                                         从下载页面(http://www.sshguard.net/download/)下载源代码。
    简单地说,它可以接收日志消息,可以根据日志消息来检测网络服务何
 时遭到攻击,并且阻止服务攻击者的地址 ;
                    一段时间过后,它会解禁。                           要把 sshguard 安装到 Debian(或 Ubuntu 等 .deb 其他发行版) 只要从
                                                                                                        上,
                                                         终端运行下列命令 :
    完整地说,sshguard 在机器上作为一个很小的后台驻留程序来运行,能
 够接收日志消息(可接收来自诸多途径的消息,比如来自系统日志)。如果                         sudo aptitude install sshguard
 它确定了 X 地址对 Y 服务造成危害,就会启动机器里面防火墙(注 :
                                   防火墙
                                                           设置和配置
 须得到支持)中的规则,以阻止 X 地址。
                                                           Sshguard 与系统相连的点有两个 :
    sshguard 阻止 X 地址的状态会保持一段时间,但是之后会自动解禁。
                                                           日志系统(sshguard 如何接收需要监控的日志消息)
    请注意 :
        尽管名称很容易让人误解,但是 sshguard 在默认情况下能够阻


                                                   023                                              51CTO 系统频道 :
                                                                                                               http://os.51cto.com
Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站

More Related Content

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

Linux运维趋势 第16期 cdn缓存系统
Linux运维趋势 第16期 cdn缓存系统Linux运维趋势 第16期 cdn缓存系统
Linux运维趋势 第16期 cdn缓存系统51CTO
 
Linux运维趋势 第0期 运维自动化
Linux运维趋势 第0期 运维自动化Linux运维趋势 第0期 运维自动化
Linux运维趋势 第0期 运维自动化51CTO
 
Linux运维趋势 第13期 服务器优化
Linux运维趋势 第13期 服务器优化Linux运维趋势 第13期 服务器优化
Linux运维趋势 第13期 服务器优化51CTO
 
Linux运维趋势 第13期 服务器优化(最终版)
Linux运维趋势 第13期 服务器优化(最终版)Linux运维趋势 第13期 服务器优化(最终版)
Linux运维趋势 第13期 服务器优化(最终版)51CTO
 
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)AgileTour@TW
 
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Miles Chou
 
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...Edward Kuo
 
51 cto linuxops_issue2
51 cto linuxops_issue251 cto linuxops_issue2
51 cto linuxops_issue2Yiwei Ma
 
Linux运维趋势 第12期 故障排除
Linux运维趋势 第12期 故障排除Linux运维趋势 第12期 故障排除
Linux运维趋势 第12期 故障排除51CTO
 
[2018 DevOps Days]大型企業如何推行DevOps
[2018 DevOps Days]大型企業如何推行DevOps[2018 DevOps Days]大型企業如何推行DevOps
[2018 DevOps Days]大型企業如何推行DevOpsEdward Kuo
 
DevOps at DUDU
DevOps at DUDUDevOps at DUDU
DevOps at DUDU晓东 杜
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous deliveryQiao Liang
 
[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用
[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用
[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用Edward Kuo
 
微軟 Hololens 混合現實平台開發
微軟 Hololens 混合現實平台開發微軟 Hololens 混合現實平台開發
微軟 Hololens 混合現實平台開發Edward Kuo
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用yiditushe
 
51 cto linuxops_issue4
51 cto linuxops_issue451 cto linuxops_issue4
51 cto linuxops_issue4Yiwei Ma
 
Frontend devops-v1.0
Frontend devops-v1.0Frontend devops-v1.0
Frontend devops-v1.0Yan Wang
 
DevOps Days Taipei 2018
DevOps Days Taipei 2018DevOps Days Taipei 2018
DevOps Days Taipei 2018Cobra Chen
 
做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流lichengdongdong
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC
 

Similar to Linux运维趋势 第14期 高性能电子商务网站 (20)

Linux运维趋势 第16期 cdn缓存系统
Linux运维趋势 第16期 cdn缓存系统Linux运维趋势 第16期 cdn缓存系统
Linux运维趋势 第16期 cdn缓存系统
 
Linux运维趋势 第0期 运维自动化
Linux运维趋势 第0期 运维自动化Linux运维趋势 第0期 运维自动化
Linux运维趋势 第0期 运维自动化
 
Linux运维趋势 第13期 服务器优化
Linux运维趋势 第13期 服务器优化Linux运维趋势 第13期 服务器优化
Linux运维趋势 第13期 服务器优化
 
Linux运维趋势 第13期 服务器优化(最终版)
Linux运维趋势 第13期 服务器优化(最终版)Linux运维趋势 第13期 服务器优化(最终版)
Linux运维趋势 第13期 服务器优化(最终版)
 
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)
 
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案
 
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
 
51 cto linuxops_issue2
51 cto linuxops_issue251 cto linuxops_issue2
51 cto linuxops_issue2
 
Linux运维趋势 第12期 故障排除
Linux运维趋势 第12期 故障排除Linux运维趋势 第12期 故障排除
Linux运维趋势 第12期 故障排除
 
[2018 DevOps Days]大型企業如何推行DevOps
[2018 DevOps Days]大型企業如何推行DevOps[2018 DevOps Days]大型企業如何推行DevOps
[2018 DevOps Days]大型企業如何推行DevOps
 
DevOps at DUDU
DevOps at DUDUDevOps at DUDU
DevOps at DUDU
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous delivery
 
[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用
[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用
[2021 DevDays]Microsoft Teams 整合 Azure DevOps之實務應用
 
微軟 Hololens 混合現實平台開發
微軟 Hololens 混合現實平台開發微軟 Hololens 混合現實平台開發
微軟 Hololens 混合現實平台開發
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用
 
51 cto linuxops_issue4
51 cto linuxops_issue451 cto linuxops_issue4
51 cto linuxops_issue4
 
Frontend devops-v1.0
Frontend devops-v1.0Frontend devops-v1.0
Frontend devops-v1.0
 
DevOps Days Taipei 2018
DevOps Days Taipei 2018DevOps Days Taipei 2018
DevOps Days Taipei 2018
 
做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流做一个“懒惰”的程序员-LCP框架系列交流
做一个“懒惰”的程序员-LCP框架系列交流
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)
 

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

  • 1.
  • 2. 目录 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Index 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 目录 人物·People 技巧·工具·脚本·DBA 003 百度高级架构师乔梁:DevOps=Culture+Tools 021 一种MySQL主从同步加速方案 023 用SSHGuard免费工具帮你保护服务器 交流·Interact 025 OpenStack实践之旅:安装配置篇 005 架构师不可不知的十大可扩展架构 027 榨干服务器:让进程运行在指定的CPU 八卦·News 007 Ubuntu 11.10,Fedora 16正式发布 专题·Special 009 解密淘宝网的开源架构 出版方 : 51CTO 系统频道(北京无忧创想信息技术有限公司) 011 淘宝软件基础设施近年发展情况 杂志主编 : 杨赛 013 Hadoop在eBay的应用 联系方法 : yangsai@51cto.com 010-68476606(分机 8035) 015 NoSQL数据库笔谈——应用篇 出版日期 : 2011 年 11 月 11 日 每月第 2 个星期五出版 017 构建高安全电子商务网站之自动备份 订阅 : http://os.51cto.com/art/201011/233915.htm 019 老板要省钱 小公司如何部署实施Linux集群网站 002 51CTO 系统频道 : http://os.51cto.com
  • 3. 人物 杂志订阅 : http://os.51cto.com/art/201011/233915.htm People 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 百度高级架构师乔梁:DevOps=Culture+Tools 文/苏慧 传统的软件交付过程是通过架构、业务、技术运维、保障等团队之间一步 的: 三个月之后,团队的交付周期就变成了三周一次,并在接下来的三个月 一步把交付物交给下一个环节,最后产生交付软件的价值。这种交付方式 里一直保持这种频率。 的一个明显缺点是各角色仅关注于自己本身的工作,在中间的流通环节产 实际上,乔梁说,三周交付并不是该团队的极限,还可以优化到两周或更 生了很多不必要的浪费,如时间成本和沟通成本等 ; 同时,这种阶段性的交 少,不过,在一种工作方式产生变革并取得成功的结果后,乔梁认为,应该把 付通常时间较长,一旦产生问题造成的影响也较大。 这种结果持续一段时间以使之固化下来,然后才可以进入下一个阶段。 敏捷开发是为解决这一问题而提出的解决方案。在这种方法里,业务人 转 变 的 过 程 当 然 是 痛 苦 的, 梁 说, 是 得 到 的 收 益 也 很 大” —— 乔 “但 员也深入到开发当中,这样需求、开发、测试前面三个环节被打通了,但是, DevOps 带给团队的“不仅是技术上的改变,还有行为上的改变”。 到部署的时候仍会出现问题 : 因为项目是直到最后才交给运维人员部署到 线上,部署时经常出现比如 IP 问题、机器资源问题、与线上已有程序的冲突 很多与会者都关心这种工作方式的可行性,在会后的提问中,大家的焦 等,要花费大量时间解决。出现这种结果是因为,虽然整个团队共同的目标 点也集中在这一块 : 开发团队和运维团队真的能够那么协调的工作吗 ? 他 是项目的最终实施,但是作为两个不 们是怎么解决一些工作和技术上的冲突 同角色的部门,开发团队和运维团队 “把交付周期变更为三周一次,是这个团队的 的呢 ? 对具体的目标仍有不同的追求。 开发人员和运维人员共同提出的。” 在会后的交流中,乔梁向 51CTO 记者 那么如何解决开发团队和运维团 表示,目前 DevOps 这种方式尚没有在百 队之间的这种隔阂 ?DevOps 应运而生。 度的整体技术团队中应用,但是他所负责的 high level 的团队使用这种方 式取得了明显的效果。而且,把交付周期变更为三周一次,是这个团队的开 10 月 22 日, “QCon 杭州 2011 全球企业开发者大会” 来自百度项 在 上, 发人员和运维人员共同提出的,对于 KPI 进行整体考核的要求,也是团队成 目管理部的高级架构师乔梁与大家分享了百度的一个交付团队是如何利用 员提出的。 DevOps,在半年的时间内让交付周期从每三个月一次提升到每三周一次的。 “你要培养一种文化,要建立一种机制。让运维人员参与到更早——只 “我改变了他们的工作方式” 乔梁说。新的制度的确影响到了团队的日 , 要项目开始,启动阶段就要把运维人员引入进来,一起开个会,让他们知道 常工作,在开始的三个月,团队的开发速度降了下来。不过这种代价是值得 项目的进程”。同时,开发人员也需要了解到运维人员的工作状态,因为一 003 51CTO 系统频道 : http://os.51cto.com
  • 4. 人物 杂志订阅 : http://os.51cto.com/art/201011/233915.htm People 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 旦他们了解到运维人员每天要处理多 变更都走同样地流程 ; 所有的事情都 少条告警,再开发的时候就会注意。据 “首先,持续交付的一个前提是持续集成。其 要做版本控制。DevOps 要求所有的人 乔梁介绍,有些公司是通过轮岗的方式 次,将大量的工作通过自动化手段来实现。 都要做主干开发。 来促成这种相互理解的。“最后一点也 提高工作效率,自动化是一个很重要 是最关键的一点” 乔梁说 , “任何一种产 的手段。乔梁在演讲中也多次提到“自动化”这个特点,那么自动化是不是 品的成功,不只是你开发团队的成功。我希望 DevOps 里能为同一件事情来 DevOps 的一个前提呢 ? 鼓掌,来建立一种沟通协作的文化”。 在 回 答 51CTO 记 者 这 个 问 题 的 时 候, 梁 表 示, 乔 “DevOps 本 身 第 一 Culture( 文化 ) 是最重要的,你得让所有人都参与进来,至于自动化,它只 是一种手段一种工具,因为当你用传统交付的方法你的人力的消耗会很大, 会对运维、测试等造成很大的压力,如果你不解决这个问题的话,那你测试 和运维都不会同意的”。 至于实现自动化脚本的手段,乔梁介绍百度是有自己的一套管理运维平 台,其他企业可能会通过 puppet 之类的工具去做。在不同的环节都有不同 的自动化工具可以选择。“你不用这些工具没关系,但是比如环境准备,还 有应用度等等你必然要有一套自己的方式。 乔梁说。 ” 针对目前 DevOps 在国内外的发展情况,乔梁说,DevOps 本身还是比较 DevOps首先是一种文化转变 新的东西,国内外并没有很大的差距, “我觉得还是意识层面的差距。因为 改变交付团队各个环节各自为政的局面,建立一种全新的工作方式,这 DevOps 里面很多技术很多国内的公司也在用,但是他还是把我只把我自己 是 DevOps 的第一步。然后,我们需要检视开发运维过程中的每一个环节, 运维的这一部分做了,他连不起来,大家还有隔离。” 减少不必要的浪费。 正如乔梁在一张演讲 PPT 中所写道的 : DevOps=Culture+Tools” 它是 “ , 这些浪费包括 : 一些容易造成高风险问题的不必要的多分支开发 ; 问题 工作思路的转变辅以适当工具的结果,首要的还是文化转变——“包括我 被发现的时间推迟 ; 基于流程平台的沟通 ; 常规的例行工作上花费的大量 们之前提到的敏捷开发,基本上也是一种文化的变化,而不是一种工具的变 人工等。 化。 乔梁说。 ” 为减少浪费,DevOps 团队做了很多工作。首先,持续交付的一个前提是 原文 : http://os.51cto.com/art/201110/298786.htm 持续集成 ; 其次,将大量的工作通过自动化手段来实现 ; 部署脚本,所有的 004 51CTO 系统频道 : http://os.51cto.com
  • 5. 交流 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Interact 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 架构师不可不知的十大可扩展架构 文/Srinath 编译/核子可乐 对于大多数架构师而言, “可扩展性”在软件架构方面是最虚无缥缈的说 无共享体系架构实例 》一文中,专门讨论了此类架构。 法。这毫不奇怪,因为可扩展性正是如今软件设计领域最值得优先考虑的 LB + 无状态节点 + 可扩展存储 要素。然而,计算机科学家们还无法了解一套单独的架构如何才能扩展至 各类应用环境当中。相反,我们在数量繁多的方案中所设计出的可扩展性 传统的 三层式 Web 架构 使用的就是这种模型。该模型包括数个与可 架构,往往以业界较为通用的已知可扩展模式及个人偏好为标准。简单来 扩展存储交互的无状态节点以及一个分布于节点间负载中的负载平衡器。 讲,打造一套具备可扩展性的系统已经变得更像是一门艺术而不单单是技 在这一模型中,存储通常作为限制因素存在, NoSQL 存储则可以利用这 但 术。 套模型创建出具备相当可扩展性的系统。 我们常常会通过观摩杰作体会并学习艺术的精髓,而可扩展性也应该遵 点对点架构 ( 分布式哈希表 (DHT) 以及内容寻址网络 (CAN)) 循同样的路线! 这套模型提供了一些传统的可扩展算 在这篇文章中,我将列出数款为大 “每个单元可以是一个单独的节点或是紧密耦 法,这些算法的各个方面几乎全部按对数 家所耳熟能详的可扩展性架构。通常 合的节点所构成的集群。用户可以使用DNS轮 进行了等比例增加。举例来说, Chord、 像 情况下,架构师们完全可以借鉴已知 询、硬件负载平衡器或者软件负载平衡器达成负 Pastry(特指免费版)以及 CAN 都属于此 类。 而 以 Cassandra 为 代 表 的、 于 P2P 基 的可扩展架构模式,进而创造出新的 载平衡效果。” 可扩展架构。 架构的几款 NoSQL 系统也是其中的成员。 《 展望 P2P 系统中的数据 》一文就深入 LB ( 负载平衡器 ) + 无共享单位 探讨了这类模型的各种细节。 该模型中包含一系列单元,各单元彼此间不共享任何内容,且一致指向 分布式队列 一个将输入文讯按一定条件发往单元处的负载平衡器(这构成一个循环,以 负载等情况为基础)。每个单元可以是一个单独的节点或是紧密耦合的节 这种模型以将队列实施(即先进先出交付机制)作为网络服务处理为基 点所构成的集群。用户可以使用 DNS 轮询、硬件负载平衡器或者软件负载 础。该模型通过 JMS 队列而广泛得到采用。一般会遵循这种做法的有任 平衡器达成负载平衡效果。创建一套负载均衡的层次结构,并在其中结合 务队列以及通过保持队列分级体系实现扩展性的任务队列版本,后者在负 前面提到的各种负载平衡器也是可行的。在由 Michael Stonebraker 撰写的《 载无法及时处理时,任务会由低级层面向高级层面传递。 005 51CTO 系统频道 : http://os.51cto.com
  • 6. 交流 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Interact 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 发布 / 订阅模式 流处理 “可扩展性的实现只有三种方式,即:分布、 一般用于通过网络向彼此发布订阅 这种模型被用于处理源源不断的数 讯息。 发布与订阅的多面性 》这一 《 缓存及异步处理。” 据流及数据。这种处理方式通过网络 经典论文中详细的介绍这一模型,该模 中的处理节点获得支持(例 如 Aurora、 型方面最典型的例子即 NaradaBroker 与 EventJava 。 Twitter Strom 以及 Apache S4 等)。 小道消息与自然灵感式模型 可扩展存储 这种模型源自日常生活中小道消息的传播途径,也就是每个节点将随机 该模型的应用范围从数据库、NoSQL 存储、服务注册到文件系统都有体 选择后续节点以交换信息。正如现实生活中的实际反馈,这种八卦型算法 现。 链接中的这篇文章 以可扩展性为切入点对其进行了深入讨论。 在信息传播方面出奇地迅速。该模型的另一大分支则是受到生物学影响的 综上所述,可扩展性的实现只有三种方式, : 即 分布、缓存及异步处理。 启发式算法。自然世界中存在着大量协调及扩展方面极为卓越的固有算法。 前文所提到的各种架构事实上都是把这三种方式进行不同组合并加以实 举例来说,蚂蚁、人类以及蜜蜂等等,都能够以最简洁的交流方式协调好扩 施。而另一方面,不利于可扩展性的因素,除了糟糕的编码本身,全局性协 展性方面的需要。模型中的算法正是借鉴了这些实际存在的现象。在论文《 调也起到了重要的影响。简单来说,任何一种全局性协调都会限制系统的 从流行病的蔓延到分布式计算 》中对这种模型有着详尽的叙述。 可扩展性。本文中所提到的各种架构也只是在做好了本地性协调,而非全 地图缩小 / 数据流 局性协调。 这一概念首先由谷歌公司提出,地图缩小为工作的描述及执行提供了一 然而,将它们有机地结合起来以创建一套极具可扩展性的架构可不像说 套可扩展的模式。虽然内容简单,但它仍然成为联机分析处理方面的首要 起来那么容易,除非我们能找到一种全新的扩展模式。不过经验告诉我们, 处理模式。数据流则是一种更先进的方式,用来表达执行信息 ; 而像 Dryad 比起搞一套全新的架构,采用为我们所熟知且更易驾驭的可扩展性解决方 及 Pig 这样的项目为数据流的执行提供了可扩展的框架。论文 地图缩小 : 案永远是更好的选择。 《 大型集群上的简化数据处理 》中设置了专门的主题,详细讨论这一内容。 原文 : List of Known Scalable Architecture Templates Apache 的 Hadoop 就是这种模型的代表性产品。 译文 : http://os.51cto.com/art/201111/301143.htm 责任树形图 【推荐阅读】 这种模型打破了递归问题的束缚,将整个流程以树状形式加以处理 ; 每 个父节点将工作下放至子节点。这种模型扩展性强,并已经被应用于数款 互联网运营智慧 -- 高可用可扩展网站技术实战 可扩展性架构当中。 教你五招,快速提升 MySQL 可扩展性 006 51CTO 系统频道 : http://os.51cto.com
  • 7. 八卦 杂志订阅 : http://os.51cto.com/art/201011/233915.htm News 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com Ubuntu 11.10,Fedora 16正式发布 ——八卦,新闻与数字 2011.10 - 2011.11 【Ubuntu】Ubuntu 11.10 是 Ubuntu 的第 15 个重大版本发布,桌面版和服 【Qt】Nokia 21 日早宣布 Qt 项目真正成为完全开源的项目。Qt 项目由 务器版都有 18 个月的生命周期。 Qt-project.org 主持,该组织已经设置一台 Gerrit 服务器作为新的项目管理 架构,来方便处理代码审核、补丁修复等。 http://os.51cto.com/art/201105/264870.htm http://os.51cto.com/art/201110/298750.htm 【脑细胞】网站架构的常见演进路径 : 与 db 共用→ web 和 db 拆分→ web 多台 web → db 主从→ web 缓存→ db 缓存→存储拆分→ Scale Up →按应 【Mint】Linux Mint 下一个版本“Lisa” 将会继续支持 GNOME 2.32 作为 , 用竖切 web →内存当硬盘→按时间横切 db →按事务竖切 db →按 hash 竖 Linux Mint 标准版本的默认桌面环境。该版本基于 Ubuntu 11.10。同时, 切 db →存储网络化→虚拟化→云,看起来都有章可循,但不知多少技术人 也会引入对 GNOME 3 的支持。 员在这路上死了无数脑细胞,还有那无数的不眠之夜。 http://os.51cto.com/art/201110/298193.htm http://weibo.com/1649415495/xwl7WBXwa 【Amazon】Bezos 派出了几位首席牛头犬来监督并确保进度,领头的是和 【咆哮】我究竟为什么受够了 Linux ? Linux 机器可以成为出色的服务器。 熊一样大的牛头犬 : Rick Dalzell,Rick 是以前是陆军突击队队员,西点军校 但是它们需要有一组专门的 Linux 技术人员,这些人了解关于 Linux 的一切 毕业生,拳击手,和沃尔玛的首席虐刑官 /CIO,而且他也是个高大、和蔼、令 事情,了解所有的联络暗号……而我就是个工作忙碌的人。 人敬畏的人,还是经常使用”hardened interface”词的人。 http://os.51cto.com/art/201110/298945.htm http://coolshell.cn/articles/5701.html 【Hadoop】微软对 Hadoop 的支持,对我而言,这是微软第一次与 IBM 及甲 【Linux 基 金 会】Linux 基 金 会 宣 布 新 增 5 位 欧 洲 新 成 员, 们 分 别 是 他 骨文等竞争对手并肩而立,计划实施大型合作项目。 AboveIT,Comarch,CSR,Symbio 和 Tieto。 http://os.51cto.com/art/201110/297367.htm http://os.51cto.com/art/201110/299230.htm 【Fedora】Fedora 16 在 11 月 8 日 正 式 发 布, 要 新 特 性 包 括 Aeolus 主 【Samba】微软开源技术中心的 Stephen Zarkos 为 Firefox 和 Samba Conductor、Condor Cloud、HekaFS、OpenStack 以及 pacemaker-cloud 在 内 的 NT 局域网管理器认证的扩展保护提交了一些概念证明代码,这是实现 的增强云支持,KDE Plasma 工作 空间 4.7,GNOME 3.2 等。 Samba/Windows 互操作性的一大步。 http://os.51cto.com/art/201111/300952.htm http://os.51cto.com/art/201111/300308.htm 007 51CTO 系统频道 : http://os.51cto.com
  • 8. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 构建高性能电子商务网站 【编者按】作为电子商务运维,一些基本功是必须掌握的 : 一、熟悉安全技术,了解硬件防火墙性能,能熟悉的配置 iptables 和了解 Linux/Unix 相关的安全工具 ; 二、熟练的配置 Linux 的集群技术,比如 LVS/Nginx/HAproxy,了解其原 理和会话保持机制 ; 三、熟练的配置 Nginx 和 Apache 服务器,能熟练的配置其正则 ; 四、熟练和了解 MySQL 或 Oracle 数据库,至少要了解一种 ; 五、熟悉存储 ; 六、熟悉和了解虚拟化技术 ; 七、极熟悉 SHELL 脚本,用其实现工作中的各项需求 ; 八、 PHP 或 Java 代码。 懂 (以上总结来自抚琴煮酒的一次访谈) 在大型电子商务网站下,运维的工作会细分,不过上述内容仍是基本功。 此外,由于大规模网站遇到的各方面挑战,会要求开发人员和运维人员能够 与时俱进,在网站遭遇瓶颈之前做好应对。 本专题收集了一些国内外大型电子商务网站的经验分享,最后也介绍了 一些通用的构建、维护技巧。 008 51CTO 系统频道 : http://os.51cto.com
  • 9. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 解密淘宝网的开源架构 文/曾宪杰 编者按 : 本文于 2008 年撰写,文中提到的数字和内容在三年当中发生了 而 不 是 小 型 机, 么 Server 的 操 作 系 统 供 我 们 选 择 的 一 般 也 就 是 Linux, 那 很多变化,大家可以根据这些变化来印证淘宝在技术上都做了哪些工作。 FreeBSD, windows 2000 Server 或者 Windows Server 2003。如果不准备 采用微软的一系列产品构建应用,并且有能力维护 Linux 或者 FreeBSD,再 淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币, 加上成本的考虑,那么还是应该在 Linux 和 FreeBSD 之间进行选择。可以说, 注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站。那么 现在 Linux 和 FreeBSD 这两个系统难分伯仲,很难说哪个一定比另外一个要 对于淘宝网这样大规模的一个网站,我猜想大家一定会非常关心整个网站 优秀很多、能够全面的超越对手,应该 都采用了什么样的技术、产品和架构, 是各有所长。那么在选择的时候有一个 也会很想了解在淘宝网中是否采用了 “要先选择操作系统,然后才是操作系统基础 因素就是企业的技术人员对于哪种系 开源的软件或者是完全采用的商业软 上的应用软件。” 统更加的熟悉,这个熟悉一方面是系统 件。那么下面我就简单的介绍一下淘 管理方面,另外一方面是对于内核的熟 宝网中应用的开源软件。 悉,对内核的熟悉对于性能调优和对操作系统进行定制剪裁会有很大的帮 对于规模稍大的网站来说, IT 必然是一个服务器集群来提供网站服 其 助。而应用全面的优化、提升性能也是从操作系统的优化开始的。 务,数据库也必然要和应用服务分开,有单独的数据库服务器。对于像淘宝 应用服务器 网这样规模的网站而言,就是应用也分成很多组。那么下面,我就从应用服 务器操作系统、应用服务器软件、Web Server、数据库、开发框架等几个方面 在确定 了服 务器 的硬件、服务 器的操 作系统 之后,下面 我们来 说说业 来介绍一下淘宝网中开源软件的应用。 务系统的构建。淘宝网有很多业务系统应用是基于 JEE 规范的系统。还 有一些是 C C++ 构建的应用或者是 Java 构建的 Standalone 的应用。那 操作系统 么 我 们 要 选 择 一 款 实 现 了 JEE 规 范 的 应 用 服 务 器。 我 们 的 选 择 是 JBoss 我们首先就从应用服务器的操作系统说起。一个应用服务器,从软件的 Applcation Server。JBoss AS 是 RedHat 的一个开源的支持 JEE 规范的应用 角度来说他的最底层首先是操作系统。要先选择操作系统,然后才是操作 服务器。在几年前,如果采用 Java 技术构建互联网应用或者企业级应用, 系统基础上的应用软件。在淘宝网,我们的应用服务器上采用的是 Linux 在开源软件中的选择一般也就是 Apache 组织的 Tomcat、JBoss 的 JBoss 操作系统。Linux 操作系统从 1991 年第一次正式被公布到现在已经走过 AS 和 Resin。 严 格意 义 上 讲,Tomcat 和 Resin 并 不 能 算 是 一 个 应 用 服 务 了十七个年头, PC Server 上有广泛的应用。硬件上我们选择 PC Server 在 009 51CTO 系统频道 : http://os.51cto.com
  • 10. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 器, 们 是 实 现 了 部 分 J2EE 规 范 的 一 他 许部分节点失效 ),保证应用的健壮性 个容器。而商业软件的选择就是 IBM “几年前,Apache几乎是Linux系统上开源 和可靠性。可以这么说,在关系数据库 的 WebSphere 和 BEA 的 WebLogic。 到 Web Server的唯一选择。” 管理系统的选择上,可以考虑应用本身 了 现 在, 了 JBoss AS 外, 除 Apache 的 的情况来决定。 Geronimo,Sun 的 Glassfish 也 都 是 很 优 一个互联网应用,除了服务器的操作系统,Web Server 软件,应用服务器 秀的 JEE 应用服务器。也给现在的开发人员提供了更多的选择。具体对于 软件,数据库软件外,我们还会涉及到一些其他的系统,比如一些中间件系 目前 JEE 应用服务器的比较。这边就不在赘述。 统、文件存储系统、搜索、分布式框架、缓存系统等等。在淘宝网,这些系统 在应用服务器前端,我们采用了 Web Server 做了一次转发,我们选择的 都是自主开发的,没有采用目前商业的或者开源的产品。有些系统,会存在 Web 服务器是大名鼎鼎的 Apache。几年前,Apache 几乎是 Linux 系统上 着一些开源的产品或者商业产品。但是,考虑到淘宝网自己的需求和大并 开源 Web Server 的唯一选择。那个时候虽然也有一些其他的开源的 Web 发量的压力,这些系统都选择了自主开发框架。 Server,但是从功能和稳定性上来说都无法和 Apache 相对。在今天来说, 前面谈的都是系统级的产品,下面我们说说开发框架的使用。可能有朋 Lighty 也会是一个非常好的选择。Lighty 是一个非常轻量级、占用内存资源 友想问,作为一个如此大规模的网站,淘宝网的 Web 展现层采用的是什么 也比较少的 Web Server。虽然功能上没有 Apache 强大,但是在不少场景下, 框架,是怎么实现的呢?曾经也有到淘宝的应聘者问过我这个问题,他问我 性能是非常出色、强于 Apache 的。而微软的 IIS,就只能工作在 Windows 说是不是用的 struts。我告诉他说不是的。其实淘宝网的 Web 展现层的 的 系 统 上 了。 并 且 使 用 IIS 的 话, 本 上 也 就 是 选 择 了 ISAPI、 基 ASP 或 者 框架用的不是 struts,不是 webwork,不是 spring mvc 等等。淘宝网的 Web ASP.NET 进行 Web 应用的开发了。 展现层的框架用的是集团内部自主开发的一套 Web 框架。这个框架能够 数据库 解决一些其他 Web 框架不能解决的、在淘宝的应用中又会出现并需要解 决的问题。在淘宝的多个应用中,也采用了一些开源的框架,比如 Spring、 说完了我们采用的操作系统、应用服务器、WebServer 后,下面就来谈 iBatis、jBPM、Hessian、Mina 等等。这些开源软件的采用为我们构建应用系 谈我们的数据库。在淘宝网的应用中,采用了两种关系型数据库管理系 统提供了很大的帮助。 统。一个是 Oracle 公司的 Oracle 10g,另外一个是 Sun MySQL 的 MySQL。 Oracle 是一款优秀的、广泛采用的商业数据库管理软件。有很强大的功能 原文 : 和安全性,可以处理相对海量的数据。而 MySQL 是一款非常优秀的开源数 http://publish.itpub.net/o/2008-06-18/200806180707423.shtml 据库管理软件,非常适合用多台 PC Server 组成多点的存储节点阵列 ( 这 里我所指的不是 MySQL 自身提供的集群功能 ),每单位的数据存储成本也 【编辑推荐】 非常的低廉。用多台 PC Server 安装 MySQL 组成一个存储节点阵列,通过 高性能网站建设的 14 个原则 MySQL 自身的 Replication 或者应用自身的处理,可以很好的保证容错 ( 允 如何解决京东商城的性能瓶颈? 010 51CTO 系统频道 : http://os.51cto.com
  • 11. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 淘宝软件基础设施近年发展情况 整理/51CTO系统频道 本文内容主要从章文嵩博士的 PPT 分享《淘宝软件基础设施构建实践》 跨机架和 IDC 的负载均衡和冗余安全策略。 整理而来,其中一些淘宝开源项目的介绍整理自淘蝌蚪,淘宝核心系统团队 完全平滑扩容 博客,以及淘宝的技术们对外的分享。 淘宝分布式KV引擎(TAIR) 来源 : http://www.slideshare.net/wensongzhang/ss-8058883 http://code.taobao.org/p/tair/wiki/ 截止到今年 5 月,淘宝的生产服务器约为 2 万台。为了确保大数据状态 下保持系统的可扩展性和性能,淘宝进行了如下工作 : Tair 是一个分布式的 key/value 结构数据的解决方案,系统默认支持基 于内存和文件的存储引擎,对应于通常我们所说的缓存和持久化存储。 淘宝分布式文件系统(TFS) 特点 http://code.taobao.org/p/tfs/wiki/ 基于对照表的灵活、良好的可扩展性 TFS,Taobao File System,淘宝内部使用的分布式文件系统,主要针对海 量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商 轻量级的 configserver 品描述等数据的存储。 抽象的存储引擎层,支持添加新的存储引擎 特点 自动的复制和迁移,对用户透明 完全扁平化的数据组织结构,抛弃了传统文件系统的目录结构。 多机架和多数据中心的支持 在块设备基础上建立自有的文件系统,减少 EXT3 等文件系统数据碎片 插件容器 带来的性能损耗 数据的 version 支持 单进程管理单块磁盘的方式,摒除 RAID5 机制 原子计数器支持 带有 HA 机制的中央控制节点,在安全稳定和性能复杂度之间取得平衡。 item 支持 尽量缩减元数据大小,将元数据全部加载入内存,提升访问速度。 011 51CTO 系统频道 : http://os.51cto.com
  • 12. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 千亿级别分布式数据库系统 OceanBase 服务优化 http://code.taobao.org/p/OceanBase/wiki/ 针对 Apache/Nginx、HTTP 模块、Squid、LVS、HAProxy、TCP 方面的优化。 OceanBase 是一个支持海量数据的高性能数据库系统,实现了数千亿条 Nginx 优化方面,淘宝有一个开源的模块,大家可以参考一下 : 记录、数百 TB 数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、 http://code.taobao.org/p/nginx_concat_module/ 广告、应用研发等部门共同完成。 去年的 Velociy 大会上,朱照远(叔度)和王晓哲(清无)也分享过 Nginx 淘宝的商品、交易、订单、购物爱好等数据通常是结构化的,并且数据之 定制开发方面的经验。 间存在各种各样的关联,传统的关系数据库曾经是这些数据的最佳载体。 然而,随着业务的快速发展,这些数据急剧膨胀,记录数从几千万条增加到 Java环境优化 数十亿条,数据量从百 GB 增加到数 TB,未来还可能增加到数千亿条和数百 这方面可以参考淘宝 Java 中间件团队博客(注 : 该团队已经在今年和淘 TB,传统的关系型数据库已经无法承担如此海量的数据。OceanBase 解决不 宝业务平台团队合并为通用产品团队): 断增加的结构化数据存储与查询的问题。 http://rdc.taobao.com/team/jm/ 从 Eric Brewer 教 授 的 CAP( 一 致 性 C: Consistency, 可 用 性 A: Linux内核优化与定制 Availability,分区容错性 P: Tolerance of network Partition) 理论角度分析, 作为电子商务企业,淘宝和其他公司的业务对一致性和可用性的要求高于 夸父通讯中间件 分区容错性,数据特征是数据总量庞大且逐步增加,单位时间内的数据更新 任卿对夸父通讯中间件进行过介绍 : 量并不大,但实时性要求很高。这就要求我们提供一套更加偏重于支持 CA 特性的系统,同时兼顾可分区性,并且在实时性、成本、性能等方面表现良 http://www.slideshare.net/openparty/ss-6680035 好。 低功耗硬件平台 OceanBase 现在已经应用于淘宝收藏夹,用于存储淘宝用户收藏条目和 这方面可以参考淘宝最近公开的开源绿色计算项目 : 具体的商品、店铺信息,每天支持 4 ~ 5 千万的更新操作。 http://www.greencompute.org/ MySQL优化 CDN系统 针 对 复 制、 步、 志 系 统、 机 效 率、 载 均 衡 方 面 的 优 化。 详 见 同 日 单 负 这方面也可以参考任卿的介绍 : yufeng 的另一篇分享 : http://www.slideshare.net/colderboy17/cdn-9022813 http://www.slideshare.net/mryufeng/mysql-7583273 012 51CTO 系统频道 : http://os.51cto.com
  • 13. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com Hadoop在eBay的应用 文/陆嘉恒 在 eBay 上存储着上亿种商品的信息,而且每天有数百万种的新商品增 Hive 是用于建立数据仓库的使用 SQL 语法的声明性语言。对于开发者、 加,因此需要用云系统来存储和处理 PB 级别的数据, Hadoop 则是个很好 而 产品经理和分析师来说,SQL 接口使得 Hive 成为很好的选择。 的选择。 4)工 具 和加 载库 层,UC4 是 eBay 从多 个数 据源 自 动加 载数 据的 企 业 Hadoop 是 建 立 在 商 业 硬 件 上 的 容 错、 扩 展、 布 式 的 云 计 算 框 架。 可 分 级 调 度 程 序。 加 载 库 有 : 计 库 统 (R) 机 器 学 习 库 、 (Mahout) 数 学 相 关 库 、 eBay 利用 Hadoop 建立了一个大规模的集群系统— Athena,它被分为五层 (Hama) eBay 自己开发的用于解析网络日志的库 和 (Mobius)。 (如下图所示) 下面从最底层向上开始介绍 : , 5)监视和警告层,Ganglia 是分布式集群的监视系统,Nagios 则用来警告 1)Hadoop 核心层,包括 一些关键事件如服务器不可达、硬盘已满等。 Hadoop 运 行 时 环 境、 些 一 eBay 的企业服务器运行着 64 位的 RedHat Linux : 通 用 设 施 和 HDFS, 中 文 其 件系统为读写大块数据而 NameNode 负责管理 HDFS 的主服务器 ; 做了一些优化,如将块的大 JobTracker 负责任务的协调 ; 小由 128MB 改为 256MB。 HBaseMaster 负责存储 HBase 存储的根信息,并且方便与数据块或存取区 2)MapReduce 层,为 开 域进行协调 ; 发 和 执 行 任 务 提 供 API 和 ZooKeeper 是保证 HBase 一致性的分布式锁协调器。 控件。 用于存储和计算的节点是 1U 大小的运行 Cent OS 的机器,每台机器拥 3)数据获取层,现在数据获取层的主要框架是 HBase、 和 Hive : Pig 有 2 个四核处理器和 2TB 大小的存储空间, 38 ~ 42 个节点单元为一个 每 HBase 是根据 Google BigTable 开发的按列存储的多维空间数据库,通过 rack,这组建成了高密度网格。有关网络方面,顶层 rack 交换机到节点的带 维护数据的划分和范围提供有序的数据,其数据储存在 HDFS 上。 宽为 1Gbps,rack 交换机到核心交换机的带宽为 40Gpbs。 Pig(Latin)是提供加载、筛选、转换、提取、聚集、连接、分组等操作的面 这个集群是 eBay 内多个团队共同使用的,包括产品和一次性任务。这 向过程的语言,开发者使用 Pig 建立数据管道和数据工厂。 里使用 Hadoop 公平调度器(Fair Scheduler)来管理分配、定义团队的任务 013 51CTO 系统频道 : http://os.51cto.com
  • 14. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 池、分配权限、限制每个用户和组的并行任务、设置优先权期限和延迟调度。 有效性,NameNode 的有效性对产品的工作负载很重要,开源社区提出了 一些备用选择,如使用检查点和备份节 点、 Secondary NameNode 中 转 移 到 从 Avatar 节点、日志元数据复制技术等。 eBay 研究人员根据这些方法建立了自 己的产品集群。 数据 挖掘, 存储 非结 构化 数 据的 在 系 统 上 建 立 支 持 数 据 管 理、 据 挖 掘 数 和模式管理的系统。新的计划提议将 Hive 的元数据和 Owl 添加到新系统中, 并称为 Howl。eBay 研究人员努力将这 图 数据流 个系统联系到分析平台上去,这样用户可以很容易地在不同的数据系统中 数据流的具体处理过程如上图所示,系统每天需要处理 8TB 至 10TB 的 挖掘数据。 新数据, Hadoop 主要用于 : 而 数据移动,eBay 研究人员考虑发布数据转移工具,这个工具可以支持在 基于机器学习的排序,使用 Hadoop 计算需要考虑多个因素(如价格、列 不同的子系统如数据仓库和 HDFS 之间进行数据的复制。 表格式、卖家记录、相关性)的排序函数,并需要添加新因素来验证假设的 策略,通过配额实现较好的归档、备份等策略(Hadoop 现有版本的配额需 扩展功能,以增强 eBay 物品搜索的相关性。 要改进)。eBay 的研究人员基于工作负载和集群的特点对不同的集群确定 对物品描述数据的挖掘,在完全无人监管的方式下使用数据挖掘和机器 配额。 学习技术将物品描述清单转化为与物品相关的键 / 值对,以扩大分类的覆 标准,eBay 研究人员开发健壮的工具来为数据来源、消耗情况、预算情 盖范围。 况、使用情况等进行度量。 eBay 的研究人员在系统构建和使用过程中遇到的挑战及一些初步计划 同时 eBay 正在改变收集、转换、使用数据的方式,以提供更好的商业智 有以下几个方面 : 能服务。 可扩展性,当前主系统的 NameNode 拥有扩展的功能,随着集群的文件系 本文摘录自《Hadoop 实战》 3 章。 第 统不断增长,需要存储大量的元数据,所以内存占有量也在不断增长。若是 1PB 的存储量则需要将近 1GB 的内存量,可能的解决方案是使用等级结构 在线样章阅读 : http://book.51cto.com/art/201110/298605.htm 的命名空间划分,或者使用 HBase 和 ZooKeeper 联合对元数据进行管理。 014 51CTO 系统频道 : http://os.51cto.com
  • 15. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com NoSQL数据库笔谈——应用篇 整理/颜开 eBay 架构经验 5、产品化管理 1、 Partition Everything 切分万物 Flickr架构经验(via dbanotes.net) 2、 Asynchrony Everywhere 处处异步 使得机器自动构建 (Teach machines to build themselves) 3、 Automate Everything 全部自动 使得机器自监控 (Teach machines to watch themselves) 4、 Remember Everything Fails 记录失败 使得机器自修复 (Teach machines to fix themselves) 5、 Embrace Inconsistency 亲不同是谓大同 通过流程减少 MTTR (Reduce MTTR by streamlining) 6、 Expect (R)evolution 预言演变 Twitter运维经验(via timyang.net) 7、 Dependencies Matter 重视依赖 Twitter 没有自己的硬件,都是由 NTTA 来提供,同时 NTTA 负责硬件相 关的网络、带宽、负载均衡等业务,Twitter operations team 只关注核心的业 8、 Be Authoritative 独断专行 务,包括 Performance,Availability,Capacity Planning 容量规划,配置管理等, 9、 Never Enough Data 这个可能跟国内一般的互联网公司有所区别。 10、Custom Infrastructure 自定义基础设施 运维经验 淘宝架构经验(via dbanotes.net) Metrics 1、适当放弃一致性 Twitter 的监控后台几乎都是图表 (critical metrics),类似驾驶室的转速 2、备份和隔离解决稳定性问题 表,时速表,让操作者可以迅速的了解系统当前的运作状态。联想到我们 做的类似监控后台,数据很多,但往往还需要浏览者 做二次分析判断,像 3、分割和异步解决性能问题 ( 类似 eBay 的 Asynchrony Everywhere) 这样满屏都是图表的方法做得还不够,可以学习下这方面经验。 据 John 4、自动化降低人力成本 ( 类似 eBay 的 Automate Everything) 介绍可以从图表上看到系统的瓶颈 - 系统最弱的环节 (web, mq, cache, 015 51CTO 系统频道 : http://os.51cto.com
  • 16. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com db?) 本能否接受?如果有紧急功能怎么办?个人认为紧急修改时有两人在场, 一人修改一人 review 也不是什么难事。 根据图表可以科学的制定系统容量规划,而不是事后救火。 部署管理 配置管理 从部署图表可以看到每个发布版本的 CPU 及 latency 变化,如果某个新 每个系 统 都需 要一 个自动 配 置管 理 系 统, 早 越 好, 条 一 整 理 发 到 越 这 版本 latency 图表有明显的向上跳跃,则说明该发布版本存在问题。另外在 Twitter 上去之后引起很多回应。 监控首页列出各个模块最后 deploy 版本的时间,可以清楚的看到代码库的 Darkmode 现状。 配置界面可以 enable/disable 高计算消耗或高 I/O 的功能,也相当于优 团队沟通 雅降级,系统压力过大时取消一些非核心但消耗资源大的功能。 Campfire 来协同工作,campfire 有点像群,但是更适合协同工作。对于 进程管理 Campfire 就不做更多介绍,可参考 Campfire 官方说明。 Twitter 做 了 一 个”Seppaku” patch, 就 是 将 Daemon 在 完 成 了 n 个 Cache requests 之后主动 kill 掉,以保持健康的 low memory 状态,这种做法据了 Memcache key hash, 使用 FNV hash 代替 MD5 hash,因为 FNV 更快。 解国内也有不少公司是这样做。 开 发 了 Cache Money plugin(Ruby), 给 应 用 程 序 提 供 read-through, 硬件 write-through cache, 就像一个 db 访问的钩子,当读写数据库的时候会自 Twitter 将 CPU 由 AMD 换成 Xeon 之后,获得 30% 性能提升, CPU 由 将 动更新 cache, 避免了繁琐的 cache 更新代码。 双核 /4 核换成 8 核之后,减少了 40% 的 CPU, 不过 John 也说,这种升级 “Evictions make the cache unreliable for important configuration 不适合自己购买硬件的公司。 data” Twitter 使用 memcache 的一条经验是, , 不同类型的数据需放在不同 代码协同经验 的 mc, 避免 eviction,跟作者前文 Memcached 数据被踢 (evictions>0) 现象 Review 制度 分析中的一些经验一致。 Twitter 有上百个模块,如果没有一个好的制度,容易引起代码修改冲突, Memcached SEGVs, Memcached 崩溃 (cold cache problem) 据称会给这 并把问题带给最终用户。所以 Twitter 有一强制的 source code review 制度 , 种高度依赖 Cache 的 Web 2.0 系统带来灾难。 如果提交的代码的 svn comment 没有”reviewed by xxx” 则 pre-commit , 本文摘录自《NoSQL 数据库笔谈》的应用篇。 脚本会让提交失败 , review 过的代码提交后会通过自动配置管理系统应 原文 : http://www.yankay.com/nosql 数据库笔谈 v0-2/ 用到上百台服务器上。 有 @xiaomics 同学在 Twitter 上马上就问,时间成 016 51CTO 系统频道 : http://os.51cto.com
  • 17. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 构建高安全电子商务网站之自动备份 文/Jimmy Li 电子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份、异 需要在 Linux 服务器上创建 /home/backup/ 目录。 地备份架构。其中 Linux 服务器的备份方案非常多,本文介绍一个大众化 3.FTP 异地备份 IP 账号 密码 适用的解决方案,通过编写 Shell 脚本来完成自动备份。本架构包括备份网 站文件、数据库,自动本地备份并 FTP 上传备份脚本,完成相应本地备份、异 需要在异地 FTP 上创建 backup 目录。 地备份,实现双层备份解决方案。 如果 Linux 服务器上数据库不多的话使用网络基础服务商的存储空间就 要点 : 可以。也可以用专门的备份服务器。可根据应用的大小,数据量的大小,网 络状况,和实际的网络资源,硬件资源灵活支配。 1. 全自动完成网站文件及数据库备份。 二、架构图 2. 编写 Shell 脚本来完成自动备份。 3. 同时进行自动本地 / 异地双备份, 上传备份。 FTP 4.Linux 服务器的备份解决方案。 5. 包括备份网站文件,网站程序文件、数据文件,MYSQL 数据库。 6. 定期定时自动完成备份。定期删除旧备份,这里是自动删除 30 天前 备份,复用利用备份空间。 一、准备工作 : 1. 软件安装 需要提前在 Linux 服务器安装好 lftp, 功能上比较强大, lftp CentOS 直接 执行 : yum install lftp,Debian 执行 : apt-get install lftp 。 三、网站及数据库自动本地备份并 FTP 上传备份 Shell 脚本 2. 备份目录建立 脚本与注释 : 017 51CTO 系统频道 : http://os.51cto.com
  • 18. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com #!/bin/bash #/home/wwwroot/ $Backup_Dir2 。如果多余则删除多余行。 #Funciont: Backup website and mysql database /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord #Author: Jimmy Li $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1- #Website: http://jimmyli.blog.51cto.com/ $(date +"%Y%m%d").sql #IMPORTANT!!!Please Setting the following Values! # 如果在前面加了 Backup_Database_Name2,则再加 /usr/local/mysql/ ######~Set Directory you want to backup~###### #bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_ # 一般按我的都是在 /data/wwwroot/ 下面所有直接写了需要备份的目录。 #Database_Name2 > /home/backup/db-$Backup_Database_Name2-$(date # 可以继续再加:Backup_Dir2= 你的目录,等等 #+"%Y%m%d").sql 。如果多余则删除多余行。 Backup_Dir1=/data/wwwroot/www.zuihuasuan8.net rm $OldWWWBackup ######~Set MySQL UserName and password~###### rm $OldDBBackup # 最好是 root,其他用户可能因为权限问题无法导出部分数据库。 ### 删除 30 天前的备份 ### MYSQL_UserName=root cd /home/backup/ MYSQL_PassWord= 你的 mysql 数据库 root 密码 ### 下面为自动上传部分,不得不说 lftp 很强大,抛弃 ftp 吧 #### ######~Set MySQL Database you want to backup~###### lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF # 要备份的数据库,可以继续再加:Backup_Database_Name2,等等 cd $FTP_BackupDir Backup_Database_Name1=www.zuihuasuan8.net mrm $OldWWWBackup ######~Set FTP Information~###### mrm $OldDBBackup FTP_HostName=www.zuihuasuan8.net mput $TodayWWWBackup FTP_UserName=www.zuihuasuan8.net mput $TodayDBBackup FTP_PassWord=www.zuihuasuan8.net bye FTP_BackupDir=www.zuihuasuan8.net—— backup // 目录需要提前创建好 EOF #Values Setting END! ##### 下载脚本,将脚本放到 /root/ 下面,按上面的注释修改脚本中的参数, TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz 并保存。执行 : chmod +x /root/backup.sh 为脚本添加执行权限,执行 : TodayDBBackup=db-*-$(date +"%Y%m%d").sql crontab -e 添加定时执行 OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql 0 3 * * * /root/backup.sh tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C / 凌晨 3 点自动执行脚本。 home/wwwroot/ $Backup_Dir1 --exclude=soft # 上面的 --exclude= 不备份的目录。如果在前面加了 Backup_Dir2,则再 本文有删节,完整内容见原文 : # 加 tar zcf /home/backup/www-$Backup_Dir2-$(date +"%Y%m%d").tar.gz -C http://jimmyli.blog.51cto.com/3190309/691069 018 51CTO 系统频道 : http://os.51cto.com
  • 19. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 老板要省钱 小公司如何部署实施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)。由于此软件比 机器上,监控的 Nagios 部署在从 Nginx/HAProxy 机器上,流量监控我一般 较直观,我用它来取代之前的即时流量监控软件 iptraf,Nload 的工作界面如 放主 Nginx/HAProxy,软件采用的是 MRTG+Nload 的方式,服务器之间的数 右图所示。 据 同 步 我 采 用 的 是 rsync+inotify 的 方 “LVS在性能方面是最好的,尤其是后面的节 许多对集群感兴趣的朋友经常问 法,当然更多时候,我采用的是纯 rsync 点超过10台时,它的性能是最优异的。” 方式,这样是避免网站有大文件发生改 我,如果网站要部署负载均衡高可用的 Linux 集 群 方 案, 公 司 又 想 用 最 节 省 而 动的时候会产生频繁读盘的麻烦 ; 当然 成本的方式来实施的话,一般需要几台服务器呢?我的回答是四台, 2+2 即 了,如果大家的公司对文件服务器有更高要求的时候 ( 比如图片类型的 ), 架构,最前面是二台 Nginx/HAProxy+Keeplaived 机器,后面是二台配置比 我们可以考虑再增加二台服务器,做成 DRBD+Heartbeat+NFS 的方式 ; 如果 较好的 Web 机器,MySQL 数据库采用一主一从的方式,分别放在二台 Web 有海量文件需要存储的话,我们可以考虑用 MFS,当然这样也是比较耗机器 019 51CTO 系统频道 : http://os.51cto.com
  • 20. 专题 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 的。 【特别推荐】 像类似以上的小公司集群架构里,我们是如何解决 session 同步的问题 呢?我们可以采用 Nginx 的 ip_hash 和 HAProxy 的 balance source 机制, 们的原理比较类似,都会让某一客户机在相当长的一段时间内只访问固定 它 大话IT第十七期 的后端的某台真实的 Web 服务器, 面进行 login 的时候, 这样会话就会得以保持,我们在网站页 就不会在二台 Web 服务器之间跳来跳去了,自然也不 ——体验Ubuntu 11.10 会出现登陆一次后网站又提醒你没有登陆,需要重新登陆的情况。 2011 年 10 月 13 日,Ubuntu 11.10 发布。作为采用 Unity 桌面的 另外,小公司的 Web 服务器我们至少有二种选择 : 一种是 Apache,另一 第二版 Ubuntu,很多用户都关注这次更新带来了哪些改进。有关新特 种是 Nginx,在流量和并发不大的环境下,我们完全可以选择 Apache 作为我 性的介绍,相关文章已经不少 ; 不过对于用惯了 Windows 的用户,或 们的 Web 服务器,虽然它的抗并发能力不高,但它的稳定性是最好的,我的 者习惯了平板电脑的用户而言,Ubuntu 11.10 是否能够吸引他们的 许多电子商务网站都是基于 Apache ; 而大流量大并发的环境,我比较倾向 关注? 于 Nginx。 本期 IT 听听看中,我们选取了几位媒体界的朋友作为典型用户, MySQL 在这里我用的就是一主一从的设计,虽然很多朋友觉得这种设计 收集了他们对 Ubuntu 11.10 的使用感受。 比较简单,但事实证明,它也最稳定的。我的电子商务网站也是采用这种 在线收看 : http://os.51cto.com/art/201110/298204.htm 架构 , 几年下来,从没有因为数据库的故障发生过丢单现象,网站上线的 大话 IT 下载专题 : http://down.51cto.com/zt/99 前期阶段,我们可以通过 PHP 程序,把后台的查询功能的入口选择 Slave 机 器,这样可以大大减少主数据库的压力 ; 另外, MySQL 机器并非仅仅只起 从 本期参与录制 : 嘉文、周达洋、柴莎莎、王玉平、杨赛 一个备份和备机的作用,我们完全通过 PHP 程序将后台的复杂查询转到从 本期编导 : 鲜橙 MySQL 机器上。当然了,MySQL 的主从复制状态监控也是非常重要的,我 本期主持 : 嘉文 一般是通过 Nagios 和 SHELL 脚本双监控的方式。 《IT 听听看》微博 : http://t.sina.com.cn/itttkan 作者介绍 : 余洪春(博客·微博), 《构建高可用 Linux 服务器》一书作者, 一拍网系统架构师、资深项目管理工程师,ChinaUnix 集群和高可用版版主。 有关 IT 听听看之大话 IT : 本文有删节,完整内容见原文 : 由一群喜欢音频的 IT 从业者自发性建立的栏目,针对 IT 业界或技 术点进行轻松的调侃和剖析,目地是让大家再轻松之余了解到 IT 信 http://network.51cto.com/art/201111/300804.htm 息, IT 专业人士和普通人都能听出快乐是团队目标。 让 020 51CTO 系统频道 : http://os.51cto.com
  • 21. 运维DBA 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Database 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 一种MySQL主从同步加速方案 文/丁林.tb 一、问题起源 3、从这可以看出这个方案的缺点之一 : 更新能够被独立分开。比较直观 的想法是,按照表分。 MySQL 的主从同步一直有从库延迟的问题,原因简单描述如下 : 三、关于 transfer 1、 MySQL 从库上有一个 IO 线程负责从主库取 binlog 到本地。另外有 一个 SQL 线程负责执行这些本地日志,实现命令重放 ; 作为这个关键的转发工具 transfer,需要提供如下功能 : 2、 正常网络状况下 IO 线程没有性能问题(这个待会会用到) 问题是 , 1、能够指定同步 master 中的哪部分数据,并且能够方便地修改这个配置 SQL 线程只有一个,更新速度跟不上。所以经常会看到从库的 CPU idle 很 以应对 master 的加表需求。 高,但同步性能就是上不去。 2、支持 stop slave、start slave。支持快速切换到新主库的 change master 二、方案雏形 命令。 单线程的 SQL 线程是造成这个问题的主要原因。比较直接的想法是把 3、能够记录读取点,transfer 自己重启或 master 重启后能够按照记录点 它改成多线程版本,这个据说官方版本开发中,其实我们也有一个这样的 继续读后面的 binlog。 patch,但是直接写大片代码在线上提供服务的 slave 机器上这种事儿,都会 4、能够记录分发点,transfer 自己重启或 slave 重启后能够按照记录点继 因为担心稳定性而很难推动(写 patch 的和运维的同学,你们懂的)。 所以打算用一个“第三方”工具中转,来实现多线程同步。基本结构如图 : 说明 : 1、 些 transfer 从 master 上 各 自 同 步 一 部 分 的 数 据, 别 独 立 更 新 这 分 slave。多进程、多线程均可。 2、Transfer 与 master 之间异步更新日志,transfer 与 slave 之间同步更新 数据。 021 51CTO 系统频道 : http://os.51cto.com
  • 22. 运维DBA 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Database 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 续同步给 slave。 这样存在的问题, n 个 transfer, 是 磁盘写了 n 倍,更严重的是导致 SQL 线程空转。 用起来就会发现还有好多要求…… 我们上文提到整个流程中 IO 线程是比较空闲的,因此修改 IO 线程逻辑, 四、方案实现 在写入磁盘前先判断,若不符合本 transfer 的 replicate-do-table 设置,不写 Transfer 的这么多功能,自己造轮子就累了。这里直接用 MySQL 来充当 盘,直接放弃。 此 角 色。 为 了 方 便 描 述, 文 还 将 之 称 为 transfer。Transfer 更 新 slave 在 下 六、效果 功能上可以使用 federated 引擎,但由于其纠结的实现导致性能上达不到要 求,因此在 MySQL 框架层中作了一点修改,读到同步日志后,直接发送给 从库的 QPS 由于线程切换会有抖动,但总的执行时间与主库相同。从库 slave。 的 cpu idle 下降,与主库几乎同时恢复到 100。 方案简单描述如下 : 七、小结 1、Slave 机器上搭另外的若干个 MySQL(transfer),将其设为 Master 的从 1、要求在 slave 机器上多配置 n 个 transfer(是否在从库上均可) 库,且设置 replicate-do-table, 每个 transfer 承担一部分的表。 2、目前只能支持 statement 的 binlog 格式,实际上 row 可以支持,方案定 2、所有 Transfer 的更新目标都设置为 slave,其更新方式是读到日志后直 了,开发计划中。 接 mysql_real_query 执行到 slave 上。 3、跨表更新的语句,会按照其更新的第一个表,分发到唯一一个 transfer, 从这可以看出这个方案的缺点之二 : 只能支持 statement 格式的同步方 没有重复更新的问题,但有时序性问题。 式。其实 row 也能支持,后面再说。 方案的好处 : 五、仍然延迟? 1、功能比较齐全。直接使用 MySQL,原有的管理功能基本都能用,主库 在 transfer 放弃 federated 引擎改用直接发送后,性能提升不少,从库同步 从库重启 / 换库的代价比较小。 性能增加一倍,但延迟还很大。 2、开发量小,只在 transfer 上修改两处,不包括配置读取部分, 行以内 300 发现这个时候 slave 的机器 cpu 已经很忙了,idle 20% 以下——这个算 3、风险相对小,不直接修改 master 和 slave 上的代码,线上容易接收。 是好消息,总比 idle 很高但性能上不去好。 原文 : http://dinglin.iteye.com/blog/1179574 实际上是因为每个 transfer,虽然设置只同步其中的部分表,但在实现上 是 IO 线程把 master 上的所有命令都备份到本地,然后在 SQL 线程执行的 另外,本方案有改进版本,作者建议一并阅读 : 时候再判断,若不符合 replicate-do-table,再放弃。 http://dinglin.iteye.com/blog/1187154 022 51CTO 系统频道 : http://os.51cto.com
  • 23. 工具 杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tools 《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 用SSHGuard免费工具帮你保护服务器 文/Linuxaria 编译/布加迪 我之前已介绍了 fail2ban 和 logcheck 这两 止针对许多服务的攻击,不仅仅是针对 SSH 款工具可以扫描日志,并且根据你创建 / 修 的攻击,还能针对几种 ftpd、Exim 和 dovecot 改的规则,采取相应的操作 ; 你通常可以修改 等服务的攻击。它能够适用于各大防火墙系 iptables 规则,阻止针对你服务器发动的主动 统,并且提供对 IPv6、白名单、悬挂和消息验 攻击,或者要是日志里面发现什么异常,就发 证等功能的支持。 警示信息给你。 安装 今天我们来介绍一款类似的工具 sshguard 采用宽容的 BSD 许可证来发行 : sshguard,它与上面另外两款工具的不同之处 你可以使用、修改和再发行软件,风险自负, 在于,它是用 C 编写的,所以它在运行时占用 可以用于任何环境(包括商业环境) 但前提 , 的内存和处理器资源比较少,但仍能收到同 是你得保留在里面发现的原始版权通知。软 样的效果。 件在最常用的 GNU/Linux 发行版的主存储库 那么,sshguard 又有什么样的本领呢? 中发行,面向某个 *BSD 系统,但是你也可以 从下载页面(http://www.sshguard.net/download/)下载源代码。 简单地说,它可以接收日志消息,可以根据日志消息来检测网络服务何 时遭到攻击,并且阻止服务攻击者的地址 ; 一段时间过后,它会解禁。 要把 sshguard 安装到 Debian(或 Ubuntu 等 .deb 其他发行版) 只要从 上, 终端运行下列命令 : 完整地说,sshguard 在机器上作为一个很小的后台驻留程序来运行,能 够接收日志消息(可接收来自诸多途径的消息,比如来自系统日志)。如果 sudo aptitude install sshguard 它确定了 X 地址对 Y 服务造成危害,就会启动机器里面防火墙(注 : 防火墙 设置和配置 须得到支持)中的规则,以阻止 X 地址。 Sshguard 与系统相连的点有两个 : sshguard 阻止 X 地址的状态会保持一段时间,但是之后会自动解禁。 日志系统(sshguard 如何接收需要监控的日志消息) 请注意 : 尽管名称很容易让人误解,但是 sshguard 在默认情况下能够阻 023 51CTO 系统频道 : http://os.51cto.com