Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Like this? Share it with your network

Share

《Linux运维趋势》2012年3月号:大数据存储系统

on

  • 10,649 views

本期为2012年3月号,总第18期。 ...

本期为2012年3月号,总第18期。

主题:大数据存储系统初探

PDF版下载地址(51CTO系统频道):http://down.51cto.com/data/353789

目录:

003 115网盘赖霖枫:从分享大文件的需求开始
005 SSL正在保护我的网站……等等,你真的确定吗?
008 Apache 2.4发布 淘宝Metamorphosis开源
010 HAProxy+Hive构建高可用数据挖掘集群
012 HDFS小文件问题及解决方案
016 淘宝Fourinone介绍及与Hadoop的性能PK
018 淘宝海量数据库之十四:故障恢复
020 在 CentOS 6.2 上安装 Puppet 配置管理工具
023 浅谈Squid在图片存储架构中的应用
026 轻量级HTTP服务器Nginx(Nginx性能优化技巧)
030 使用LVM技术提升Xen虚拟机性能的实现
033 通过分布式及文件级数据缓存打造千万级别WEB应用
《Linux运维趋势》是由 51CTO 系统频道策划、针对 Linux/Unix 系统运维人员的一份电子杂志,内容从基础的技巧心得、实际操作案例到中、高端的运维技术趋势与理念等均有覆盖。

本杂志长期处于探索期,需要更多来自大家的意见与参与。谢谢!

微群讨论:http://q.weibo.com/121303

邮件订阅入口:http://os.51cto.com/art/201011/233915.htm

投稿信箱:yangsai@51cto.com

发布周期:每个月的第二个星期五

往期《Linux运维趋势》下载汇总页:http://down.51cto.com/zt/71

Statistics

Views

Total Views
10,649
Views on SlideShare
2,676
Embed Views
7,973

Actions

Likes
3
Downloads
56
Comments
0

4 Embeds 7,973

http://os.51cto.com 7965
http://localhost 5
http://192.168.123.217 2
http://www.51.la 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

《Linux运维趋势》2012年3月号:大数据存储系统 Presentation Transcript

  • 1. 目录杂志订阅 : http://os.51cto.com/art/201011/233915.htm Index《Linux 运维趋势》投稿信箱 : yangsai@51cto.com目录 人物·People 技巧·工具·脚本·DBA003 115网盘赖霖枫:从分享大文件的需求开始 020 在 CentOS 6.2 上安装 Puppet 配置管理工具 交流·Interact 023 浅谈Squid在图片存储架构中的应用005 SSL正在保护我的网站……等等,你真的确定 026 轻量级HTTP服务器Nginx(Nginx性能优化技 吗? 巧) 八卦·News 030 使用LVM技术提升Xen虚拟机性能的实现008 Apache 2.4发布 淘宝Metamorphosis开源 033 通过分布式及文件级数据缓存打造千万级别 专题·Special WEB应用010 HAProxy+Hive构建高可用数据挖掘集群012 HDFS小文件问题及解决方案016 淘宝Fourinone介绍及与Hadoop的性能PK018 淘宝海量数据库之十四:故障恢复 002 51CTO 系统频道 : http://os.51cto.com
  • 2. 人物杂志订阅 : http://os.51cto.com/art/201011/233915.htm People《Linux 运维趋势》投稿信箱 : yangsai@51cto.com115网盘赖霖枫:从分享大文件的需求开始 采访、整理/杨赛 雨林木风的名字,在中国网民当中有很多人听到过 ; 也有很多人知 (采访全文也涉及到产品方面, 《趋势》 本期 仅截取赖霖枫在技术方道,它的创始人赖霖枫是一个思维活泛的创业者,操作系统、论坛、网 面的说明,完整内容可参考原文。)址导航,什么都感兴趣,还特别喜欢购买域名。即使做了这么多年,互 51CTO : 霖枫你好,能否大致介绍一下 115 网盘在服务器端和客联网业界发生了翻天覆地的变化,他的身上仍然保留很多上个世纪末 户端都采用了哪些技术?互联网刚刚兴起之时的那股子江湖气息 : 因为喜欢而做,从而聚集了同样一批因为喜欢而加入的网友们,成为其忠实的用户群体。 赖霖枫 : 115 整体架构非常简单,主要是由访问终端层、后台服务 器端和底层存储端三部分组成。 终端访问层提供了各类接入方式的应用访问,如更多跨平台 PC 客 户端应用如 WIN/MAC 平台,移动端支撑 iOS/Android 等主流移动 OS,实现了 iPhone/iPAD/Android 主流机型的应用支撑。 WEB 应 用 采 用 主 流 分 布 式 技 术 框 架, 现 层 以 CSS、 为 主, 表 JS HTML5 的研发团队会随着更多浏览器的支撑提供给终端用户更佳 丰富的体验。 115 网盘就是诞生在这样一个野战军的环境下,并在 2011 年发 WEB 服务端则采用主流 PHP 相关开源技术 : 缓存、搜索以及尽可展成为赖霖枫的第二个创业公司。说来网络硬盘也是一个从上世纪 能的异步设计和数据库分区分表、读写分离充分实现独立应用组件的末就开始存在的服务,只是近年来由于云计算等概念的风靡、Web 横向扩展来支撑海量数据,而组件间由于松散耦合架构又不会彼此干应用与移动互联网的成熟,让网盘的意义也产生了极大的变化。为 扰,尽可能提高缓存命中以增强用户体验,部署 Nginx/Varnish 采用什 么 会 有 115 网 盘 这 个 项 目? 赖 霖 枫 对 网 盘 服 务 是 如 何 理 解 的? 了诸如 Redis、MongoDB 等更多分布式技术。51CTO 有幸邀请到赖霖枫本人来为大家答疑。 PC 客户端应用的开发采用 UI 和组件分离的策略,更多 COM 组 003 51CTO 系统频道 : http://os.51cto.com
  • 3. 人物杂志订阅 : http://os.51cto.com/art/201011/233915.htm People《Linux 运维趋势》投稿信箱 : yangsai@51cto.com件实现了跨平台客户端内核功能的提供,极大降低了各类端应用的开 赖霖枫 : 安全不仅仅是技术范畴,更是管理体系的实践。发成本。 (我们的)安全管理体系更多参考了 ISO27001 以及 ITIL V2/V3 后台服务端由各类 API、服务端应用组件构成以及统一消息处理 等对于基础设施运维层面的管理,实现了严谨内控管理的同时,强调平台构成。WEB API 构筑了 PAAS 平台,为更多个人爱好者和站长 SLA 体系的规范与达成……另一方面,115 运营团队在实施安全管提供应用插件的开发与部署。服务端应用组件有业务类的诸如图片、 理体系中,全天候为客户(提供)安全隐患服务,后台的日志系统提供文本处理相关组件,也包含底层技术支撑类的如 P2SP 应用组件、分 跟踪、记录、监控管理机制,全程记录后台管理帐户的所有操作,保障布式日志组件、数据挖掘组件等。而统一消息处理平台日以继夜的处 用户的数据不被盗用 ; 115 近期还将会推出手机绑定 115 帐号功能,理着各类后台消息队列,为支撑海量数据的用户体验默默无闻的工作 支持通过手机找回密码,手机验证码登录等更高级别的账户安全保护着。这些接口以 SOAP 或 RESTful 的形式对内外提供服务。更多 机制。服务端应用组件采取与客户端通讯的方式处理,客户端以 COM 形态 在安全技术方面,我们做到每一份数据都在多个数据中心、多个机出 现。 服 务 端 应 用 大 多 采 用 Linux C/C++ 开 发。 为 此,115 打 造 柜拥有多重备份。在隐私保护方面,用户上传的数据都是经过多重加了一个封装好更多底层通讯机制的优化的服务器端应用开发框架,即 密,特别是考虑到业界关于 MD5 加密破解问题,115 采用高强度加Framework,实现快速服务器端应用组件的开发,大大缩短了应用组 密算法进行数据传输加密和数据库存储数据加密。而 115 安全体系件的上线周期,实现了传统软件公司开发 1/5 的开发成本快速构筑服 的快速反馈流程则在业界第一时间内发送安全友情提示邮件,全力保务端应用。 障用户隐私。115 采取分布式存储,即采用数据分块的方式,即使是 115 形成了若干领域的技术攻坚和持续优化队伍, P2SP 应用 如 115 内部网络管理人员也无法查看用户存储的数据,而通用非对称机组件组,有专业团队和天才级的优秀工程师持续聚焦于 P4P 技术研 密机制,数据的完整呈现只有在用户端才可以完整展现。究、BT、电驴的协议支持与优化,以及非完整资源支持等技术点,以为 51CTO : 能否大致透露一下现在你们的用户数量到达什么级别用户提供最佳体验为核心。此外,同步组件优化组以及分布式存储组 了?结关注各自场景的优化提升。存储层设计以分布式对象存储为核心,支撑各类场景的冷热数据需求,在数据压缩、内容分发与路由,重复数 赖霖枫 : 115 网盘从成立至今一直没有做太多商业推广,仅凭用户据删除等方面具有一定的技术积累, PB 级海量数据存储与高吞吐、 对 口碑宣传和分享邀请等方式,到今年 2 月份已经积累了 3000 万注册高容错的同时,实现了多数据中心云容灾架构。 用户。 51CTO : 安全性方面有哪些措施?我们如何保护用户的隐私? 原文 : http://os.51cto.com/art/201203/321098.htm 004 51CTO 系统频道 : http://os.51cto.com
  • 4. 交流杂志订阅 : http://os.51cto.com/art/201011/233915.htm Interact《Linux 运维趋势》投稿信箱 : yangsai@51cto.comSSL正在保护我的网站……等等,你真的确定吗? 文 /Matt Prigge 编译 / 核子可乐 SSL 与 TLS,通常被统称为 SSL,广泛分布在网络世界的各个角 “尽量选择规模最大、结构最复杂的加密密钥,它们能够有效地保护落,用以验证某个站点的实际内容到底是与其表述一致、抑或是由钓 我们身边需要保护的设备。”在理想状况下,企业应该使用 256 位甚鱼者及其它攻击者为了窃取机密数据而打造的一个虚假外壳。SSL 至强度更大的加密机制。还同时还为我们提供了一套加密基础设施,这样共享数据的安全才有 经过调查,Qualys 公司发现在使用 SSL 的网站中,SSL 普遍没有保证。 被正确部署在应用层中。即使是那些对 SSL 进行了良好配置的网站, “即使我们现在认定 SSL 自身存在严重缺陷并且已经濒临崩溃, 也仅仅将着眼点放在协议层上。而对于 Web 应用程序与网站,则往但不可否认它可能仍然是未来 10 年内我们所能依赖的最佳防御机 往“随意部署 SSL 了事。制; 如果大家从今天开始努力,也许 10 年之后会有理想的替代品诞 举例来说,许多 Web 应用程序会在加密身份验证尚不完善的情况生, Trustwave 公司身份及验证管理业务副总裁 Brian Trzupek ” 下将产品交付用户使用。“人们常常以纯文本这种极不科学的形式输表示。当下以 SSL 为基础的最新技术 TLS 1.2 已经解决了已知的所 入用户名与密码,而这对攻击者们而言无疑是绝好的机会。”有问题。至于其它漏洞,Trzupek 认为“完全是由 SSL 的不当部署及使用所引发。” 另一种常见的配置错误是未对所部署的会话 cookie 做出充分保 护,最终使攻击者很容易访问到这些敏感内容。Cookie 内部必须具 诚然,SSL 的信任生态系统并不完美,但网站经营者们完全可以采 备“安全的”编码构造,以确保其免受恶意人士的窥探。取一些步骤对其部署进行优化,以尽量避免可能危及公司数据及令客户承担风险的失误。以下是四项步骤的具体内容 : 妥善管理加密密钥使用最新版本的协议及密码套件 加密机制总会给企业带来行政层面上的负担,其中最大的麻烦就是 管理用于信息在网站及用户之间流通时加密及解密所必需的公共及 要得到充分的保护,网站必须采用最新版本的 SSL 协议及密码套 私有密钥。终端用户利用公共密钥对传输至网站服务器的数据流进件,而且其服务器也需要得到正确配置。 行加密,而网站则采用一套私有密钥对信息解密,并在用户的浏览器 005 51CTO 系统频道 : http://os.51cto.com
  • 5. 交流杂志订阅 : http://os.51cto.com/art/201011/233915.htm Interact《Linux 运维趋势》投稿信箱 : yangsai@51cto.com端显示出他们希望看到的内容。 权证书本身的保护也很不到位。在拥有企业内部网络、大型电子商务 网站或者其它包含敏感数据站点的机构中,授权证书的数量可能多达 值得一提的是,私有密钥必须远离攻击者及机构内部的恶意人士。 成千上万。在处理如此海量的授权证书时,企业往往会将其分散至各任何打算访问私有密钥的人必须首先获得与之相匹配的授权认证 ; 而 服务器及网站管理者处,让他们各自负责。这种做法无疑会迅速导致该认证则由第三方认证授权机构(简称 CA)进行核对,以了解来访网 混乱及安全威胁,大型零售商及其它企业甚至常常不清楚自己手头到站是否合法。因此,攻击者往往以盗窃手段获取私有密钥以及与之对 底在使用多少套授权证书。应的授权认证,这样他们就能将自己的假冒网站以合法的面貌摆上台面,进而令访问者将其误认作真正的站点并最终导致个人信息泄露。 分布式证书管理领域的一大关键性问题在于,没有某个人或团队 专职跟踪审查证书的有效日期。也就是说,证书往往在到期之后企业 但是对私有密钥的保护往往令网站管理更加困难。SSL Web 服 中仍然无人留意,如此一来客户或其它用户在访问时就会收到提示信务器需要能够在 IT 管理员完全不介入的情况下直接访问私有密钥, 息,宣称证书可能存在问题。更严重的情况下,我们甚至可能因此而而站点运营方则更希望走捷径,即尽量削弱密钥的安全保护机制,这 无法访问需要的信息。样终端用户才能更加顺畅地调用网络内容。 除了没有专人跟踪证书动态,许多企业还忽略了制定或是强制执行 在大多数企业中,私有密钥都以未加密的形式保存在 Web 服务器 证书的采购流程及政策。程序员们往往会在匆忙间随便打开某个 CA中,也就是说攻击者完全可以在不具备密码、智能卡或者其它需要以 机构的网站并直接进行购买,而没有考虑该 CA 机构是否在企业自身密码登录的设备时轻松获取这些关键信息。 的采购名单当中。事实上,从口碑不好的 CA 机构处随便弄来的授权 保护公共及私有密钥最显而易见、同时也是最有效的方法之一,就 证书,在安全性方面根本无法与信誉良好的 CA 机构所提供的严格标是永远不要将它们保存在 Web 服务器中。作为安保机制的核心,私 准相提并论。有密钥更是应该加以妥善保管。同样,也不能将私有密钥保存在 FTP 要对证书管理流程做到彻底掌握,不妨考虑在企业内部引入自动化服务器上,或是出于任何理由将其通过邮件方式发送给他人。 跟踪流程。这类工具会对现有证书进行扫描并设置出对应的自动化 解决方案其实并不复杂,只要使用一款密钥管理工具,将公共及私 系统,保证在证书到期之前做出正确处理。只要这套体系落实到位,有密钥实施隔离,再确保 SSL 系统管理员无法接触到私有密钥即可。 大家只需利用证书管理平台将原本分散在诸多商务部门及服务器管网站管理员不应该同时扮演密钥管理员的角色。 理者手中的证书进行集中,就可以通过一位专门的证书管理员实施集保管好授权证书 中式管理 ; 这样做的同时,企业所制定的证书采购政策也自然得到了 保障。 除了不尽人意的加密密钥管理工作,SSL 网站运营者们往往对授 006 51CTO 系统频道 : http://os.51cto.com
  • 6. 交流杂志订阅 : http://os.51cto.com/art/201011/233915.htm Interact《Linux 运维趋势》投稿信箱 : yangsai@51cto.com避免混合型内容 最后,让我们一起看看 10 大 SSL 常见错误 : 经过对超过 25 万个 SSL 站点的调查,Qualys 公司发现超过五分 1. 服务器、尤其是流量巨大的网站服务器缺乏补丁更新机制。之一的受访对象在网站中部署了混合型内容。 2. 敏感脚本及表格被托管于不安全的页面中。登入页面等关键性 混合型内容是指,当企业在网站的某个页面中使用 SSL 时,却同时 内容一旦脱离了 SSL 的保护后果将不堪设想,因为用户名与密码等在该页面中提供不受 SSL 保护的内容。这种做法会留下易被利用的 信息都包含在其中。安全漏洞。攻击者们能够将未被加密的内容拦截下来,进而按自己的 3. 使用不具备最新加密技术的落后密码套件。意愿对其进行修改。如果网站未经加密的部分能够运行脚本,攻击者将有机会通过 DNS 感染等方式将网站流量引导至自己的站点处,这 4. 对私有密钥的处理不够安全,包括系统管理之间通过邮件发送无疑是一种相当危险的破坏手段。 密钥等不良习惯。 混合型内容在扩展验证 SSL 证书(EV SSL)方面带来的问题尤为 5. 在同一个 Web 页面中同时提供安全及不安全内容,这使得攻击严重。EV SSL 证书比目前使用较为广泛的域验证 SSL 证书更进一 者很容易对不安全内容实施注入攻击。步,后者能够利用最为简洁的手段判断出用户是否有权访问处于 SSL 6. 当心已经过期或无效的 SSL 证书,当用户反复看到失效信息之证书保护之下的域。EV SSL 证书部署成本更高,并要求网站拥有者 后,往往会将此视为正常现象。为其打造一套扩展化装置以完善访问者的身份验证流程。使用 EV 7. 在电子商务网站中使用域验证证书,在这类涉及资金交易的关SSL 证书的网站会在浏览器的地址栏中显示出绿色提示条,以通知用 键性部分最好使用安全性更高的扩展验证证书。户该网站处于 EV SSL 的保护下。定期域验证 SSL 则在地址栏中以挂锁图标表示。 8. 为 www.example.com 提供证书,却忽略了 example.com 这 样的形式。用户往往喜欢通过简短的地址进行登录。 如果大家在网站中引入 EV 证书机制,并将 JavaScript 资源也纳入 SSL 的保护当中,那么页面在浏览器上的显示效果将远差于普通 9. 没有为 cookie 内容提供保护措施。SSL。 10. 将密钥与证书复制到多台服务器中,没有分别对每套副本进行 时刻保持警觉大概是解决混合型内容问题的惟一办法。企业必须 本地追踪,而且忽略了这些验证机制的有效期。利用恰当的广泛测试与质量保障流程才能确保网站及应用程序开发 原文 : Web Encryption That Works - Dark Reading工作中不会掺杂混合型内容。 译文 : http://os.51cto.com/art/201203/320976.htm 007 51CTO 系统频道 : http://os.51cto.com
  • 7. 八卦杂志订阅 : http://os.51cto.com/art/201011/233915.htm News《Linux 运维趋势》投稿信箱 : yangsai@51cto.comApache 2.4发布 淘宝Metamorphosis开源 ——八卦,新闻与数字 2012.02 - 2012.03 Apache HTTP Server 2.4 发布,大幅改进性能,支持更大流量、 截至 2011 年年末,Zynga 公司已经将接近 80% 的日常活跃用更好地支持云计算、利用更少的内存处理更多的并发。 户交付自有基础设施进行托管 ; 而就在 2011 年年初,同样比例的用 户群体还处于 Amazon 公共云之下。 http://os.51cto.com/art/201202/319669.htm http://os.51cto.com/art/201202/318126.htm Ubuntu 10.04 发布第四个维护版本,10.04 相关更新和安全补丁将持续提供到 2013 年 4 月。 红帽企业级 Linux 5.8 正式版发布,支持电源管理 QoS,提供设备 级别的自动电源管理策略,新的 iotop 支持监控进程级别的 I/O 资 http://os.51cto.com/art/201202/318090.htm 源使用情况,例如存储设备,用于解决一些潜在的性能问题。 红帽发布企业虚拟化 3.0,评价其“实现了 Linux 和 Windows 负 http://os.51cto.com/art/201202/319280.htm载下新型企业虚拟化管理特性、性能和扩展能力方面的平衡,而且成本远低于专有替代方案。” 淘宝 Metamorphosis 开源,思路起源于 LinkedIn 的 Kafka,但 并不是 Kafka 的一个 Copy。具有消息存储顺序写、吞吐量大和支持 http://os.51cto.com/art/201202/317778.htm 本地和 XA 事务等特性,适用于大吞吐量、顺序消息、广播和日志数据 NASA 退役最后一台大型机 IBM Z9。最后一台大型机位于马歇 传输等场景。尔太空飞行中心,曾被用于计算和解决与太空飞行有关的复杂数值计 http://os.51cto.com/art/201203/322418.htm算问题,退役前大约有普通冰箱大小。 Wine 1.4 最终稳定版发布,16000 多个独立变更,支持新的 DIB http://os.51cto.com/art/201202/317782.htm 设备无关图形驱动 ( 更快的 2D 渲染速度 )、重新设计的音频堆栈、完 Canonical 宣 布 将 不 再 支 持 基 于 KDE 桌 面 的 Ubuntu 分 支, 整支持双向造字、增加支持 XInput2。但社区开发者承诺将一如既往的提供高水平的支持,称即将发布的 http://os.51cto.com/art/201203/322806.htmKubuntu 12.04 的支持时间为五年。 http://os.51cto.com/art/201203/321352.htm 008 51CTO 系统频道 : http://os.51cto.com
  • 8. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 大数据存储系统初探 编者按 : 大数据,面临的最大问题不仅是我们要如何储存大量的、不同格式 的数据,更具有挑战性的是如何在这庞大的数据中快速的检索,形成 最终用户想要的结果。 以往关注大数据的,比较多的是有着海量用户的互联网企业,如 Google、Yahoo、Facebook、 度, 商 领 域 的 Amazon、 百 电 Ebay、 淘宝等,还有 Youtube、Vimeo、优酷土豆这样的视频网站 ; 而互联 网迅速发展的当下,很多规模不大或员工不多的“小”企业也会面临 大数据处理的需求,比如处理地理数据或 3D 模型的企业,Pinterest 这样的图片流网站等。当然,除了需求方以外,技术输出型的 IBM,存 储方向的 EMC 等企业,也都十分关注大数据这一方向。 面对这样的需求,Hadoop 可以说是当下最被推崇的解决方案,而 其技术也的确是目前比较成熟的,被普遍称之为“会跳舞的大象”。在 技术实力厚实的网站,则往往有自己的解决方法。下面分享的内容主 要围绕 Hadoop 和淘宝的方案,以供各位参考。 009 51CTO 系统频道 : http://os.51cto.com
  • 9. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.comHAProxy+Hive构建高可用数据挖掘集群 文 /Slaytanic Hive 是 facebook 开源的一个非常伟大的工具,可以将 hadoop ulimit-n 65535中的数据用 sql 方式进行查询,比自己写 map/reduce 程序要方便 ####################很多。但是在实际使用中发现 hive 其实不够稳定,极少数情况会出 defaults现端口不响应或者进程丢失的问题,所以考虑将 hive 做成负载均衡 mode tcp #mode { tcp|http|health },tcp 表示 4 层,http 表示 7 层 ( 对我们没用 ), health 仅作为健康检的方式。或者更严格的说,叫做失效备份,避免出现某台个别的服务 查使用器连接数过大造成的端口不响应或者服务器故障造成无法查询。 retries 2 # 尝试 2 次失败则从集群摘除 前提是有 2-3 台服务器作为 hive server,一台放置 HAProxy。 option redispatch # 如果失效则强制转换其他服务器 option abortonclose # 连接数过大自动关闭一、安装配置 HAProxy maxconn 1024 # 最大连接数 #wget http://haproxy.1wt.eu/download/1.4/src/ timeout connect 1d # 连接超时时间,重要,hive 查询 haproxy-1.4.20.tar.gz#tar zxf haproxy-1.4.20.tar.gz 数据能返回结果的保证 #mv haproxy-1.4.20 /opt/modules/haproxy timeout client 1d # 同上 #cd /opt/modules/haproxy timeout server 1d # 同上 #make TARGET=linux26 timeout check 2000 # 健康检查时间 这样就编译完成了。 log 127.0.0.1 local0 err #[err warning info debug] 然后来配置 HAProxy 为四层代理,仅作为端口转发器使用。 ################ listen admin_stats # 定义管理界面 global bind 0.0.0.0:1090 # 管理界面访问 IP 和端口 daemon mode http # 管理界面所使用的协议 nbproc 1 maxconn 10 # 最大连接数 pidfile /var/run/haproxy.pid stats refresh 30s #30 秒自动刷新 010 51CTO 系统频道 : http://os.51cto.com
  • 10. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com stats uri / # 访问 url 议的工作情况,作为运维又不了解 hive,所以如果这里出了错误,会很 stats realm Hive Haproxy # 验证窗口提示 难发现。我写的 1d 是 1 天的意思,正常的话, hive 执行完毕, 当 会 stats auth admin:123456 #401 验证用户名密码 自己发送关闭 TCP 的指令。这点倒是不用太担心累计连接数超过限 ########hive1################# 定。 listen hive #hive 后端定义 1d 标志 1 天,类似的还有 1h 表示 1 小时, 表示 1 秒, 1s 1ms 表 bind 0.0.0.0:10000 #ha 作为 proxy 所绑定的 IP 和端口 示 1ms。 mode tcp # 以 4 层方式代理,重要 balance leastconn # 调度算法 leastconn 最少连 另外配合我之前写过的 python daemon 程序,稍加修改,用来监 接数分配, 或者 roundrobin,轮询分配 控 hive 的 server 进程,就基本可保证 hive server 集群的高可用了。 maxconn 1024 # 最大连接数 目前这个高可用方案在公司内部的 phpHiveAdmin 中已经可以 server hive_215 192.168.1.49:10000 check inter 1000 rise 1 fall 2 使用了,查询和结果获取正常无误,thrift 连接 IP 和端口只要指向到 # 释义 : server 主机代名 ( 你自己能看懂就行 ), 端口 每 1000 IP: Haproxy 的 IP 和端口就可以了。 毫秒检查一次。 二、hive 服务器端监控程序 python server hive_216 192.168.1.50:10000 check inter 1000 rise 1 fall 2 只要检测到 hive 进程没有或者端口消失,均重新启动 hive # 同上,另外一台服务器。 #!/usr/bin/env python 用 haproxy -f haproxy.conf 启动。 (代码略) 比较重要的其实是 timeout 的前三个选项的时间定义,因为 hive 给可执行权限,然后用 ./daemon.py start 启动,每两秒检测一次运算请求时间会比较长,通常都会超过一个 tcp 包正常的 session 进程和端口。响应时间。所以,hive 需要一个长连接来等待数据返回, TCP 里 在 原文 : http://slaytanic.blog.51cto.com/2057708/803626面应该是 TIME_WAIT 我记得。如果设置太短了,SQL 可以提交成功, 推荐阅读 :但是你将不会获得任何返回值。因为被提交的 session 已经关闭了。所以普通的 tcp 代理转发并不适合 hive 的应用。这点在做定时任务 XFS : 大数据环境下 Linux 文件系统的未来?的时候尤其重要,你可能会提交一个任务,但是不会获得任何返回,又 除了 Hadoop : 带你了解更多大数据解决方案查不出任何结果,就很头疼。作为 hive 的任务开发者,不了解 tcp 协 011 51CTO 系统频道 : http://os.51cto.com
  • 11. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.comHDFS小文件问题及解决方案 文 /Dong1、 概述 决 HDFS 上存储地理信息小文件的方案 ; 另一篇是 IBM 于 2009 年 发表的,用以解决 HDFS 上存储 ppt 小文件的方案。 小文件是指文件 size 小于 HDFS 上 block 大小的文件。这样的文件会给 hadoop 的扩展性和性能带来严重问题。首先, HDFS 在 2、 HDFS 文件读写流程中,任何 block,文件或者目录在内存中均以对象的形式存储,每个 在 正 式 介 绍 HDFS 小 文 件 存 储 方 案 之 前, 们 先 介 绍 一 下 当 前 我对象约占 150byte,如果有 1000 0000 个小文件,每个文件占用 HDFS 上文件存取的基本流程。一个 block, namenode 大约需要 2G 空间。如果存储 1 亿个文 则件, namenode 需 要 20G 空 间 则 (见 参 考 资 料 [1][4][5]) 这 样 。 (1) 读文件流程namenode 内存容量严重制约了集群的扩展。 其次,访问大量小文 1)client 端发送读文件请求给 namenode,如果文件不存在,返件速度远远小于访问几个大文件。HDFS 最初是为流式访问大文件 回错误信息,否则,将该文件对应的 block 及其所在 datanode 位置开发的,如果访问大量小文件,需要不断的从一个 datanode 跳到另 发送给 client一个 datanode,严重影响性能。最后,处理大量小文件速度远远小 2)client 收到文件位置信息后,与不同 datanode 建立 socket于处理同等大小的大文件的速度。每一个小文件要占用一个 slot,而 连接并行获取数据。task 启动将耗费大量时间甚至大部分时间都耗费在启动 task 和释放 task 上。 (2) 写文件流程 本 文 首 先 介 绍 了 hadoop 自 带 的 解 决 小 文 件 问 题 的 方 案(以 1)client 端 发 送 写 文 件 请 求,namenode 检 查 文 件 是 否 存工 具 的 形 式 提 供),包 括 Hadoop Archive,Sequence file 和 在, 果 已 存 在, 接 返 回 错 误 信 息, 则, 送 给 client 一 些 可 用 如 直 否 发CombineFileInputFormat ; 后 介 绍 了 两 篇 从 系 统 层 面 解 决 然 namenode 节点HDFS 小文件的论文,一篇是中科院计算所 2009 年发表的,用以解 2)client 将文件分块,并行存储到不同节点上 datanode 上,发 012 51CTO 系统频道 : http://os.51cto.com
  • 12. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com送完成后,client 同时发送信息给 namenode 和 datanode har://scheme-hostname:port/archivepath/fileinarchive 3) namenode 收 到 的 client 信 息 后,发 送 确 信 信 息 给 har:///archivepath/fileinarchive( 本节点 )datanode 可以这样查看 HAR 文件存档中的文件 : 4) datanode 同时收到 namenode 和 datanode 的确认信息 hadoop dfs -ls har:///user/zoo/foo.har后,提交写操作。 输出 :3、 Hadoop 自带的解决方案 har:///user/zoo/foo.har/hadoop/dir1 对于小文件问题,Hadoop 本身也提供了几个解决方案,分别为 :Hadoop Archive,Sequence file 和 CombineFileInputFormat。 har:///user/zoo/foo.har/hadoop/dir2(1)Hadoop Archive 使用 HAR 时需要两点,第一,对小文件进行存档后,原文件并不会 自动被删除,需要用户自己删除 ; 第二,创建 HAR 文件的过程实际上 Hadoop Archive 或者 HAR,是一个高效地将小文件放入 HDFS 是在运行一个 mapreduce 作业,因而需要有一个 hadoop 集群运块中的文件存档工具,它能够将多个小文件打包成一个 HAR 文件,这 行此命令。样在减少 namenode 内存使用的同时,仍然允许对文件进行透明的访问。 此外,HAR 还有一些缺陷 : 第一,一旦创建,Archives 便不可改变。 要增加或移除里面的文件,必须重新创建归档文件。第二,要归档的 对某个目录 /foo/bar 下的所有小文件存档成 /outputdir/ zoo. 文件名中不能有空格,否则会抛出异常,可以将空格用其他符号替换har : ( 使用 -Dhar.space.replacement.enable=true 和 -Dhar.space. hadoop archive -archiveName zoo.har -p /foo/bar / replacement 参数 )。outputdir (2)Sequence file 当然,也可以指定 HAR 的大小 ( 使用 -Dhar.block.size)。 sequence file 由一系列的二进制 key/value 组成,如果为 key HAR 是在 Hadoop file system 之上的一个文件系统,因此所有 小文件名,value 为文件内容,则可以将大批小文件合并成一个大文fs shell 命令对 HAR 文件均可用,只不过是文件路径格式不一样, 件。HAR 的访问路径可以是以下两种格式 : Hadoop-0.21.0 中 提 供 了 SequenceFile, 包 括 Writer, 013 51CTO 系统频道 : http://os.51cto.com
  • 13. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.comReader 和 SequenceFileSorter 类 进 行 写, 和 排 序 操 作。 如 果 读 文件进行存取。hadoop 版本低于 0.21.0 的版本,实现方法可参见 [3]。(3)CombineFileInputFormat CombineFileInputFormat 是一种新的 inputformat,用于将多个文件合并成一个单独的 split,另外,它会考虑数据的存储位置。4、 小文件问题解决方案 上一节中提到的方案均需要用户自己编写程序,每隔一段时间对小文件进行 merge 以便减少小文件数量。那么能不能直接将小文件处理模块嵌到 HDFS 中,以便自动识别用户上传的小文件,然后自动对 该论文将 size 小于 16MB 的文件当做小文件,需将它们合并成它们进行 merge 呢? 64MB( 默认的 block size),并建立索引,索引结构和文件存储方式 本节介绍了两篇论文针试图在系统层面解决 HDFS 小文件问题。 见上图。索引方式是一般的定长 hash 索引。这两篇论文对不同的应用提出了解决方案,实际上思路类似 : 在原有 论文 [5] 针对 Bluesky 系统 (http://www.bluesky.cn/) 的特点HDFS 基础上添加一个小文件处理模块,当一个文件到达时,判断该 提出了解决 HDFS 小文件存储的方案。Bluesky 是中国电子教学共文件是否属于小文件,如果是,则交给小文件处理模块处理,否则,交 享系统,里面的 ppt 文件和视频均存放在 HDFS 上。该系统的每个给通用文件处理模块处理。小文件处理模块的设计思想是,先将很多 课件由一个 ppt 文件和几张该 ppt 文件的预览快照组成。当用户请小文件合并成一个大文件,然后为这些小文件建立索引,以便进行快 求某页 ppt 时,其他相关的 ppt 可能在接下来的时间内也会被查看,速存取和访问。 因而文件的访问具有相关性和本地性。本文主要有 2 个 idea : 第一, 论文 [4] 针对 WebGIS 系统的特点提出了解决 HDFS 小文件存储 将属于同一个课件的文件合并成一个大文件,以提高小文件存储效的方案。WebGIS 是结合 web 和地理信息系统 (GIS) 而诞生的一种 率。第二,提出了一种 two-level prefetching 机制以提高小文件读新系统。在 WebGIS 中,为了使浏览器和服务器之间传输的数据量 取效率,即索引文件预取和数据文件预取。索引文件预取是指当用户尽可能地少,数据通常被切分成 KB 的小文件存储在分布式文件系统 访问某个文件时,该文件所在的 block 对应的索引文件被加载到内存中。论文结合 WebGIS 中数据相关性特征,将保存相邻地理位置信 中,这样,用户访问这些文件时不必再与 namenode 交互了。数据文息的小文件合并成一个大的文件,并为这些小文件建立索引以便对小 件预取是指用户访问某个文件时,将该文件所在课件中的所有文件加 014 51CTO 系统频道 : http://os.51cto.com
  • 14. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com载到内存中,这样,如果用户继续访问其他文件,速度会明显提高。 题的方案。它自带的三种方案,包括 Hadoop Archive,Sequence file 和 CombineFileInputFormat,需要用户根据自己的需要编写 下图展示的是在 BlueSky 中上传文件的过程 : 程序解决小文件问题 ; 而第四节提到的论文均是针对特殊应用提出的 解决方案,没有形成一个比较通用的技术方案。 6、 参考资料 (1)有关小文件问题的表述 : http://www.cloudera.com/blog/2009/02/the-small-files- problem/ (2)Hadoop Sequence file : http://hadoop.apache.org/common/docs/current/api/ org/apache/hadoop/io/SequenceFile.html (3)英文书籍《Hadoop : Definitive Guide》 第七章 190 页 The , 下图展示的是在 BlueSky 中阅览文件的过程 : (4)Xuhui Liu, Jizhong Han, Yunqin Zhong, Chengde Han, Xubin He: Implementing WebGIS on Hadoop: A case study of improving small file I/O performance on HDFS. CLUSTER 2009: 1-8 (5) Dong, Jie Qiu, Qinghua Zheng, Xiao Zhong, Jingwei Bo Li, Ying Li. A Novel Approach to Improving the Efficiency of Storing and Accessing Small Files on Hadoop: A Case Study by PowerPoint Files. In Proceedings of IEEE SCC’ 2010. pp.65~72 原 文: http://dongxicheng.org/mapreduce/hdfs-small- files-solution/5、 总结 Hadoop 目前还没有一个系统级的通用的解决 HDFS 小文件问 015 51CTO 系统频道 : http://os.51cto.com
  • 15. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com淘宝Fourinone介绍及与Hadoop的性能PK 文 /Stone.Peng FourInOne(中文名字“四不像” 是一个四合一分布式计算框架, ) 切会那么复杂,我觉的自己可以写一个更简单的东西,它不需要过度在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老 设计,只需要看上去更酷一点,更小巧一点,功能更强一点。于是我将外写的其他开源框架 , 当我们把复杂的 hadoop 当作一门学科学习 自己对分布式的理解融入到这个框架中,考虑到底层实现技术的相似时,似乎忘记了我们想解决问题的初衷 : 我们仅仅是想写个程序把几 性,我将 Hadoop,Zookeeper,MQ, 分布式缓存四大主要的分布式台甚至更多的机器一起用起来计算,把更多的 cpu 和内存利用上,来 计算功能合为一个框架内,对复杂的分布式计算应用进行了大量简化解决我们数量大和计算复杂的问题,当然这个过程中要考虑到分布式 和归纳。的协同和故障处理。如果仅仅是为了实现这个简单的初衷,为什么一 fourinone-1.11.09 hadoop-0.21.0 体积 82K 71M 依赖关系 就一个 jar, 没有依赖 约 12 项 jar 包依赖 配置 就一个配置文件 较多配置文件和复杂属性 集群搭建 简单, 每台机器放一个 jar 和配置文件 复杂, 需要 linux 操作基础和 ssh 等复杂配置,还需要较多配置文 件配置 计算模式 提供两种计算模式 : 包工头和工人直接交互方式,包工 计 算 更 多 倾 向 于 文 件 数 据 的 并 行 读 取, 非 计 算 过 程 的 设 计。 而 头和工人通过消息中枢方式交互,后者不需要工人节点 JobTracke 跟 TaskTracker 直 接 交 互, 查 询 NameNode 后, 可直接访问 TaskTracker 直接从 Datanode 获取数据。 并行模式 N*N,支持单机并行,也支持多机并行,多机多实例并行 1*N,不支持单机并行, 只支持多机单实例并行 内存方式 支持内存方式设计和开发应用, 并内置完整的分布式缓 以 hdfs 文件方式进行数据处理, 内存方式计算支持很弱 存功能 文件方式 自带文件适配器处理 io Hdfs 处理文件 io 计算数据要求 任意数据格式和任意数据来源,包括来自数据库,分布 Hdfs 内的文件数据, 多倾向于带换行符的数据 式文件,分布式缓存等 016 51CTO 系统频道 : http://os.51cto.com
  • 16. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 调度角色 包工头,可以有多个,支持链式处理,也支持大包工头对 JobTracke,通常与 NameNode 一起 小包工头的调度 任务执行角色 农民工,框架支持设计多种类型的工人用于拆分或者合 TaskTracker,通常与 Datanode 一起 并任务 中间结果数据保存 手工仓库,或者其他任意数据库存储设备 Hdfs 中间结果文件 拆分策略 自由设计,框架提供链式处理对于大的业务场景进行环 以 64m 为拆分进行存储,以行为拆分进行计算 ; 实现 map 接口, 节拆分数据的存储和计算拆分根据业务场景自定义 按行处理数据进行计算 合并策略 自由设计,框架提供农民工节点之间的合并接口,可以 TaskTracker 不透明,较少提供程序控制,合并策略设计复杂 ; 实 互相交互设计合并策略, 也可以通过包工头进行合并 现 reduce 接口进行中间数据合并逻辑实现 内存耗用 无需要制定 JVM 内存,按默认即可,根据计算要求考虑 需 要 制 定 JVM 内 存, 个 进 程 默 认 1G, 常 namenode, 每 常 是否增加 JVM 内存 jobtracker 等启动 3 个进程,耗用 3G 内存 监控 框架提供多环节链式处理设计支持监控过程,通过可编 输出较多的系统监控 log, map 和 reduce 百分比等, 如 但是会牺 程的监控方式,给于业务开发方最大灵活的监控需求实 牲性能,业务监控需要自己实现 现,为追求高性能不输出大量系统监控 log 打包部署 脚本工具 上传 jar 包到 jobtracker 机器 平台支撑 支持跨平台,windows 支持良好 多倾向于支持 linux, Windows 支持不佳,需要模拟 linux 环境, 并且建议只用于开发学习 其他 协同一致性、分布式缓存、通讯队列等跟分布式计算关 不支持 系密切的功能支持 总结 : Hadoop 并不是为了追求一个并行计算的框架而设计, 提 作者介绍 :供快捷和灵活的计算方式去服务各种计算场景, 它更多的是一个分 Stone.Peng,资深 IT 技术人士,现在淘宝网任高级专家,从事互布式文件系统,提供文件数据的存储和查询,它的 map/reduce 更倾 联网核心技术研究。之前在金蝶总体架构部任 SOA 架构师,负责设向于提供并行计算方式进行文件数据查询。而 fourinone 相反。 计 ESB。 相关分布式框架 (jar 格式 ) 及 demo 代码下载 : 原 文: http://fendou.org/2012/02/24/taobao-fourinone- http://download.csdn.net/detail/fourinone/3557912 vs-hadoop/ http://www.skycn.com/soft/68321.html 017 51CTO 系统频道 : http://os.51cto.com
  • 17. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com淘宝海量数据库之十四:故障恢复 文 / 阳振坤 作为最基础的服务设施之一,数据库必须有非常高的稳定性和可靠 热插拔等 ),其实它们的性价比并不高,双机热备 ( 镜像 ) 则进一步降性。与经济型的低端服务器相比,中高端服务器通过硬件的冗余和部 低了整个系统的性价比。比较而言,低端的经济型服务器的性价比要件热插拔等提供了更高的稳定性和可靠性,比较重要的数据库应用通 好得多。常也选择这些更加稳定可靠、当然也更加昂贵的服务器。 当前云计算技术已经广泛使用,Google 的 GFS 和 BigTable 以 然而,除了服务器自身硬件之外,许多其他的人为和环境的因素也 及 Hadoop 等的大量实践表明,用低端的经济型服务器组成的云计可能导致服务的中断 : 算机群,通过机器之间的冗余实现了非常高的可靠性,提供了比中高 端服务器高得多的性价比,还提供了单机系统遥不可及的容量和处理 * 软件故障 ; 能力,并不再需要各种昂贵的高端存储。对于 OceanBase : * 网络故障 ; * OceanBase 是数据库系统,需要提供高可靠的服务,容错和 * 电力故障 ; 故障恢复必不可少 ; * 数据中心 / 机房的各种故障 ; * OceanBase 是分布式系统,云计算的容错和故障恢复技术完 * 地震、水灾、火灾等 ; 全适用 ; 此外,中高端服务器,虽然可靠性高于低端服务器,仍然可能出现故 * 云计算通过多个数据副本来避免单个或少量机器的故障。对障,只是概率更低一些。事实上,随着机器数量增加,无论多么可靠的 关系数据库系统,当前的主流服务器的磁盘容量通常是富余的,例如服务器都会出现故障。因此,一些比较关键的数据库应用,除了采用 300GB×12 或 600GB×12 的服务器单机有 3TB 或 6TB 左右的可靠性较高的中高端服务器之外,还不得不通过双机热备 ( 镜像 ) 等 磁盘总容量,但关系数据库单机通常只能服务少得多的数据量 ( 部分手段进一步提高可靠性。 原因可能是因为在过去几十年中,磁盘的容量增加了成千上万倍,但 直到现在它们的 IOPS 仍然只有 300 左右 )。因此 OceanBase 基 中高端服务器的主要优势在于它们的可靠性 ( 包括硬件的冗余和 线数据的每个 tablet 在不同服务器上保存 2~3 个副本而带来的整体 018 51CTO 系统频道 : http://os.51cto.com
  • 18. 专题杂志订阅 : http://os.51cto.com/art/201011/233915.htm Special《Linux 运维趋势》投稿信箱 : yangsai@51cto.com成本增加几乎可以忽略 (sstable 内置的数据压缩也一定程度上抵消 DBA 确实要下线某个 ChunkServer、或者确认某个 ChunkServer了这种数据冗余 ),但系统的可靠性却有了质的飞跃 ; 无法再回到机群、或者业务高峰即将到来, 可以缩短甚至取消这个 TA 下线观察时间,使得 tablet 副本尽快达到指定数量,以便更好地提供 * 由于 OceanBase 基线数据在一段时间 ( 例如一天 ) 内固定不 服务。变,因此 tablet 的多个副本能够同时提供读服务 ( 基线数据不需要写入 ),这样不仅提高了服务能力,也避免了少量数据的高频访问导致的 如果需要了解云计算 / 云存储方面更加深入的信息,感兴趣的读者单机访问热点 ; 可以阅读 Google 的 GFS 和 BigTable 的文章 : The Google File “ System” 和“Bigtable: A Distributed Storage System for 基 线 数 据 的 tablet 是 OceanBase 基 本 的 存 储 单 元, 据 DBA 根 Structured Data”。的配置,每个 tablet 大小一般在十几兆到几百兆之间。如果应用是单个机群,每个 tablet 一般有 3 个副本并且存储在不同 ChunkServer 原 文 :h t t p : / / b l o g . s i n a . c o m . c n / s /上; 如果应用是主备机群,则每个机群内的 tablet 一般是 2 个副本, blog_3fc85e260100yz7d.html主备机群累计 4 个多副本。由于基线数据在一段时间 ( 例如一天 ) 内是不变的,因此 tablet 的每个副本都能够提供服务。这样,即使少量服务器出现故障,数据库的服务不会中断,只是由于服务器数量减少, 【特别推荐】服务能力会有相应地下降。 《开发月刊》2012 年 3 月刊 RootServer 实时监控着所有的 ChunkServer 以及它们保存的tablet 的副本,一旦发现某个 ChunkServer 有一段时间不在线或者某些 tablet 的副本数量不足,它就通知当前活着的 ChunkServer进行 tablet 副本复制,以保证足够的副本数量,既避免数据丢失,又避免了由于一些 tablet 因副本太少 ( 例如一个 ) 但访问量高而导致的局部热点。由于服务器可能因为硬件或者软件升级等而停机一段时间后再次回到机群,为了避免无效的 tablet 来回复制,DBA 通常会设置 ChunkServer 下线的观察时间 ( 例如 30~60 分钟 ),只有当某台 ChunkServer 的下线时间超过这个观察时间,RootServer 才会通知其他活着的 ChunkServer 进行 tablet 副本复制。当然,如果 019 51CTO 系统频道 : http://os.51cto.com
  • 19. 工具杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tools《Linux 运维趋势》投稿信箱 : yangsai@51cto.com在 CentOS 6.2 上安装 Puppet 配置管理工具 文 /vpsee 云计算时代的系统管理员会经常陷入一系列的重复任务中,创建虚 以下安装采用两台服务器,一台是 master.vpsee.com 用来安拟机,安装或重装系统,升级软件包,管理配置文件,添加、管理和配置 装 puppet-server 服 务 ; 台 是 client.vpsee.com 用 来 安 装 一系统服务等。这些任务低效而且无聊,我们需要把他们自动化,于是 puppet 客户端。就出现了系统管理员自己写的脚本,用定制脚本实现自动化,但是自 Puppet 要求所有机器有完整的域名(FQDN) 如果没有 DNS 服 ,己写的脚本要保证能顺利运行在不同的平台上不是一件轻松的工作, 务器提供域名的话,可以在两台机器上设置主机名(注意要先设置主每次操作系统更新都需要重新测试定制脚本,耗费大量时间和精力, 机名再安装 Puppet,因为安装 Puppet 时会把主机名写入证书,客灵活性和功能也很难保证。而且脚本语言虽然简单,但是自己写的脚 户端和服务端通信需要这个证书):本不一定别的管理员就能马上看懂,有时候自己看别人写的脚本或代 # vi /etc/hosts码不是一件愉快的事情。所以出现了类似 Puppet, Chef 这样的自 192.168.2.10 master master.vpsee.com动化配置管理工具。为啥 Linode 只有 19 人就能应付上千服务器 192.168.2.11 client client.vpsee.comPuppet 要 求 所 有 机上万用户,这就是自动化带来的好处。 器上的时钟保持同步, 所以需要安装和启用 ntp 服务 (如果采用 Puppet 是一个客户端 / 服务器(C/S)架构的配置管理工具,在 CentOS-6.2-x86_64-minimal.iso 最小化安装, 需要额外安装这 个软件包) 。中 央 服 务 器 上 安 装 puppet-server 服 务 器(puppet master), # yum install ntp在需要被管理的目标服务器上安装 puppet 客户端软件(puppet # chkconfig ntpd onclient)。当客户端连接上服务器后,定义在服务器上的配置文件会被 # ntpdate pool.ntp.org编译,然后在客户端上运行。客户端每隔半小时主动会和服务器通信 29 Feb 15:22:47 ntpdate[15867]: step time server 196.25.1.1一次,确认配置信息的更新情况,如果有新的配置信息(或者配置有变 offset 98.750417 sec化) 配置文件将会被重新编译并分发到客户端执行。当然, , 也可以在 # service ntpd start服务器上主动触发更新指令来强制各客户端进行配置更新。 Starting ntpd: [ OK ] 020 51CTO 系统频道 : http://os.51cto.com
  • 20. 工具杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tools《Linux 运维趋势》投稿信箱 : yangsai@51cto.com安装 puppet 服务 Puppet 客户端使用 HTTPS 和服务端(master)通信,为了和服 务器端通信必须有合法的 SSL 认证,第一次运行 puppet 客户端的 Puppet 需要 Ruby 的支持,如果要查看命令行帮助的话需要额 时候会生成一个 SSL 证书并指定发给 Puppet 服务端。外 ruby-rdoc 这个软件包 : # puppet agent --no-daemonize --onetime --verbose # yum install ruby ruby-lib ruby-rdoc --debug --server=master.vpsee.comPuppet 服务端接受到 Puppet 不在 CentOS 的基本源中,需要加入 PuppetLabs 提 客户端的证书后必须签字 (sign)才能允许客户端接入, sign 后用供的官方源 : puppet cert list –all 查看会发现 client.vpsee.com 前面多了 一个 + 后, “加入” 表示 成功 : # yum -y install wget # puppet cert list --all # wget http://yum.puppetlabs.com/el/6/products/x86_64/ puppetlabs-release-6-1.noarch.rpm client.vpsee.com (65:3C:20:82:AE:F6:23:A8:0A:0B:09:EF:05: 64:1D:BB) # yum install puppetlabs-release-6-1.noarch.rpm + master.vpsee.com (AF:A0:32:78:D4:EB:D3:EE:02:1C:62 # yum update :1C:83:3C:46:EC) (alt names: DNS:master, DNS:master. 在 master 上安装和启用 puppet 服务 : vpsee.com) # yum install puppet-server # puppet cert --sign client.vpsee.com # chkconfig puppet on notice: Signed certificate request for client.vpsee.com # service puppetmaster start notice: Removing file Puppet::SSL::CertificateRequest Starting puppetmaster: [ OK ] client.vpsee.com at /var/lib/puppet/ssl/ca/requests/ client.vpsee.com.pem 关闭 iptables : # puppet cert list --all # /etc/init.d/iptables stop + client.vpsee.com (65:3C:20:82:AE:F6:23:A8:0A:0B:09:EF:05 iptables: Flushing firewall rules: [ OK ] :64:1D:BB) iptables: Setting chains to policy ACCEPT: filter [ OK ] + master.vpsee.com (AF:A0:32:78:D4:EB:D3:EE:02:1C:62 iptables: Unloading modules: [ OK ] :1C:83:3C:46:EC) (alt names: DNS:master, DNS:master.安装 puppet 客户端 vpsee.com) 这样,客户端和服务端就配置好了,双方可以通信了。 在 client 上安装 puppet 客户端 : Hello, world 现在可以在服务端写个小例子来测试一下。这个例 # yum install puppet 021 51CTO 系统频道 : http://os.51cto.com
  • 21. 工具杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tools《Linux 运维趋势》投稿信箱 : yangsai@51cto.com子作用很简单,用来在客户端的 /tmp 目录下新建一个 helloworld.txt 文件,内容为 hello, world. 在服务端编写代码 : # vi /etc/puppet/manifests/site.pp node default { file { "/tmp/helloworld.txt": content => "hello, world"; } } 在客户端上执行 puppet,运行成功后会在 /tmp 看到新生成的helloworld.txt : $ puppet agent --test --server=master.vpsee.com warning: peer certificate wont be verified in this SSL session info: Caching certificate for client.vpsee.com info: Caching certificate_revocation_list for ca info: Caching catalog for client.vpsee.com info: Applying configuration version 1330668451 notice: /Stage[main]//Node[default]/File[/tmp/helloworld. txt]/ensure: defined content as {md5}e4d7f1b4ed2e42d1 5898f4b27b019da4 info: Creating state file /home/vpsee/.puppet/var/state/ state.yaml notice: Finished catalog run in 0.03 seconds $ cat /tmp/helloworld.txt hello, world 原文: http://www.vpsee.com/2012/03/install-puppet-on-centos-6-2/ 022 51CTO 系统频道 : http://os.51cto.com
  • 22. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com浅谈Squid在图片存储架构中的应用 文 / 王国峰 上一篇我表明了自己对缓存的立场 : 缓存一切可以缓存的资源。并 Squid 君对我说他手头刚好有一周前的空空写真,问我看过没有,讨论了如何利用 IIS 自身的缓存功能来轻松满足中小规模的图片缓存 我说发过来看看呗,于是他很快发给了我(Squid 缓存命中,下载极需求。关于 IIS 的客户端缓存和服务器端缓存的介绍大家可以回顾这 快,哦耶! ; )篇文章。自从上一篇文章发表后,有不少朋友向我反馈 : IIS 自身的 用 我收到写真图,发现是两天前已经看过了的,于是告诉 Squid 君要缓存功能负载有限,建议使用 Varnish 或 Squid。是的,我非常同意, 最新的,Squid 君看了看库存,发现手头没有最新的了,于是就说让我所以我今天就和大家来探讨一下分布式代理缓存服务器 Squid 在图 等一会儿,他去问问其他的代理兄弟有没有,我说好的, (Squid 谢谢片存储架构中的应用,文中的一些观点,如有错误,敬请指出,谢谢。 支持分布式集群方式,各个父子节点、兄弟节点之间的缓存数据可以Squid 简介 互相同步); Squid 是一款高性能分布式代理缓存服务器,它一般用来做前置 结果空欢喜一场,他回来和我说其他兄弟也没有,当我非常失落的Web Cache,加快用户访问 Web 的速度。为了说明其运行过程,我 时候,他突然说空空今天来杭州,他可以直接向空空要写真,我一开心将仍旧沿用我前一篇的 YD 风格,再一次请出人见人爱、花见花开、车 就对他说,快去快去(当 Squid 缓存不命中时,只能从源服务器获取见爆胎的空空老师,请读者自觉送出掌声 : 数据); Squid 君是时下最受欢迎的空空作品代理人,为了让所有空空迷能 过了好久,Squid 君回来了,他说见空空的人实在太多了,排了好更快捷地欣赏到高质量的空空作品,Squid 君天天加班加点,整理和 久的队才拿到她最新的写真图呢,我谢过之后他就把写真很快地发给保存空空的最新作品,并对其作进一步的优化处理,比如去码。 了我。之后他说他一定要把这个写真保存起来,以便提供给其他空空 迷和其他兄弟代理(Squid 会把从源服务器获取的数据保存到自己的 有一天,我无聊至极,便打电话给 Squid 君,向他要最新的空空写 缓存中,如果下一个用户提出同样的下载请求,Squid 直接把缓存中真图(向 Squid 发出下载请求); 的数据给用户,当然也可以把数据奉送给其他兄弟代理,独乐乐不如 Squid 君仔细辨别了一下我的声音,发现是老朋友,于是便答应了 众乐乐)。我的请求(Squid 中的 ACL 访问控制,只接受合法的请求); 023 51CTO 系统频道 : http://os.51cto.com
  • 23. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 到这里,我相信你已经大概明白 Squid 的工作过程了吧,下面我就 cache_access_log /var/log/squid/access.log对 Squid 特点做一下简要概括 : cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log 1. 开源,基于 GNU 通用公共许可证,意味着你可以在同等开源协 pid_filename /var/run/squid.pid议下使用和修改 Squid。 # 关闭认证机制,有些版本的 squid 会自动的加入代理认证机制, 2. 支持多种协议,目前支持 http、ftp、gopher、wais、 等网络 ssl 而普通情况下是不需要的 , 故找到包括 auth_param 的行,给它协议。 们加上注释 #auth_param basic children 5 3. 支 持 分 布 式 集 群,Squid 使 用 TCP(HTTP) 和 UDP(ICP/ #auth_param basic realm Squid proxy-caching web serverHTCP) 通讯来确定邻居 cache 的状态。 #auth_param basic credentialsttl 2 hours 4. 支持访问控制,通过设置 ACL 和 ARL 来限制某些访问。 # 设置 squid 用户及用户组、管理员账号 cache_effective_user squid Squid 官方网站 : http://www.squid-cache.org/ cache_effective_group squid 你可以在官网上下载 Squid 以及阅读相关文档,当然接下来我也 cache_mgr youraccount@your.e.mail会用 Chinese 向大家介绍 Squid 的用法。 # 与内存有关的配置 : 因为我的系统内存很小, 所以只给 8 MB !如 果您的物理内存很大的情况下, 例如 512 MB,可以考虑加大到 64Squid 配置详细说明 或 128 MB。 下面是一份详细的 Squid 的配置清单及其说明 : cache_mem 128 MB # 与磁盘容量有关的配置 ( 注 : 下列的 90 与 95 是百分比 ),如果 #http_port 指 令 告 诉 squid 在 哪 个 端 口 侦 听 HTTP 请 求。 默 您的 cache_dir 所在磁盘很大时,可以考虑将 4096 改成 32768 认 端 口 是 3128, 除 下 面 的 形 式 外 , 也 可 以 是 http_port KB 192.168.63.50:3128 cache_swap_low 90 http_port 3128 cache_swap_high 95 icp_port 3130 maximum_object_size 4096 KB # 缓 存 目 录 的 设 置 , 可 以 设 置 多 个 缓 存 目 录 , 语 法 为 :<cache_ # 与内存保存资料有关的配置 dir> <aufs|ufs> < 目录所在 > <MBytes 大小 > <dir1> <dir2> maximum_object_size_in_memory 8 KB cache_dir ufs /var/spool/squid 1000 64 1024 # 定义 acl( 访问控制列表 ), 语法为 :acl<acl> <acl 名称 > <acl # 下面是关于日志文件的放置目录与文件名! 024 51CTO 系统频道 : http://os.51cto.com
  • 24. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com 类型 > < 配置的内容 > 注意 : 以上的配置说明来自这里。 # 黑体为用户自定义部分 配置好以后,我们就可以启动 squid 了,启动的步骤如下 : acl All src 0/0 acl Manager proto cache_object 1). 我们可以运行下面的命令来检查配置文件的正确性 : acl Localhost src 127.0.0.1/32 # squid -k parse acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 只有这一步正确你才可以进行下一步的操作 1025-65535 acl SSL_ports 443 563 2). 初始化 cache 目录 . 即建立缓存目录的存储格式 acl CONNECT method CONNECT 只需在第一次启动 squid 服务之前执行 ( 在初次运行 squid 之前, acl MyNetwork src 192.168.0.0/16 或者无论何时你增加了新的 cache_dir,你必须初始化 cache 目录。) # 利用前面定义的 acl, 定义访问控制规则 # squid -z http_access allow Manager Localhost http_access deny Manager cache 目录初始化可能花费一些时间,依赖于 cache 目录的大小 http_access deny !Safe_ports 和数量,以及磁盘驱动器的速度。假如你想观察这个过程,请使用 -X http_access deny CONNECT !SSL_ports 选项 : http_access allow MyNetwork # squid -zX http_access deny All 3). 启动 squid 服务 # 定义与其它代理服务器的关系 , 语法 : <cache_peer> < 主机 # service squid start 名称 > < 类别 > <http_port> <icp_port> < 其它参数 > cache_peer 192.168.60.6 parent 4480 7 no-query default 假定 squid 安装在 /usr/local/squid 目录下 , 也可以 # 设置与其它代理服务器的关系 : # /usr/local/squid/sbin/squid -sD # <cache_peer_access> < 上层 Proxy > <allow|deny> <acl 最后,我推荐你去看看 Squid 权威指南,并希望你可以利用 Squid 名称 > 成功搭建一个分布式图片缓存系统,Squid 真的很棒! #cache_peer_access 192.168.60.6 allow aclxxx #cache_peer_access 192.168.60.6 deny !aclxxx 为了你和你家人的健康,转载请注明原文出处 : http://www.itivy. coredump_dir /var/spool/squid com/ivy/archive/2012/3/10/squid-usage.html 025 51CTO 系统频道 : http://os.51cto.com
  • 25. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com轻量级HTTP服务器Nginx(Nginx性能优化技巧) 文 / 南非蚂蚁一、编译安装过程优化 --with-cc-opt=-O3 --with-cpu-opt=CPU # 为 特 定 的 CPU 编 译, 效 的 值 包 括 : 有1. 减小 Nginx 编译后的文件大小 pentium, pentiumpro, pentium3, pentium4, athlon, 在编译 Nginx 时,默认以 debug 模式进行,而在 debug 模式下 opteron, amd64, sparc32, sparc64, ppc64会插入很多跟踪和 ASSERT 之类的信息,编译完成后,一个 Nginx 要确定 CPU 类型,可以通过如下命令 :要有好几兆字节。在编译前取消 Nginx 的 debug 模式,编译完成后 #cat /proc/cpuinfo | grep "model name"Nginx 只有几百千字节,因此可以在编译之前,修改相关源码,取消 二、利用 TCMalloc 优化 Nginx 的性能debug 模式,具体方法如下 : TCMalloc 的 全 称 为 Thread-Caching Malloc, 谷 歌 开 发 的 是 在 Nginx 源码文件被解压后,找到源码目录下的 auto/cc/gcc 文 开源工具“google-perftools”中 的 一 个 成 员。 与 标 准 的 glibc 库件,在其中找到如下几行 : 的 malloc 相比,TCMalloc 库在内存分配效率和速度上要高很多,这 # debug 在很大程度上提高了服务器在高并发情况下的性能,从而降低系统负 CFLAGS=”$CFLAGS -g” 载。下面简单介绍如何为 Nginx 添加 TCMalloc 库支持。 注释掉或删掉这两行,即可取消 debug 模式。 要安装 TCMalloc 库,需要安装 libunwind(32 位操作系统不需2. 为特定的 CPU 指定 CPU 类型编译优化 要安装) google-perftools 两个软件包, 和 libunwind 库为基于 64 位 CPU 和操作系统的程序提供了基本函数调用链和函数调用寄存器 在编译 Nginx 时,默认的 GCC 编译参数是“-O” 要优化 GCC 编 , 功能。下面介绍利用 TCMalloc 优化 Nginx 的具体操作过程 :译,可以使用以下两个参数 : 026 51CTO 系统频道 : http://os.51cto.com
  • 26. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com1. 安装 libunwind 库 为 了 使 Nginx 支 持 google-perftools, 要 在 安 装 过 程 中 添 加 需 “–with-google_perftools_module”选 项 重 新 编 译 Nginx, 装 安 可以从 代码如下 : http://download.savannah.gnu.org/releases/libunwind [root@localhostnginx-0.7.65]#./configure 下 载 相 应 的 libunwind 版 本, 里 下 载 的 是 libunwind-0.99- 这 ]]>--with-google_perftools_module --with-http_stub_status_alpha.tar.gz,安装过程如下 : module --prefix=/opt/nginx [nginx-0.7.65]#make [home]#tar zxvf libunwind-0.99-alpha.tar.gz [nginx-0.7.65]#make install [home]# cd libunwind-0.99-alpha/ [libunwind-0.99-alpha]#CFLAGS=-fPIC ./configure 到这里 Nginx 安装完成。 [libunwind-0.99-alpha]#make CFLAGS=-fPIC 4. 为 google-perftools 添加线程目录 [libunwind-0.99-alpha]#make CFLAGS=-fPIC install 创建一个线程目录,这里将文件放在 /tmp/tcmalloc 下,操作如2. 安装 google-perftools 下: 可 以 从 http://google-perftools.googlecode.com 下 载 相 [home]#mkdir /tmp/tcmalloc应 的 google-perftools 版 本, 里 下 载 的 是 google-perftools- 这 [home]#chmod 0777 /tmp/tcmalloc1.8.tar.gz,安装过程如下 : 5. 修改 Nginx 主配置文件 [home]#tar zxvf google-perftools-1.8.tar.gz 修改 nginx.conf 文件, pid 这行的下面添加如下代码 : 在 [home]#cd google-perftools-1.8/ [google-perftools-1.8]# ./configure #pid logs/nginx.pid; [google-perftools-1.8]#make && make install google_perftools_profiles /tmp/tcmalloc; [google-perftools-1.8]#echo "/usr/local/lib" ]]> /etc/ld.so. 接着,重启 Nginx,完成 google-perftools 的加载。 conf.d/usr_local_lib.conf 6. 验证运行状态 [google-perftools-1.8]# ldconfig 至此,google-perftools 安装完成。 为了验证 google-perftools 已经正常加载,通过如下命令查看 :3. 重新编译 Nginx [home]# lsof -n | grep tcmalloc nginx 2395 nobody 9w REG 8,8 0 1599440 /tmp/ 027 51CTO 系统频道 : http://os.51cto.com
  • 27. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com tcmalloc.2395 net.ipv4.tcp_syn_retries = 1 nginx 2396 nobody 11w REG 8,8 0 1599443 /tmp/ net.ipv4.tcp_fin_timeout = 1 tcmalloc.2396 net.ipv4.tcp_keepalive_time = 30 nginx 2397 nobody 13w REG 8,8 0 1599441 /tmp/ 将上面的内核参数值加入 /etc/sysctl.conf 文件中,然后执行如 tcmalloc.2397 下命令使之生效 : nginx 2398 nobody 15w REG 8,8 0 1599442 /tmp/ tcmalloc.2398 [home]#/sbin/sysctl -p 由于在 Nginx 配置文件中,设置 worker_processes 的值为 4, 下面是对实例中选项的含义进行介绍 :因此开启了 4 个 Nginx 线程,每个线程会有一行记录。每个线程文 net.ipv4.tcp_max_tw_buckets 参 数 用 来 设 定 timewait 的 数件后面的数字值就是启动的 Nginx 的 PID 值。 量,默认是 180000,这里设为 6000。 至此,利用 TCMalloc 优化 Nginx 的操作完成。 net.ipv4.ip_local_port_range 选项用来设定允许系统打开的端三、Nginx 内核参数优化 口范围。 内核参数的优化,主要是在 Linux 系统中针对 Nginx 应用而进行 net.ipv4.tcp_tw_recycle 选 项 用 于 设 置 启 用 timewait 快 速 回的系统内核参数优化,常见的优化参数值如下。 收。 下面给出一个优化实例以供参考 : net.ipv4.tcp_tw_reuse 选项用于设置开启重用,允许将 TIME- WAIT sockets 重新用于新的 TCP 连接。 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_syncookies 选项用于设置开启 SYN Cookies,当 net.ipv4.tcp_tw_recycle = 1 出现 SYN 等待队列溢出时,启用 cookies 进行处理。 net.ipv4.tcp_tw_reuse = 1 net.core.somaxconn 选项默认值是 128,这个参数用于调节系 net.ipv4.tcp_syncookies = 1 统同时发起的 tcp 连接数,在高并发的请求中,默认的值可能会导致 net.core.somaxconn = 262144 链接超时或者重传,因此,需要结合并发请求数来调节此值。 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_max_orphans = 262144 net.core.netdev_max_backlog 选项表示当每个网络接口接收 net.ipv4.tcp_max_syn_backlog = 262144 数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据 net.ipv4.tcp_synack_retries = 1 028 51CTO 系统频道 : http://os.51cto.com
  • 28. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com包的最大数目。 net.ipv4.tcp_max_orphans 选项用于设定系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤立连接将立即被复位并打印出警告信息。这个限制只是为了防止简单的 DoS 攻击。不能过分依靠这个限制甚至人为减小这个值,更多的情况是增加这个值。 net.ipv4.tcp_max_syn_backlog 选项用于记录那些尚未收到客户端确认信息的连接请求的最大值。对于有 128MB 内存的系统而言,此参数的默认值是 1024,对小内存的系统则是 128。 net.ipv4.tcp_synack_retries 参数的值决定了内核放弃连接之前发送 SYN+ACK 包的数量。 net.ipv4.tcp_syn_retries 选项表示在内核放弃建立连接之前发送 SYN 包的数量。 net.ipv4.tcp_fin_timeout 选 项 决 定 了 套 接 字 保 持 在 FIN-WAIT-2 状态的时间。默认值是 60 秒。正确设置这个值非常重要,有时候即使一个负载很小的 Web 服务器,也会出现因为大量的死套接字而产生内存溢出的风险。 net.ipv4.tcp_keepalive_time 选项表示当 keepalive 启用的时候,TCP 发送 keepalive 消息的频度。默认值是 2(单位是小时)。 原文 : http://ixdba.blog.51cto.com/2895551/803475 029 51CTO 系统频道 : http://os.51cto.com
  • 29. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com使用LVM技术提升Xen虚拟机性能的实现 文 / 崔晓辉 使用 LVM 分区作为 Xen 虚拟机的文件存储,不仅可以最大发挥 /dev/sda9 56461 109214 423746473+ 83 LinuxLVM 的性能,而且还可以很方便的管理虚拟机。 将大分区 /dev/sda9 建立物理卷 环境 : CentOS 5.7 x86_64 # pvcreate /dev/sda9 Physical volume "/dev/sda9" successfully created 1、卸载 /data1 , 将其做为 LVM 分区 pvscan 命令输出 : umount /data1 PV /dev/sda9 lvm2 [404.12 GB] fdisk -l 命令的输出 : Total: 1 [404.12 GB] / in use: 0 [0 ] / in no VG: 1 [404.12 GB] Disk /dev/sda: 898.3 GB, 898319253504 bytes 2. 使 用 vgcreate 命 令 建 立 volume groupm 名 字 为 xen- 255 heads, 63 sectors/track, 109214 cylinders volume2 Units = cylinders of 16065 * 512 = 8225280 bytes # vgcreate xen-volume /dev/sda9 Volume group "xen-volume" successfully created Device Boot Start End Blocks Id System 再看 pvscan 命令的输出,和前一次不一样了 : /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 51006 409601272+ 83 Linux PV /dev/sda9 VG xen-volume lvm2 [404.11 GB / 404.11 GB free] /dev/sda3 51007 52918 15358140 83 Linux Total: 1 [404.11 GB] / in use: 1 [404.11 GB] / in no VG: 0 [0 ] /dev/sda4 52919 109214 452197620 5 Extended /dev/sda5 52919 54830 15358108+ 83 Linux 再看看 vgdisplay 命令的输出 : /dev/sda6 54831 56135 10482381 83 Linux # vgdisplay -v xen-volume2 /dev/sda7 56136 56396 2096451 82 Linux swap / Solaris Using volume group(s) on command line /dev/sda8 56397 56460 514048+ 83 Linux Finding volume group "xen-volume" 030 51CTO 系统频道 : http://os.51cto.com
  • 30. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com --- Volume group --- # lvcreate -L 150G -n 3-34 xen-volume2 VG Name xen-volume Logical volume "xen-lv" created System ID 查 看 Logic volume 的 device node, 个 device node 的 命 这 Format lvm2 名规则是 volume group + logic volume : Metadata Areas 1 # ls -al /dev/mapper/ 总计 0 Metadata Sequence No 1 drwxr-xr-x 2 root root 80 Feb 23 10:29 . VG Access read/write drwxr-xr-x 14 root root 4120 Feb 23 10:29 .. VG Status resizable crw------- 1 root root 10, 62 Feb 23 10:21 control MAX LV 0 brw-rw---- 1 root disk 253, 0 Feb 23 10:29 xen--volume-3--34 Cur LV 0 另外, /dev 目录下有一个以 volume group 为名字的目录, 在 这 Open LV 0 个目录下有一个以 logic volume 为名字的软链接文件,这个文件指 Max PV 0 Cur PV 1 向 /dev/mapper 下的 device node。 Act PV 1 # ls -al /dev/xen-volume2/ 总计 0 VG Size 404.11 GB drwxr-xr-x 2 root root 60 Feb 23 10:29 . PE Size 4.00 MB drwxr-xr-x 14 root root 4120 Feb 23 10:29 .. Total PE 103453 lrwxrwxrwx 1 root root 29 Feb 23 10:29 3-34 -> /dev/ Alloc PE / Size 0 / 0 mapper/xen--volume-3--34 Free PE / Size 103453 / 404.11 GB 查看 Logic volume 的属性 : VG UUID JWIYoU-eaBA-MVdN-NX9Q-EEB0-sme7-Cxo85D # lvdisplay /dev/xen-volume2/3-36 --- Physical volumes --- --- Logical volume --- PV Name /dev/sda9 LV Name /dev/xen-volume/3-34 PV UUID H4ovdJ-GwoB-rfOK-jLbG-Px68-r1QG-SFF3my VG Name xen-volume PV Status allocatable LV UUID RMM48V-huJV-dKca-Gra0-f6sr-WNxS-9In3B0 3. 在上面建立的名为“xen-volume2” volume group 上创建 的 LV Write Access read/write一个容量为 150G 的,名称为“3-34” logic volume : 的 LV Status available 031 51CTO 系统频道 : http://os.51cto.com
  • 31. 技巧杂志订阅 : http://os.51cto.com/art/201011/233915.htm Tips《Linux 运维趋势》投稿信箱 : yangsai@51cto.com # open 0 of=test.bin bs=4K count=512KXen 使用 LVM 作为 os tap : LV Size 150.00 GB 母机写速度 331M/s Current LE 38400 虚拟机(linux)写速度 292M/s 相当于母机的 88% Segments 1 Allocation inherit Xen 使用 file 作为 os tap : Read ahead sectors auto 母机写速度 171M/s - currently set to 256 4. 在 /etc/fstab 文件里找到 data1 分区哪一行,将其注释掉,防 虚拟机(linux)写速度 57.2M/s 相当于母机的 33% 止重启时候出错。 总结 : 为什么要混合使用 file 和 LVM ? #LABEL=/data1 /data1 ext3 defaults 1 25、安装一个 Linux 虚 根 据 这 两 种 技 术 的 优 缺 点 和 技 术 特 性, 跑 MySQL 的 Xen 在 拟机 Linux 上,应充分利用 LVM 做为虚拟机 os 载体,尽量发挥 LVM 的 以 /dev/xen-volume2/3-37 为 xen 硬盘分区,安装一个 4G 内 性能优势。而 file 虽然写性能差,但是迁移方便,这是它的优势。 存,150G 硬盘的 linux 虚拟机 总之,使用的时候可根据具体需求合理选择 file 和 LVM 作为虚 1)建立 3.36 lvm 分区 50G, 名字为 3-36 拟机操作系统载体。 lvcreate -L 50G -n 3-37 xen-volume2 2) virt-install -n 3.37 原文 : http://os.51cto.com/art/201203/323815.htm -p -r 2048 --vcpus=4 -f /dev/xen-volume2/3-36 -l http:// localhost/os/5.7/i386/ --nographics 推荐阅读 : 意思是名字为 3.37 ,半虚拟化、内存为 2G 、cpu 核心数 4、硬盘 LVM 磁盘管理技术概念与实例讲解(图) 所 在 分 区 /dev/xen-volume2/3-37、 作 系 统 网 络 地 址 http:// 操 localhost/os/5.7/i386/ 不使用图形界面。 实用推荐 : Linux 下 LVM 分区 附注 : 测试 file 和 LVM 写速度 RedHat Linux 手动创建 RAID 和 LVM 分区 测试命令 Citrix XenServer 5.6 试用手记 dd if=/dev/zero of=test.bin bs=4K count=512K ;dd if=/ 手把手教你在 CentOS 5.6 下安装 Xen 虚拟机 dev/zero of=test.bin bs=4K count=512K ;dd if=/dev/zero 032 51CTO 系统频道 : http://os.51cto.com
  • 32. 新鲜事杂志订阅 : http://os.51cto.com/art/201011/233915.htm Freshy《Linux 运维趋势》投稿信箱 : yangsai@51cto.com通过分布式及文件级数据缓存打造千万级别WEB应用 文 / 姜志林 2011 年 京 东 商 城 碰 到 了 严 重 的 流 量 相 关 的 性 能 瓶 颈,51CTO 设计思路也 做 了 专 门 的 报 道, 有 幸 在 6 年 前 主 持 开 发 过 日 流 量 千 万 级 别 我的 系 统, 以 也 在 微 博 发 表 了 一 下 自 己 的 观 点 所 (具 体 详 见 http://os.51cto.com/art/201111/300247.htm) 不是每个人都有幸亲自参与并主持设计大型网络应用的,我应该说就是其中的幸运儿之一吧。我在 2003 年毕业后投身 IT 界,先是在国内某知名的棋牌游戏公司担任了 3 年的程序员 ; 年有幸参得到 06一个机会主持开发了一个日流量 2000 万级别的互联网应用。09 年转做市场运营,时间过去 3 年多了,现在技术日新月异,或许当年的设计已被替代。作为一个技术圈的退役老兵,仍坚持将自己的设计模型 1. 通过购买专业的 DNS 服务,将域名流量按照区域(如北京,浙写出来,跟大家分享学习,并欢迎大家批评指正。 江等)和服务商(如电信,网通等)分发到不同的 web 服务器 N, 在每 本文只做抛砖引玉的作用,具体实施欢迎与我互动。 一台 web 服务器安装并部署 web 项目 ; 每台 web 根据用户的不同 命令读写本机缓存 XML ; 项目概况 某大型网络应用,含普通的用户功能(如登录、信息修改等) 含信息发布功能 ; ; 含统计功能(如信息查看、点击等) 以及其 ; 2. 中央应用服务器定时的获取多台 web 服务器的缓存 xml 文他周边功能。 件,进行应用级的数据分析汇总,并将结果写入数据库服务器 ; 硬件配置 数据库服务器 1 台 ; 中央应用服务器 1 台 ;web 3. 中央应用服务器定时的获取数据库服务器信息,并同步到多台服务器 20 台(可灵活扩充)。 web 应用服务器。 033 51CTO 系统频道 : http://os.51cto.com
  • 33. 新鲜事杂志订阅 : http://os.51cto.com/art/201011/233915.htm Freshy《Linux 运维趋势》投稿信箱 : yangsai@51cto.com设计难点及解决办法 解决办法 : 对数据及时性进行归类。在设计期间,我们将数据的及 时性简单的划分为三个级别,按需,高及时和非及时。按需数据立即WEB 服务器版本控制 同步 ; 高及时信息每 10 分钟同步到中央应用服务器,低及时信息每 解 决 办 法 : 每 台 web 服 务 器 配 置 并 标 注 好 版 本 号 ; 中 央 应 为 在 小时同步。这其中,比较有意思的是一些看似按需的操作也并非真正用服务器做好版本兼容性工作。如 : web 程序的统计功能,新版本 的按需操作。如用户密码修改,修改后的密码密文就存在 web 服务V1.1 去掉了老版本 V1.0 中的 IP 统计。Web 服务器 1 的当前 web 器 N 的 xml 配置文件中,就能确保用户使用新密码登录。用户在没版本为 V1.0,Web 服务器 2 的当前版本为 V1.1。在中央应用服务 有切换线路或者更改区域的情况下,仍然是使用的 web 服务器 N,也器需提供两个方法,TongJi-v10() 和 TongJi-v11()。在 v10 的方 无需按需同步密码数据,只需要高及时同步。法中先做数据校正,再调用新方法 v11。 数据的安全性 大量 Web 服务器存在着大量的数据,甚至包含账户或者资金信息, 某种意上讲这些数据是不安全的。 解决办法 : 文件存放路径、加密、模糊。不要将 xml 缓存文件存放 在 web 路径可以供用户下载的地方,配置绝对的硬盘路径来设置配 置文件的读写。如账户的密码只存取 MD5 加密字串,如资金采取多 套对称加密算法加密,用不要用 password 来标识字段为密码而采用 I1,不仅能模糊字段还能节省磁盘及后续传输消耗。中央应用服务器海量数据传输 作者简介 :@365 姜志林 , 年程序员, 年 cto, 年的市场运营, 3 4 2 专注于数据分析和 SEO 策略,拒绝 YY,用数据和结果说话。 解决办法 : 假设一台服务器承载 200 万的流量,将产生大量的应用数据。可以先将这些数据在 web 端进行压缩后再传输,能节省 80% 原文 : http://os.51cto.com/art/201203/321067.htm以上的带宽成本。 相关阅读 :数据的及时性 分布式缓存 Memcached 的 Java 客户端优化历程 数据及时性是使用文件缓存比较棘手的问题之一。 淘宝“绿色计算”实践 : 低功耗 CDN 缓存服务 034 51CTO 系统频道 : http://os.51cto.com
  • 34. 招募启事 最近人手不够,数次跳票,实在对不住诸位。为此,还要继续发招募启事。帮忙方式包括 : 1、推荐文章 本刊发布日期 : 每个月的第二个星期五 无论是您在互联网上看到的好文章,还是您自己总结 / 整理 您可以通过如下方式检查新刊发布 :的资料 ; 无论是英文还是中文 ; 无论是入门的还是高端的,都欢 1、电子邮件订阅 :迎推荐!在新浪微博上 @51CTO 系统频道 即可。 http://os.51cto.com/art/201011/233915.htm 2、投稿 2、RSS 订阅 : 如果您愿意与大家分享您技术经验的热诚,那么欢迎您的投稿!原创或译文均可,稿件在 51CTO 首发可领取稿酬 :) http://www.51cto.com/php/rss.php?typeid=777 投稿信箱 : yangsai@51cto.com 3、iPad 订阅 : 《读览天下》 可在 客户端中搜索 3、推广与意见 如果您喜欢我们的杂志,认为这本杂志对于您的工作有所帮 《Linux 运维趋势》是由 51CTO 系统频道策划、针对 Linux/助,请向您的 Linux 好友、同事们推荐它!如果您觉得这份杂志 Unix 系统运维人员的一份电子杂志,内容从基础的技巧心得、实还有什么地方需要改进或补充,也希望提出您的宝贵意见! 际操作案例到中、高端的运维技术趋势与理念等均有覆盖。 反馈可至《Linux 运维趋势》新浪微群 : 《Linux 运维趋势》是开放的非盈利性电子杂志,其中所有内 容均收集整理自国内外互联网(包含 51CTO 系统频道本身的 http://q.weibo.com/121303 内容)。对于来自国内的内容,编辑都会事先征求原作者的许可 或在新浪微博 (八卦,趣闻 & 数字栏目例外)。如果您认为本杂志的内容侵犯 @51CTO 系统频道 到了您的版权,可发信至 yangsai@51cto.com 进行投诉。