婉兮清扬

案上诗书杯中酒之快意人生

关于国内IaaS市场的一些个人看法

发表时间:2013-02-27 16:45:35 评论:1

前段时间我通过电子邮件接受了《网络世界》记者于翔的采访,就国内的IaaS市场发表了一些看法。于翔关于国内IaaS市场一系列的综述性文章今天正式发表,其中引用了我的一些观点。我在接受采访时还对国内的IaaS市场做了一些分析,但是没有被收录在于翔的文章中。我把采访提纲中的主要观点重新整理了一下,算是对《网络世界》这篇专题的一点补充吧。

特别需要说明的是,本人的博客文章仅仅代表个人观点,而不代表本人所在公司的观点。

(1)如何评价中国IaaS市场的整体发展?

目前国内的公有云市场的不可知与不可控因素比较多。从服务提供商的维度看,传统IDC服务提供商、大型互联网企业、以及小型创业公司同场竞技,似乎是百花齐放百家争鸣的一片大好局面;从具体产品的维度看,大部分所谓“云计算”产品基本上还停留在国外五年前的虚拟主机这个层次,而忽视用户体验已经成为整个行业的共同特征;从服务质量的维度看,大部分服务提供商没有为产品提供SLA保障,整个行业普遍缺乏质量评估与质量控制体系。在整个行业成熟度较低的情况下,部分规模较大的服务提供商已经开始通过价格战抢占市场。这样的短视行为使得公有云市场在短时间内沦落为红海,公有云服务沦落为物廉价美的代名词,也导致公众普遍认为使用公有云服务存在较大的风险。

相比之下,国内的私有云市场显得相对成熟。大型互联网企业基本上都有自己的私有云规划,部分先行者已经完成私有云的实施。更重要的是,地方政府和传统行业的IT部门纷纷表示出对云计算的兴趣,开始评估实施云计算所需要的投入以及可能的收益。在过去两年间,国内市场上涌现出大量在国外开源软件的基础上简单地改头换面后形成的自有品牌云管理平台,其目标客户基本上都是地方政府和传统行业的IT部门。可以比较乐观地认为,国内的私有云市场已经开始进入了收割期。

对于公有云市场来说,主要的困难在于解决用户的信任问题。经过多年的市场培育,现在很多用户已经逐渐接受了公有云服务的概念,并且愿意使用Amazon或者Linode等等国外云主机服务,但是对使用国内云主机服务心存疑虑。在过去两年间,阿里云和盛大云都发生过云主机宕机以及用户数据丢失的事故,使得原本就很突出用户信任的问题雪上加霜。除此之外,由于国家政策以及运营商之间恶性竞争等等原因,数据中心之间的互联互通问题非常突出。这使得公有云服务降级为通过物廉价美的VPS替代价格昂贵的主机租赁业务,无法承载大型互联网应用的压力,更无法成为培育新型应用和新型业务模式的温床。

对于私有云市场来说,最大的困难则在于降低客户的期望值。特别是在非IT行业,云计算的推广基本上是销售先行吹牛,技术跟进善后。这样造成的结果就是客户认为云计算几乎是无所不能的,就像前几年被神化的ERP一样,云计算俨然已经成了解决企业IT问题的新万金油。需要强调的是,云计算不是一种新的IT技术,而是一种新的IT模式。这种新的IT模式要求用户以新的方式来使用IT资源,譬如说应用程序需要考虑虚拟机的性能特性,需要从架构层面支持横向扩展,甚至是逐步具备“云觉知”的能力。如果客户仅仅是打算把历史遗留应用迁移到云平台上的话,可能不能够充分发挥云计算的优势,甚至是得到完全相反的效果。

(2)如何看待国际IaaS服务提供商进军中国市场?

亚马逊和微软的云服务进入中国,对本土IaaS服务提供商而言仅仅具有参考作用。在技术层面上,本土研发团队应该早就对亚马逊和微软的云服务有所了解,没有在其产品中提供与亚马逊和微软类似的功能应该是出于市场方面的考虑。在市场层面上,国外大企业或者由于法律和道德方面的双重制约而不具备与国内企业进行正面竞争的能力(例如搜索领域的谷歌),或者只能够在牺牲服务水准的前提下与国内企业进行竞争(例如电商领域的卓越亚马逊)。可以认为,亚马逊和微软的云服务在国内也许可以落地,但是其发展前景并不乐观。整体来说,中国的电信市场是一个保护性非常强的市场,这一点给国外厂商所带来的不便要远大于给本土厂商所带来的不便。对于本土IaaS服务提供商而言,不存在所谓时间窗口的问题,只有国际巨头什么时候黯然离场或者是沦落为本土厂商的问题。

(3)如何看待IaaS服务提供商的混合交付能力?

从现阶段的情况来看,国内大部分公有云产品基本上还停留在国外五年前的虚拟主机这个层次,尚不具备提供混合交付的能力。从技术层面来考虑,提供混合交付能力需要服务提供商支持一系列类似于AWS API的编程接口,目前大部分国内厂商都具备实现这些编程接口的能力。从市场层面来考虑,提供混合交付能力意味着用户能够在公有云和私有云之间进行切换,也意味着用户能够在不同的公有云之间进行切换。换句话说,提供混合交付能力意味着存在用户流失的风险,规模较大的服务提供商一般不会主动拓展这方面的能力,但是处于起步阶段的创业企业有可能会将此作为吸引用户的重要特性。

(4)如何看待企业内部私有IaaS服务?

Eucalyptus公司在中国的业务主要帮助企业规划和建设自己的私有云。我们的客户主要集中在政府、教育、制造、流通等行业。我们的客户对于披露与自身相关的信息存在一定的顾虑,因此我们无法提供与客户或者项目相关的信息。

通常来讲,传统行业的私有云客户不仅仅是为了整合服务器资源而部署IaaS。他们在弹性负载均衡、自动横向扩展等等方面的需求超过一般人的想象。要满足这方面的需求,往往意味着需要对现有应用进行改造,或者是将应用部署在PaaS之上。前面我们已经说过,不同的客户对IaaS有不同的期望值,部署IaaS之后的使用情况也不尽相同。

(5)如何看待IaaS领域开源与闭源多种解决方案群雄并起的局面?

竞争促进创新,多家厂商之间的竞争必然会给用户带来实惠,譬如更低的价格和更好的功能。目前云计算市场依然在持续发展之中,远远还没有达到成熟的程度。可以预见,未来这个领域的竞争还有越来越激烈。

关于闭源技术与开源技术之间的竞争,我在去年10月的博客文章《虚拟化、云计算、开放源代码及其他》中曾经有过专门的论述。我们今天所处的商业环境,与上个世纪80年代自由软件运动(Free Software Movement)刚刚兴起的时候已经有了很大不同。自1998年NetScape第一次提出开放源代码(Open Source)这个术语起,开放源代码就已经成为一种新的软件研发、推广与销售模式,而不是与商业软件相对立的替代品了。开放源代码作为一种新的商业模式,并不比传统的闭源模式具有更高的道德水准。同样,在解决工程问题的时候,客户所看重的往往是解决方案的性价比而不是道德水准。

关于开源项目的盈利问题,Marten Mickos(Eucalyptus的CEO)在担任MySQL公司CEO期间曾指出:“如果要在开源软件上取得成功,那么你需要服务于:(A)愿意花费时间来省钱的人;和(B)愿意花钱来节约时间的人。”在中国的商业环境中,IT公司(或者说互联网公司)通常是愿意花费时间来省钱的,而非IT公司(或者说传统行业)通常是愿意花钱来节约时间的。需要指出的是,中国的非IT公司往往不在乎软件是否开源,但是非常注重开源软件的可定制性。

怎样用好Eucalyptus?

发表时间:2013-02-24 10:24:46 评论:1

来自OpenNebula项目的Ignacio M. LIorente最近发表了一篇题为EUCALYPTUS, CLOUDSTACK, OPENSTACK AND OPENNEBULA: A TALE OF TWO CLOUD MODELS的博客文章,从应用场景的角度分析了Eucalyptus、CloudStack、OpenStack和OpenNebula这四个云管理平台的不同点。Ignacio认为VMWare vCloud和AWS分别代表了数据中心虚拟化和按需获取计算资源的两种典型的应用场景,如上所述四个开源云管理平台基本上都是以VMWare vCloud或者AWS为参考原型但是在实现细节上又与参考原型有所差别。Ignacio将开源云平台与其参考原型之间的差异之处称为灵活性(Flexibility),并以数据中心虚拟化、按需获取计算资源、低灵活性、高灵活性为四象限将如上所述四个开源云管理平台放到不同的位置(如下图所示)。Ignacio进一步指出这个图例并不是为了说明某个开源云平台优于其他开源云平台,而是为了说明不同的开源云管理平台适用于不同的客户需求以及不同的应用场景。以目前的状况而言,私有云市场规模很大,客户需求以及应用场景之间的差别很大,并不存在一个能够通吃所有应用场景的云管理平台。未来Eucalyptus、CloudStack、OpenStack和OpenNebula这四个云管理平台之间既有竞争也会有合作,并在这种竞争与合作并存的关系中找准适合自己的市场和客户。

CMP_Quadrant1

我基本上认同Ignacio M. LIorente的观点,就是不同的云管理平台适用于不同的客户需求以及不同的应用场景,并不存在一个能够通吃所有应用场景的云管理平台。出于同样的道理,Eucalyptus也有自己所擅长的应用场景,以及自己所不擅长的应用场景。作为Eucalyptus的员工,我自然希望各行各业的用户都使用Eucalyptus来搭建他们的私有云。但是为了能够充分发挥Eucalyptus的潜力,我建议所有潜在的客户首先了解一下Eucalyptus是什么(或者不是什么),Eucalyptus能做什么(或者不能做什么),以及应该如何规划、实施、使用基于Eucalyptus的私有云。

Eucalyptus是(不是)什么?

Eucalyptus是一个开放源代码的、与AWS高度兼容的云管理平台。以AWS为参考原型的各种云管理平台(例如OpenStack)都在某种程度上兼容AWS API,但是只有Eucalyptus将忠诚地兼容AWS API上升到企业战略与核心竞争力的层面。忠诚地兼容AWS API意味着客户能够在私有云环境中继续使用各种现有的与AWS API相兼容的工具、脚本和映像(AMI),能够在基于Eucalyptus的私有云和AWS公有云之间迁移负载和数据,或者是将基于Eucalyptus的私有云作为开发测试环境但是将AWS公有云作为生产环境。

根据Ignacio M. LIorente的云管理平台四象限图,VMWare vCloud和AWS分别代表了数据中心虚拟化和按需获取计算资源的两种典型的应用场景。以数据中心虚拟化为应用场景的云管理平台通常采取自下而上的架构设计,旨在解决数据中心的复杂度问题;以按需获取计算资源为应用场景的云管理平台通常采取自上而下的架构设计,旨在通过简单高效的接口提供计算资源。设计理念上的差异,决定了一个云管理平台很难同时具备VMWare vCloud和AWS的种种特性。Eucalyptus与AWS的高度兼容性决定了Eucalyptus不是VMWare vCloud或者VMWare vCenter的替代品。Eucalyptus和VMWare试图解决的是不同的问题,适用于不同的应用场景,因此具有不同的功能和特性。常常有用户将Eucalyptus和VMWare vCloud或者是VMWare vCenter进行功能或者特性对比。他们没有意识到Eucalyptus和VMWare vCloud或者是VMWare vCenter完全不是同一类型的软件,是没有办法直接进行功能或者特性对比的。

值得一提的是,Eucalyptus是一个开放源代码的产品,但是桉树公司并不为特定客户提供提供软件定制化服务。经常有一些潜在的客户问我们是否可以为其提供定制的版本。的确,作为一个开源项目的主要开发者,桉树公司具备为特定客户提供特定版本的能力,但是桉树公司通常不会这么做。为特定客户提供定制化版本意味着要对产品进行修改,也意味着使用定制版本的用户在升级到Eucalyptus后续版本时可能会遇到不可预知的风险。尽管在短期内定制化版本可能为客户解决了某些问题,但是从长期来看它所带来的问题要大于它所解决的问题。(Eucalyptus是一个开源项目,如果客户愿意并且具备相应的开发能力的话,当然也可以自己对Eucalyptus进行定制化。但是,用户自己对Eucalyptus进行定制化同样也会遇到升级的问题。)

Eucalyptus能(不能)做什么?

目前Eucalyptus的最新发行版本是3.2.1,它能够很好地用作开发测试环境,或者是用来支撑各种可扩展的Web服务。这两个应用场景的共同特点是大量地使用非持久性虚拟机实例(Ephemeral Instance),以及使用弹性块存储(EBS)来保存持久性数据。尽管Eucalyptus也支持从弹性块存储启动(Boot from EBS, BfEBS)的持久性虚拟机实例,但是由于架构设计方面的原因,在一个集群中存在大量BfEBS实例时整个集群的性能会有所下降。一个集群中BfEBS实例的数量越大,集群的性能恶化就越严重。因此,我们不建议客户在Eucalyptus上运行大量BfEBS实例。

Eucalyptus也不能很好地支持各种磁盘IO密集型应用,例如需要高速读写磁盘的数据库应用。严格地说,这不是Eucalyptus自身的问题,而是底层虚拟化技术的问题。目前各种虚拟化技术 - 例如VMWare ESX、Xen、KVM等等 - 已经较好地解决了CPU和内存的性能损失问题,但是在磁盘IO方面还是存在一定的性能损失。因此,我们不建议客户在虚拟机上运行各种磁盘IO密集型应用,包括负载较重的数据库应用。

在VMWare vCenter里面,系统管理员可以根据应用特征为应用定制网络参数。在Eucalyptus里面,如果系统管理员希望具备同样的能力,恐怕他很快就要失望了。为了以简单高效的途径提供计算资源,Eucalyptus尽可能自动化地管理整个私有云的网络配置,留给系统管理员自由发挥的空间不大。

Eucalyptus的硬件拓扑

接下来我们介绍几个典型的硬件拓扑结构,以帮助各位读者深入了解适合Eucalyptus的应用场景。在这些拓扑结构图中有一些缩写,含义如下:

CLC - 云控制器(Cloud Controller),Eucalyptus中的前端组件


Walrus - Eucalyptus中类似于Amazon S3的对象存储服务


CC - 集群控制器(Cluster Controller),管理一个Eucalyptus集群


SC - 存储控制器(Storage Controller),为一个Eucalyptus提供弹性块存储(EBS)服务


NC - 计算节点(Node Controller)


GE - 千兆网


10 GE - 万兆网


FC - 光纤通道


SAN - SAN存储


屏幕快照 2013-02-23 上午10.30.33

上面这个拓扑图展示的是一个只有一个计算集群的小型Euclayptus私有云。在这个私有云中,所有服务器都连接到一台千兆网交换机上,其中CLC和Walrus共同部署在同一台物理服务器上,CC和SC共同部署在同一台物理服务器上,SAN存储通过光纤通道连接到Walrus和SC服务器。如果为了进一步降低成本,SAN存储设备也可以替换成DAS存储设备。

在这样一种拓扑结构下,Eucalyptus使用开源的iSCSI TGT驱动提供EBS服务。大量的实践表明,开源的iSCSI TGT驱动存在稳定性问题,在存储压力比较大的情况下会莫名其妙的崩溃掉。(这个问题不仅仅在Eucalyptus中存在,在所有使用开源的iSCSI TGT驱动的应用中都会发生。)EBS服务存在稳定性问题,意味着处于运行状态的虚拟机可能会突然访问不到挂载的弹性块存储设备,也意味着从弹性块存储启动的BfEBS实例会突然崩溃。这样的拓扑结构部署在对数据持久性要求不高的开发测试环境中的问题不是很大,但是我们不建议客户在对数据持久性要求较高的生产环境中使用。

除了EBS的稳定性问题之外,这个拓扑结构的瓶颈在于SC与整个计算集群之间的连接是一个千兆网。整个计算集群访问EBS服务的吞吐量受到千兆网带宽的限制,有效吞吐量大概在100 MB/s左右。假设每个EBS实例所造成的平均压力为2 MB/s,一个计算集群能够同时支持40到50个EBS实例。假设每个EBS实例所造成的平均压力为4 MB/s,一个计算集群只能够同时支持20到25个EBS实例。需要指出的是,4 MB/s相当于一个质量中等的U盘(USB 2.0)的吞吐能力,其性能远远不及老式笔记本电脑中常用的7200转SATA硬盘,而2 MB/s更是一个性能非常低下的极端情况了。如果客户希望在这样一种拓扑结构下大量使用EBS服务,建议将SC通过万兆网连接到交换机。(现在很多接入交换机都带2~4个万兆接口了,这样的改造成本不大。)经过这个简单改造之后,EBS服务的有效吞吐量一下子增长了10倍,基本可以消除由于带宽限制所带来的性能瓶颈。

屏幕快照 2013-02-23 下午3.27.31

在生产环境中,我们建议客户使用基于IP SAN的存储设备来提供EBS服务。上面这个拓扑图展示的是一个可用于生产环境的Euclayptus私有云。在这个私有云中,所有Eucalyptus前端组件(CLC、Walrus、CC、SC)都部署到独立的物理服务器上,所有可能有大流量的组件(IP SAN、Walrus、CC、SC)都通过万兆网连接到私有云。目前Eucalyptus支持EMC、EqualLogic、NetApp等多个厂商的IP SAN设备,在这种拓扑结构下Eucalyptus使用官方支持的iSCSI驱动EBS服务,其稳定性和可靠性与开源的iSCSI TGT相比都有大幅度的提高。

即使如此,我们依然不建议客户在Eucalyptus上运行大量从弹性块存储启动的BfEBS实例。Eucalyptus的设计初衷是鼓励用户尽可能多地使用非持久性虚拟机实例,在这种情况下虚拟机磁盘映像被存储在计算节点上,虚拟机内部的磁盘IO不会对私有云的网络造成压力,运行在不同计算节点上的虚拟机基本上不会互相影响。由于从弹性块存储启动的虚拟机实例是持久性实例,需要频繁地与存储设备进行交互,对网络带宽的压力是很大的。因此,我们对客户的一般性建议是:(1)尽可能使用非持久性虚拟机实例;(2)在必须使用BfEBS实例的情况下,尽可能将操作系统盘做得比较小,例如10 GB;(3)将操作系统盘与数据存储盘分离,也就是首先启动一个尺寸较小的BfEBS实例,然后挂载一个尺寸较大的EBS卷用于存储持久性数据。

屏幕快照 2013-02-23 下午3.59.12

上面这个拓扑结构可以进一步加以改造,将存储网与业务网分离。这样存储流量就不会对业务流量造成影响,对私有云各个组件的健康监控也可以在存储网上进行。

屏幕快照 2013-02-23 下午3.37.45

当一个计算集群的容量达到极限的时候,可以往私有云中增加新的计算集群进行扩容,就形成了上面这个拓扑结构。

Eucalyptus的使用建议

前面我们已经说过,不同的云管理平台有不同的设计理念,适用于不同的应用场景。有些潜在的客户认为只要投资买了X硬件按照Y拓扑安装好Z软件就可以应付一切类型的应用,这种期望基本上是不切实际的。类似于AWS的云计算更多地是一种新的管理和分配计算资源的理念,而不是一种新的技术。使用类似于AWS的云计算服务要求用户了解一些基本的概念,并且通常需要对应用做一些修改才能够达到最佳的效果。我们给Eucalyptus客户提供的一般性建议包括:

(1)尽可能使用非持久性虚拟机实例;


(2)当必须使用BfEBS实例时,尽可能缩小磁盘映像的尺寸;


(3)使用EBS卷保存持久性数据,并且将操作系统盘和数据存储盘分离;


(4)不要在虚拟机上运行磁盘IO密集型应用;


(5)不要对虚拟机进行纵向扩展,要通过横向扩展提高应用的处理能力;


(6)通过负载均衡实现应用的高可用性;


(7)避免虚拟机级别的在线迁移,当物理服务器需要进行维护时,使用Eucalyptus的维护模式。


屏幕快照 2013-02-23 下午9.35.30

如上图所示,我们建议用户将同一个应用部署到多个计算集群上。

屏幕快照 2013-02-23 下午9.38.08

当一个计算集群发生失效的时候,应用依然是可用的,但是其处理能力降低了。

屏幕快照 2013-02-23 下午9.39.45

对于有计划的系统维护,可以先将应用的负载迁移到不需要进行维护的计算集群上,然后对处于空闲状态的计算集群进行维护。这样既保证了应用的可用性,又保证了应用的处理能力。

需要说明的是,上面我们所提到的“负载迁移”并不是指将一个处于运行状态的虚拟机从一个计算集群动态迁移到另外一个计算集群,而是在另外一个计算集群中基于同样的EMI创建一个新的虚拟机实例,并通过负载均衡设置将应用的负载重定向到新的虚拟机实例。到目前为止,Eucalyptus并不提供VM级别的动态迁移(类似于VMWare vMotion)的功能。对于类似于AWS的云服务来说,最终用户与底层的基础设施是通过多个层次的抽象措施彻底隔离的。对于最终用户来说,他所看到的计算资源只有自己的虚拟机。至于他的虚拟机运行在什么样的物理服务器上以及该服务器上的负载情况,最终用户应该是一无所知的。因此,提供虚拟机级别的在线迁移功能,其实质是违反了通过抽象措施将最终用户与基础设施进行隔离的原则。

在Eucalyptus 3.3中即将提供一个称为维护模式的功能,允许系统管理员将某个计算集群中的特定物理服务器标志为维护状态。这时系统就会自动地将指定物理服务器上的所有虚拟机实例迁移到同一计算集群中的其他物理服务器上。这个功能允许系统管理员对计算集群中的特定物理服务器进行维护,同时又不必清空该计算集群中的所有负载。

屏幕快照 2013-02-23 下午9.44.27

当应用的负载上升时,通过横向扩展提升应用的处理能力。

屏幕快照 2013-02-23 下午9.47.04

在Eucalyptus 3.3中即将提供的实例监控(Monitoring)、弹性负载均衡(Elastic Load Balancing,ELB)、自动扩展(Auto Scaling,AS)功能,会使得应用的横向扩展更加容易。简单地说,实例监控功能允许用户对自己的虚拟机实例进行监控,监控对象包括虚拟机实例的CPU、内存、磁盘IO、网络IO等等;自动扩展功能允许用户设定一些简单的触发参数,并在监控参数达到触发参数要求的时候自动地创建或者是销毁虚拟机实例;弹性负载均衡功能则负责修改与应用相关的负载均衡策略,自动地添加新创建的虚拟机实例或者是移除旧的虚拟机实例。

屏幕快照 2013-02-23 下午9.55.43

综上所述,可以得到我们向客户所建议的一般性的应用架构设计。可以看出,这个架构设计与我们所熟悉的Web应用架构基本上是一致的。一个典型的Web应用,可能仅仅需要进行少量的改动(如果应用在设计之初就充分考虑到横向扩展的话,甚至是完全不需要改动),就可以充分利用Eucalyptus私有云的种种特性。

除此之外,在弹性块存储EBS服务的使用方面,建议各位感兴趣的用户读一读Why EBS was a bad idea这篇文章。尽管我并非完全同意文章中的观点,但是作者的许多观察和思考是值得云管理员和应用开发者深入思考的。

Eucalyptus的容量规划

现在各位读者已经大致了解了Eucalyptus是(不是)什么,能(不能)做什么,以及应该如何使用基于Eucalyptus的私有云。如果您觉得上面这些描述与您的应用场景相符合,并希望使用Eucalyptus来搭建您的私有云的话,我们建议您在动手之前做一些简单的容量规划。容量规划的基本方法,是将可预见的负载与物理资源进行映射,以确保私有云的容量能够承载应用和业务所带来的压力。一般来说,需要进行考察的参数包括CPU(物理核心数量)、内存、网络(吞吐量)、存储(吞吐量和IOPS)。

对于CPU和内存来说,可以通过标准化的VM产品类型(VM Types)进行简单的换算,其结果可以表达为特定的硬件设备可以支撑多少个某个类型的虚拟机实例。

对于网络来说,往往需要对即将运行在私有云上的应用的网络行为进行采样,获取其真实的流量特征,并在此基础上与私有云的网络配置进行对比。

对于存储来说,一个集群的容量往往受限于IOPS而不是吞吐量。上个月Eucalyptus公司的联合创始人之一Graziano Obertelli写了一篇题为Will My Internet Be Faster的博客文章,用较长的篇幅讨论了如何基于IOPS进行容量规划的问题。我将Graziano Obertelli的博客文章翻译为《我的网络会变得更快吗?》,可供参考。

服务等级协议

经常有客户问我们:“用了Eucalyptus之后,是不是就可以保证我的云主机不会宕机了呢?”坦率地说,不仅Eucalyptus不能,其他的云管理平台也不能。

宕机时间,或者说不宕机时间,是数据中心领域的一个奇妙参数,通常被称为服务等级协议(Service Level Agreement,SLA)。服务等级协议是服务合同的一部分,通常用年度不宕机时间百分比(Annual Uptime Percentage)来表示。很显然,根据年度不宕机时间百分比,可以计算出一年内允许宕机的总时间。常见的SLA条款包括99%(一年可以宕机3.65天,也就是87.6小时),99.9%(一年可以宕机8.8小时),99.99%(一年可以宕机53分钟)。Linode的SLA条款为99.9%(一年可以宕机8.8小时),AWS的SLA条款为99.95%(一年可以宕机4.4小时),阿里云的SLA条款为99.9%(一年可以宕机8.8小时),而盛大云则没有任何关于SLA的承诺。通常来说,更高的SLA条款意味这更高的硬件、软件和人力资源投入。到目前为止,尚未出现能够保障100% SLA条款的产品和技术。

其他

成功地运用云计算,需要硬件与拓扑、软件架构、应用场景、容量规划、服务等级协议等等多个方面的准备。我们在前面已经说过,类似于AWS的云计算更多地是一种新的管理和分配计算资源的理念,而不是一种新的技术。使用类似于AWS的云计算服务要求用户了解一些基本的概念,并且通常需要对应用做一些修改才能够达到最佳的效果。成功的云计算要求服务提供商和服务使用者都要为云计算做好准备。如果你只是想延用老的方式来使用云计算,基本上很难获得成功。

 

Eucalyptus私有云 - 从规划到交付

发表时间:2013-02-18 14:45:48 评论:2

我们意识到只有少数大规模的软件部署(包括Eucalyptus和其他软件)是完全按照计划进行的。这个文档简单描述了基于Eucalyptus部署一个应用于生产环境的私有云的关键环节。这个文档的目的是帮助帮助桉树团队与客户方面进行有效沟通,使得部署计划能够按计划进行,以量化的方式评估并记录项目进度,最终向客户交付基于Eucalyptus的私有云。我们并不认为所有的部署都能够精确地按照本文档所描述的步骤 进行。这个文档的目的是为一个新的项目提供一个指导性的框架,帮助桉树团队与客户方面进行有效沟通,制订合理的部署规划,并且按照部署计划付诸实施。

triangle

 

我们将Eucalyptus私有云的规划和实施分为多个环节,其设计原则是上一个环节要为下一个环节的安全实施打好基础。在上面这张图例中,我们将各个环节进行分组,并用不同的层次来表示这些环节在私有云的规划和实施当中的作用。

一个项目可以由桉树的团队来实施,也可以由客户的团队来实施,也可以由桉树的团队与客户的团队来共同实施。无论如何,部署实施的过程都应该按照一定的步骤进行。如果各个步骤的顺序混乱,或者同时进行多个步骤,就会导致项目无法顺利实施。

对于大部分项目来说,桉树团队会参与部署实施的所有环节,只是在不同环节所起的作用有所不同。如果桉树团队没有参与某些环节(具有充分经验或者具有强烈学习意愿的用户可能愿意自己完成某些环节),桉树团队至少应该与客户保持沟通,及时获得与项目相关的更新信息,向客户提出必要的建议,并且在客户需要的情况下提供技术支持。

如下是我们列出的部署实施一个Eucalyptus私有云的关键环节。此后我们会对每一个环节的主要任务、检查参数、以及刹车信号进行详细描述。

  • 步骤一:场景分析

  • 步骤二:部署规划

  • 步骤三:物理部署

  • 步骤四:基础设施的配置与管理

  • 步骤五:基础设施的测试

  • 步骤六:Eucalyptus的安装与配置

  • 步骤七:Eucalyptus的测试

  • 步骤八:Eucalyptus的交付

  • 步骤九:Eucalyptus的维护


步骤一:应用场景分析,基础设施分析,项目实施计划


在这个环节中,我们需要了解具体的应用场景、可以使用的物理资源和预算资源、项目实施计划、以及参与项目规划和实施的人物和角色。

主要任务:

  • 通过与客户进行讨论,详细了解与项目相关的一切信息,包括具体的应用场景、可以使用的物理资源和预算资源(以及资源到位情况)、项目实施计划、以及对项目效果的期望值。

  • 确定客户方面参与项目规划和实施的团队(以及团队成员)、具体角色、具体责任。

  • 确定桉树方面在本项目规划和实施中所扮演的角色以及担负的责任。

  • 确保客户已经向桉树购买恰当的技术咨询或者技术支持服务。


检查参数:

  • 获取完整的客户以及项目资料。

  • 客户对项目整体情况和实施计划有充分的了解。

  • 客户对桉树方面所扮演的角色和担负的责任有充分的了解。

  • 桉树已经确定参与本项目的具体人员。


刹车信号:

  • 没有完整的客户资料或者项目资料。

  • 客户尚未购买恰当的技术咨询或者技术支持服务。

  • 项目资料表明客户的应用场景、设施资源、预算资源、项目团队可能会导致项目失败。


步骤二:部署规划


在这个环节中,我们的目标是细化具体的项目目标,通过与客户讨论达成一个合理的项目实施计划,在此基础上设定关键的时间点。在这里我们以在上一个环节中所获得的信息作为讨论的基础,开始与客户讨论项目实施计划本身。在这个过程中,我们需要尽可能利用现有的、已经经过验证的、与客户的应用场景相匹配的参考构架作为讨论的基础。

主要任务:

  • 与客户讨论并制订部署计划。

  • 制订网络拓扑图、Eucalyptus部署拓扑图、存储部署拓扑图。

  • 制订与客户网络环境密切相关的Eucalyptus配置参数,包括网络名称、网段配置、网卡名称、VLAN范围、存储位置、数据路径等等。

  • 以在上一个环节中所获得的信息作为讨论的基础,判断特定部署配置所能够提供的能力或者容量,并与客户进行讨论。

  • 制订详细的项目实施计划,包括关键的时间点。

  • 制订详细的测试方案。

  • 更新客户资料与项目资料。


检查参数:

  • 客户完全理解项目对物理硬件的要求。

  • 制订并讨论通过相关部署图表。

  • 制订并讨论通过详细项目实施计划,包括关键的时间点。


刹车信号:

  • 未完成相关部署图表。

  • 项目实施计划不合理。

  • 部署规划与项目资料存在严重差异。

  • 项目资料表明客户的应用场景、设施资源、预算资源、项目团队可能会导致项目失败。


步骤三:购买物理资源,部署基础设施


在这个环节中,我们的目标是确保部署规划中所描述的所有基础设施资源已经到位以及正确安装。我们需要确保桉树不在硬件设施尚未完全d 情况下进行部分部署,因此部分部署往往需要对部署规划中所制订的拓扑结构进行修改,并且会给将来实施完整部署带来很大困难。

主要任务:

  • 与客户进行充分沟通,维护并更新相关部署图表。


检查参数:

  • 所有必须的硬件设施已经就位。

  • 电源、网络等等基础设施已经就绪,可以进入配置环节。

  • 明确列出可以配置或者重新配置Eucalyptus所需资源的人员(或者角色)。


刹车信号:

  • 部分资源尚未到位(例如,所有的东西都准备好了但是还差一个SAN存储)。


步骤四:基础设施的配置和管理


在这个环节中,我们所需要的物理资源已经安装完毕以及正常运行。我们需要确保用于Eucalyptus的相关资源处于有效管理的状态、能够提供稳定的服务、并且不会被其他项目挪作他用。此外,我们还需要确保我们已经获得登陆进入各个系统所需要的身份认证信息。

主要任务:

  • 与客户讨论基础设施的配置管理以及监控方案,尤其是这些方案如何与Eucalyptus有效整合。


检查参数:

  • 物理设施已经配置完毕(或者是提供了必要的配置管理工具)。

  • 不属于Eucalyputus的各项服务运行正常(例如物理资源的监控和报警)。

  • 具备访问物理设施的必要权限。

  • 在征得客户同意的前提下,具备从远程访问物理设施的能力(或者是客户已经明确拒绝提供该能力)。


刹车信号:

  • 如果上述检查参数当中有任何一个没有达到要求,均不可以进入后续步骤。


步骤五:基础设施的测试


在这个环节中,我们通过模拟一些影响基础设施正常运转的事件(故障)来对即将运行Eucalyptus的物理设施进行测试。

主要任务:

  • 通过检查、测试、讨论来确定物理设施的健康状况。


检查参数:

  • 测试物理设施的配置管理和监控系统。

  • 确认物理设施的升级维护窗口(或者决定在升级维护期间暂时停用)。

  • 完成模拟故障测试(掉电测试、压力测试、断网测试)。

  • 确认用于运行Eucalyptus的物理设施(从网卡到交换机的物理连接,空闲的VLAN、MultiCast环境、防火墙配置、物理资源的性能测试)。


刹车信号:

  • 如果上述检查参数当中有任何一个没有达到要求,均不可以进入后续步骤。


步骤六:Eucalyptus的安装


在这个环节中,我们在一个稳定的、经过测试的环境上安装Eucalyptus软件。

主要任务:

  • 基于事先与客户制订好的部署规划和拓扑结构安装Eucalyptus的各个组件,或者

  • 为客户提供必要的指导,让客户根据事先制订好的部署规划和拓扑结构安装Eucalyptus的各个组件。


检查参数:

  • Eucalyptus的安装情况与事先制订好的部署规划和拓扑结构完全相符。

  • Eucalyptus的虚拟机、网络、EBS卷功能正常(创建、描述、销毁)。

  • 创建必要的用户帐号,保存必要的登陆凭据(credentials)。

  • 将配置管理以及监控系统与Eucalyptus集成(能够监控Eucalyptus的各个组件以及虚拟机)。

  • 将用户的工作流管理工具与Eucalyptus集成。

  • 完成制订Eucalyptus备份方案,必要的工具已经安装完毕并且通过测试。


刹车信号:

  • 如果上述检查参数当中有任何一个没有达到要求,均不可以进入后续步骤。


步骤七:Eucalyptus的测试


在这个环节中,我们通过模拟负载或者真正负载对Eucalyptus进行压力测试,验证我们所规划并部署的物理架构资源以及Eucalyptus部署方案是否能够满足负载要求。

主要任务:

  • 根据事先制订好的测试计划对Eucalyptus的各个组件进行性能测试,或者

  • 为客户提供必要的指导,让客户根据事先制订好的测试计划对Eucalyptus的各个组件进行性能测试。


检查参数:

  • 至少在Eucalyptus上运行一部分真实的应用,并对其负载进行采样。

  • 测试云平台可以支撑虚拟机、EBS卷、Walrus、网络的最大规模。

  • 完成模拟故障测试(掉电测试、系统重启、网络重启)。


刹车信号:

  • 如果上述检查参数当中有任何一个没有达到要求,均不可以进入后续步骤。


步骤八:Eucalyptus的交付


通过严格的测试之后,我们需要向客户交付可以用于生产环境的Eucalyptus云平台,并与客户共同制订为生产环境提供维护和支持的相关程序。

主要任务:

  • 与客户讨论并制订长期维护程序和维护计划。

  • 回顾部署实施期间发生的任何与部署规划不相符合的配置、临时性方案、替代方案、警告信息、特别的措施,并更新客户资料与项目资料。


检查参数:

  • 确定维护窗口,规划第一个维护窗口。

  • 制订未来的升级计划和升级程序。

  • 制订技术支持的程序(响应事件、远程支持、越级程序)。

  • 制订基本的除错规范。

  • 制订从备份恢复规范。

  • 客户已经具备独立管理私有云的能力,但是在必要的情况下还需要从Eucalyptus获得技术支持,需要与客户签订必要的服务协议。

  • 更新客户资料与项目资料,记录项目投入生产的细节。


步骤九:Eucalyptus的维护


最后,我们需要为已经部署的Eucalyptus提供不间断的维护和支持,直到所部署的云平台已经被客户弃用为止。

主要任务:

  • 在Eucalyptus发生问题的情况下,为客户提供必要的技术支持。

  • 产品升级、新增功能、安全补丁、其他技术补丁。

  • 与客户保持沟通,为后续研发工作收集必要的反馈信息(产品缺陷、新增功能)。

打油一首

发表时间:2013-02-03 16:30:28 评论:0

某日,在微博上“遇见”某文中师妹,得打油诗一首。

文昌河畔浪荡子,
紫贝山阳戏娇娘。
微博相见不相识,
阿飞亦是文中郎。

大数据、小程序、云计算、复活节兔子

发表时间:2013-01-27 20:49:20 评论:2

最近,我看了一份关于各个公司使用公有云服务进行大数据分析所产生的费用方面的分析报告。尽管费用方面的数据很有意思,不过我更感兴趣的是这份报告关于在大数据分析当中如何使用云计算资源方面的描述。譬如说,从这份报告第11页的内容看来,在用于大数据分析的虚拟机实例当中,89%的实例属于小型虚拟机实例。换句话说,用来进行大数据分析的程序,其代码规模是相对较小的。

毫无疑问,管理大规模数据是一件很困难的事情。当数据的规模越来越大时,实时性、完整性、私密性就越来越难以实现。别的不说,光是确认什么时候可以安全地删除一份数据就够让人头疼的。

但是,如果说大数据就是“那个答案”的话,我们需要一些小程序来提出那个问题。

由此我们引出大数据和基础设施服务(IaaS)之间的关系。我们已经积累了一些在Eucalyptus上进行大数据分析(例如Hadoop和Cassandra等等)的用户,也经常有人问我们这些用户为什么要这样做。这些技术在裸机上运行起来性能很好,在公有云环境中让它们运行在虚拟机之上通常是因为没有别的选择。那么,在一个企业自有的基础设施中,为什么系统管理员或者数据分析者会选择使用在Eucalyptus(或者其他云管理平台)之上进行大数据分析呢?

在这里我试图用小量程序来回答这个问题(也许可以总结为“小程序”)。几年前,我和一位同事在UCSB共同开设了一门关于隐写术(Steganography)课程 - 简单地说,就是怎样将一条信息藏在另外一条信息中。

很多大数据分析应用 - 例如Web分析 - 看起来与隐写术具有相同的特征。这个特征就是通过一些“解密算法”(通常是统计性质的)在大量数据中寻找隐藏的“信息”。

换句话说,大数据分析就像是用机械化工具寻找复活节彩蛋。

更重要的是,尽管数据的规模很大,并且经常随着时间发生变化,但是用来进行数据分析的程序规模相对较小,并且几乎没有什么变化。

前段时间,Netflix公司的Adrian Cockcroft (@adrianco) 到我们Eucalyptus公司来参观,并且做了一场关于NetflixOSS的讲座。Netflix所拥有的内容显然能够被纳入大数据的范畴,不过Andrian花了75分钟当中的一大半来给我们讲他们的程序。

通常来说,需要应用到大数据分析的问题,有点类似于海底捞针。作为一个缩微版的例子,我请我们公司的首席执行官Marten Mickos (@martenmickos)给我们透露一点他不愿公开披露的秘诀,然后我通过隐写术将他的秘诀隐藏在下面这张图片中。

Marten PNG

Marten在多个领域都享有卓越的声望,很多人将他的教诲奉为至宝。在这里我请他送给我们一个复活节彩蛋。

用来破译Marten这个复活节彩蛋的相关图片、程序、以及编译脚本可以从这里下载。在Linux或者OS X操作系统上,可以用下面这些命令来破译Marten的密码:

 tar -xzf sw.tgz ; make all ; ./extract-message


这时候当前目录下会多出一个名为martens-message.png的图片文件。打开这个图片文件,就可以看到解密后的信息。

你试过了吗?当然没有。

如果你读到这里的话,我打赌你根本就没有打算去运行上面列出的几个命令。这可能是因为你实在太忙了。并且,即使是你有很强的好奇心,你也可能是在使用一台不具备计算能力的设备(智能手机或者平板电脑)或者是在Windows操作系统上看这篇文章。我已经在Linux和OS X上测试过这段程序,遗憾的是我没有本事将它移植到Windows或者是其他平台上(从这些代码可以看出,我的编程技巧实在是比较古老)。

理由一:可移植性 — 这是在基础设施服务上进行大数据分析的第一个重要理由。通常来说,大数据技术的侧重点在于大数据,而不是程序的可移植性。实现代码的平台无关性本来就比较困难,要保证不同平台上的性能(性能是大数据分析中的一个关键性要求)就更加困难了。

基础设施服务使得运行一个应用所必需的运行环境成为这个应用自身的一部分。

通常来说,应用程序的复杂度越高,其功能与性能和运行环境之间的相关度也越高。基础设施服务保证了应用程序能够运行在为其量身定做的运行环境上。

你试过了吗?当然试过。

如果你是一个比较强悍的工程师,你可能已经在Linux或者OS X上试过上面这些命令了。你成功地找到复活节彩蛋了吗?在OS X上,你需要安装Xcode才能够使用gccmake来编译这个程序。尽管这两个工具在Linux上的非常重要,但是有一些Linux发行版并没有缺省地安装它们。因此,就算是你在Linux上尝试运行上面这些命令,你也有可能没有成功。也就是说

理由二:依赖关系 - 部署大数据分析应用通常涉及到一大堆软件依赖关系。在这个例子中,我们的程序既依赖于编译环境,也依赖于运行环境(下面我们会详细解释)。基础设施服务使得用户可以通过编程管理和保障程序所具有的依赖关系。

在我们的程序中调用了一个名为libpng的开源的软件库。这个软件库是用来对PNG文件进行操作的,当前的版本是1.5.x。我敢说,libpng是一个管理得很好的开源项目,它的1.5.x版本向下兼容1.4.x版本,由此可见libpng有一个充满活力的用户社区。

不过,我这段隐写术程序是在2006年写的,当时用到的libpng的版本是1.2.50。我不知道当前最新版本的libpng是否与其兼容,或者更早版本的libpng是否与其兼容。Ubuntu 10.04 (Lucid) 里面自带的libpng12-dev似乎能够编译和运行我的程序。但是我手头有一份2006年保存下来的libpng,它和我的程序配合得很好。因此我不打算深究是否可以升级(或者如何升级)我的程序以便更好地利用这一依赖关系,或者最新版本的libpng的向后兼容性是否好到可以完美支持我的古老程序。升级七年以前写的古老程序而没有增加任何新的功能,这可不是我愿意去干的事情。由于我的懒惰,可以得出

理由三: 遗留应用 - 当程序的年龄与日俱增时,基础设施服务所带来的好处也逐渐凸现。尽管数据随时都在发生变化,但是程序的生命周期通常远大于数据的生命周期(少数特殊场景除外)。在大数据应用场景中,基础设施服务使得用户能够将数据的生命周期与程序的生命周期快速匹配起来。

必需指出,libpng是一个维护得非常好的项目。在它们的下载页面还提供了存档的1.2.50版本,也就是我七年前使用的那个版本。如果你决心要完成这个练习,你可能需要下载一份libpng的古老版本,并且修改我所提供的Makefile以便它能够在恰当的位置找到恰当版本的libpng。这时候你最好小心一点,可不要让旧版本的libpng和预装在你机器上的新版本发生冲突。

或者,你可以在桉树社区云服务上免费注册一个帐号,启动一个虚拟机实例,然后将这些程序丢到虚拟机实例里。也就是说

理由四:沙箱环境 - 基础设施服务给大数据带来的最后一个好处是为互不兼容的代码提供沙箱环境。同一份数据可能需要经由不同的程序进行分析,这些不同的程序可能要求互相冲突的依赖关系。在这个例子中,对一个老旧版本的libpng的要求可能会造成依赖关系的冲突。当程序的规模增长时,类似的版本冲突就会越来越频繁。基础设施服务允许具有不同依赖关系的程序和平共处,能够对同一份数据进行处理。

总结

有些时候人们认为大数据和类似于基础设施服务的云计算是相互联系的,有些时候却又认为它们是互不相关的。我个人的观点是基础设施服务通过程序控制为软件工程以及运行环境所提供的支持会使得大数据相关的技术和应用越来越普及。大数据会是那个答案,但是我们都需要一些小代码来提出问题。毕竟,只有复活节兔子才知道彩蛋到底藏在哪里。

译者注:作者Rich Wolski是Eucalyptus的联合创始人与首席技术官,也是UCSB计算机系的著名教授。他在大数据和云计算方面有丰富的研究,其观点总是令人耳目一新。译者在OS X 10.8.2和Ubuntu 12.04.1上都编译运行过Rich所提供的程序。在OS X上让这个程序跑起来的确需要经过一些周折,但是在Ubuntu上几乎不需要做任何额外的工作,可以认为这是这个例子的一个不足之处。

原文链接:

http://www.eucalyptus.com/blog/2013/01/23/big-data-and-little-code-or-why-iaas-easter-bunny

球球的故事

发表时间:2013-01-25 11:44:17 评论:0

(1)

婉清爱听故事。我们给她买了一个放CD的机器,还有大堆的CD,她就一天到晚地呆在屋里听。球球现在开始听得懂话了,也经常凑在姐姐身边一起听。据婉清说,球球不但听得懂,还会一边听一边思考。

听到大禹治水三过家门而不入的故事时,球球问:“难道他不累吗?他不困吗?他不需要妈妈陪吗?”

(2)

我们家的大黑狗在院子里吃草,球球就问姐姐:“狗狗在吃草呢,难道它是羊吗?”

 

使用Nagios监控Eucalyptus云平台

发表时间:2013-01-24 21:50:22 评论:0

简介

和运行在数据中心里的任何生产系统一样,用于生产环境的Eucalyptus私有云需要一个健康监测系统。健康监测系统的功能是使得系统管理员能够及时了解资源使用状况,未来的发展趋势,并在资源池(服务器、网络、存储等等)出现问题的情况下提供可靠的真短信息。我们在我们自己的生产系统当中使用Nagios来对Eucalyptus云平台进行监控。如果您所部署的Eucalyptus云平台还没有任何监控系统,我们推荐您也使用Nagios来对Eucalyptus云平台进行监控。

Nagios是一个开放源代码的IT资源监控系统,可以从Nagios的网站或者其他开源软件仓库获得。在Nagios的网站上对Nagios的介绍如下:

"Nagios是一个强大的监控系统。它使得企业能够及时发现并解决IT设施中存在的问题,以免关键性业务流程受到影响。(Nagios is a powerful monitoring system that enables organizations to identify and resolve IT infrastructure problems before they affect critical business processes.)"

在这个文档中,我们通过一些简单的步骤来介绍如何利用Nagios来监控一个运行在CentOS或者RHEL 6上的Eucalyptus系统。

步骤一:安装配置Eucalyptus

在这个文档中,我们将跳过如何安装配置Eucalyptus。如果您需要帮助的话,您可以参考《在CentOS 6.3上安装Eucalyptus》这个教程。

步骤二:Nagios快速安装

如果你是按照Eucalyptus的官方文档通过软件仓库安装了Eucalyptus的话,我们已经为您添加了安装Nagios所需要的软件仓库。在所有运行Eucalyptus组件的服务器上,用如下命令安装Nagios NRPE插件:
# yum install nrpe nagios-plugins-all

然后,在一台我们称为“Nagios前端服务器”的主机上安装Nagios软件包:
# yum install nagios

Nagios的安装就这么简单。

步骤三:Nagios简单配置

在将Nagios投入使用之前,我们需要进行一些简单的配置。需要说明的是,在如下教程中,我们假定在整个系统中只有一台Nagios前端服务器。也就是说,所有被监控主机上的监控配置都是一致的,这样我们就不需要为每台主机维护一个专有的配置文件。

在所有被监控主机上进行如下设置,允许Nagios前端服务器与被监控主机上的NRPE守护进程进行交互:

  • 编辑文件 /etc/nagios/nrpe.cfg

  • 将 'allowed_hosts=127.0.0.1' 修改为 'allowed_hosts=<ip address of your nagios server>'

  • 在该配置文件的末尾,修改如下监控参数




command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
command[check_procs]=/usr/lib64/nagios/plugins/check_procs -w 250 -c 400 -s RSZDT
command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w 20% -c 10%



  • 使用命令 'service nrpe start' 启动NRPE守护进程


接下来,在Nagios前端服务器上进行如下设置以启用NRPE,以及允许Nagios从一个本地文件夹中读取远程被监控节点上的配置文件,这些配置文件提供了每一个Eucalyptus节点的配置信息:

  • 编辑文件 /etc/nagios/nagios.cfg

  • 取消这一行前面的注释符号 'cfg_dir=/etc/nagios/servers' ,然后保存文件

  • 创建目录 /etc/nagios/servers

  • 编辑文件 /etc/nagios/objects/commands.cfg ,在文件的末尾添加如下内容,然后保存文件




define command { command_name check_nrpe command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }



  •  运行命令 'htpasswd -bc /etc/nagios/passwd nagiosadmin nagios' 将Nagios管理员的密码设置为 'nagios'(建议您选择一个您自己定义的密码)


接下来,在Nagios前端服务器上为每一个Eucalyptus节点创建一个配置文件,这个配置文件定义了被监控主机的入口(end-point)以及需要监测的参数(服务)。所有被监控主机的的配置文件都需要存放在 /etc/nagios/servers 这个目录下 。下面是一个配置文件的例子,需要注意的是您需要将'host'部分的address设置为被监控节点的IP地址。


###############################################################################
###############################################################################
#
# HOST DEFINITION
#
###############################################################################
###############################################################################
# Define a host for the local machine
define host{
use linux-server
host_name my-cloud-controller
alias Cloud Controller
address 10.102.1.24
check_interval 1
}
###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################
# Define a service to "ping" the local machine
define service{
use local-service ; Name of service template to use
host_name my-cloud-controller
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
# Define a service to check the disk space of the root partition
# on the local machine. Warning if < 20% free, critical if
# < 10% free space on partition.
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description Root Partition
check_command check_nrpe!check_disk
}
# Define a service to check the number of currently logged in
# users on the local machine. Warning if > 20 users, critical
# if > 50 users.
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description Current Users
check_command check_nrpe!check_users
}
# Define a service to check the number of currently running procs
# on the local machine. Warning if > 250 processes, critical if
# > 400 users.
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description Total Processes
check_command check_nrpe!check_procs
}
# Define a service to check the load on the local machine.
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description Current Load
check_command check_nrpe!check_load
}
# Define a service to check the swap usage the local machine.
# Critical if less than 10% of swap is free, warning if less than 20% is free
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description Swap Usage
check_command check_nrpe!check_swap
}
# Define a service to check SSH on the local machine.
# Disable notifications for this service by default, as not all users may have SSH enabled.
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description SSH
check_command check_ssh
notifications_enabled 0
}


将所有被监控节点的配置文件都创建完毕后,使用如下命令在Nagios前端服务器上启动Nagios:


service httpd start
service nagios start


现在Nagios应该处于运行状态并为您的系统提供基本的监测服务了。 您可以通过浏览器访问Nagios的用户界面(默认的URL地址为http://ip_address/nagios),登录时使用的用户名是'nagiosadmin',密码是'nagios'(或者您刚刚设定的其他密码)。为了验证基本的监控功能已经正常运转,我们可以看一下'hosts'和'services'部分是否显示了我们在配置文件中所定义的所有主机和服务。当我们刚刚启动Nagios的时候,Nagios需要几分钟的时间从被监控主机上提取必要的信息,大概五分钟之后我们可以看到服务的状态从'PENDING'变更为'OK'(或者是'WARNING'或者'CRITICAL')。

步骤四:Eucalyptus相关配置


到目前为止,我们已经有了一个可以用来管理和维护Eucalyptus部署环境的监控工具。我们能够及时得知网络的通畅状况(up / down),磁盘的使用状况(free / full),负载的具体状况(low / high)等等在大多数情况下都需要了解的信息。接下来,我们添加一些与Eucalyptus相关的监测参数,这些监测参数使用Nagios自带的日志文件监测程序(logfile checker)来对Eucalyptus服务进行基本的健康状况监控。

  • 编辑文件 /etc/nagios/nrpe.cfg

  • 增加如下监控参数的定义





# Eucalyptus checks
command[check_cclog]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/cc.log -O /tmp/nagioscc.log -q "ERROR|FATAL"
command[check_ccfaults]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/cc-fault.log -O /dev/null -q "ERR-"
command[check_nclog]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/nc.log -O /tmp/nagiosnc.log -q "ERROR|FATAL"
command[check_ncfaults]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/nc-fault.log -O /dev/null -q "ERR-"
command[check_cloudlog]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/cloud-output.log -O /tmp/nagioscloud.log -q "ERROR|FATAL"
command[check_cloudfaults]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/cloud-fault.log -O /dev/null -q "ERR-"
command[check_walrusfaults]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/walrus-fault.log -O /dev/null -q "ERR-"
command[check_scfaults]=/usr/lib64/nagios/plugins/check_log -F /opt/eucalyptus/var/log/eucalyptus/sc-fault.log -O /dev/null -q "ERR-"




  • 保存如上文件,并将发布为所有Eucalyptus节点上的 /etc/nagios/nrpe.cfg


接下来,修改 /etc/nagios/servers 目录下与每个被监控主机相关的配置文件,添加与特定被监控主机相关的监控参数(例如,在Cloud Controller主机的配置文件中添加Cloud Controller监控参数,在Walrus主机的配置文件中添加Walrus监控参数,在Cluster Controller主机的配置文件中添加Cluster Controller监控参数,以此类推)。您可以从下列监控参数中拷贝您所需要的监控参数,并将其粘贴到相对应的被监控主机配置文件中。需要注意得失,当您往被监控主机配置文件中粘贴监控参数的时候, 'host_name' 字段的内容需要与本配置文件中的'host'部分所定义的host_name保持一致。



## Cloud Controller Checkers
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description Cloud Logs
check_command check_nrpe!check_cloudlog
}
define service{
use generic-service ; Name of service template to use
host_name my-cloud-controller
service_description Cloud Faults
check_command check_nrpe!check_cloudfaults
}
## Walrus Checkers
define service{
use generic-service ; Name of service template to use
host_name my-walrus
service_description Walrus Logs
check_command check_nrpe!check_cloudlog
}
define service{
use generic-service ; Name of service template to use
host_name my-walrus
service_description Walrus Faults
check_command check_nrpe!check_walrusfaults
}
## Storage Controller Checkers
define service{
use generic-service ; Name of service template to use
host_name my-storage-controller
service_description SC Logs
check_command check_nrpe!check_cloudlog
}
define service{
use generic-service ; Name of service template to use
host_name my-storage-controller
service_description SC Faults
check_command check_nrpe!check_scfaults
}
## Cluster Controller Checkers
define service{
use generic-service ; Name of service template to use
host_name my-cluster-controller
service_description Cluster Controller Logs
check_command check_nrpe!check_cclog
}
define service{
use generic-service ; Name of service template to use
host_name my-cluster-controller
service_description Cluster Controller Faults
check_command check_nrpe!check_ccfaults
}
## Node Controller Checkers
define service{
use generic-service ; Name of service template to use
host_name my-node-controller
service_description Node Controller Logs
check_command check_nrpe!check_nclog
}
define service{
use generic-service ; Name of service template to use
host_name my-node-controller
service_description Node Controller Faults
check_command check_nrpe!check_ncfaults
}


最后,在Nagios前端服务器上重启nagios服务,并在所有的被监控节点上重启NRPE服务,然后刷新浏览器界面。

步骤五:使用Nagios

下面是使用Nagios对Eucalyptus私有云进行监控的一个屏幕截图。在这个屏幕截图中,被监控主机cloud-walrus-sc上出现了一个CRITICAL级别的错误信息,这是因为我们故意地向Cloud Controller发送了一个非法请求。(点击图片可以看到大图。)

nagios-euca

后续配置

我们可以对Nagios进行配置,使得Nagios在某些监控参数出现错误的时候自动地以特定的频率向特定的电子邮件地址发送报警信息。此外我们还可以对监控频率、报警阈值(例如在发送报警信息之前需要经历过多少次监控错误)、以及其他参数进行配置。您可以参考 Nagios 文档 以了解如何对Nagios进行更进一步的配置。

译者注:本文档翻译自Eucalyptus公司共同创始人Daniel Nurmi的博客。原文的出处是:

http://nurmiblog.wordpress.com/2013/01/24/eucalyptus-and-nagios/

《普罗米修斯》

发表时间:2013-01-21 06:45:56 评论:0

埃斯库罗斯的悲剧《普罗米修斯》,罗念生翻译。

 

《普罗米修斯》

普罗米修斯(Prometheus)是伊阿珀托斯(Iapetos)与忒弥斯(Themis)的儿子。传说普罗米修斯曾盗取天上的火送给人类,因此遭到了宙斯(Zeus)的惩罚,把他钉在高加索山上,叫一只鹰每天来啄他的肝,但是那肝第二天又会恢复原样,重新遭受那鹰的蹂躏。在这一出悲剧的开始,火神赫淮斯托斯(Hephaistos)跟随押送普罗米修斯的威力神(Kratos)和暴力神(Bia)一同来到高加索山,要将普罗米修斯钉在悬崖的边上。

威力神和暴力神分别是帕拉斯(Pallas,是天神乌兰诺斯和地神该亚的儿子)与斯堤克斯(Stys,是河神Okeanos的女儿)的儿子和女儿。天神乌兰诺斯(Ouranos)是地神该亚(Gaia)的儿子,也是该亚的丈夫。该亚给乌兰诺斯生了六男六女,称为提坦神。在希腊神话中,乌兰诺斯是最早的君王,他的儿子克洛诺斯(Kronos)推翻了乌兰诺斯的统治成为第二代君王,克洛诺斯的儿子宙斯(Zeus)又推翻了克洛诺斯的统治成为第三代君王。宙斯登上王位之后,将所有的提坦神都禁闭在冥土下面一个叫做塔耳塔洛斯(Tartaros)的深渊里。赫淮斯托斯是宙斯与赫拉(Hera)的儿子,由于出生的时候就是个跛子被其亲生母亲丢到海里,幸好宙斯将他救上来给他安排了一份铁匠的工作。在奥林匹斯(Olympus)山上诸神中,赫淮斯托斯是一个精巧的工匠,是一个下贱的体力劳动者。

威力神和暴力神仗着宙斯的权势,对普罗米修斯颐指气使。唯有善良而正直的赫淮斯托斯对普罗米修斯充满了同情,但是又无力违反宙斯的命令。当威力神和暴力神命令赫淮斯托斯将普罗米修斯钉起来的时候,他说:

啊,威力神,暴力神,宙斯的命令你们是执行完了,没有事儿了;我却不忍心把同族的神绑在寒风凛冽的峡谷边上。可是我又不得不打起精神做这件事;因为漠视了父亲的命令是要受到惩罚的。


谨慎的忒弥斯的高傲儿子啊,尽管你和我不情愿,我也得拿这条解不开得銅链把你锁起来,钉在这荒凉的悬岩上,在这里你将听不见人声,看不见人影;太阳的闪烁火焰会把你烤焦,使你的皮肤失掉颜色;直到满天星斗的夜遮住了阳光,或太阳出来化去了晨霜,你才松快。这眼前的苦难将永远折磨你,没有人救得了你。


这就是你爱护人类所获得的报酬。你自己是一位神,不怕众神发怒,竟把那宝贵的东西送给了人类,那不是他们应得之物。由于这缘故,你将站在这凄凉的石头上守望,睡不能睡,坐不能坐;你将发出无数的哀叹,无益的呻吟;因为宙斯的心是无情的;每一位新得势的神都是很严厉的。


每一位新得势的神都是很严厉的!这是何其形象的语言啊!在威力神和暴力神的严格监督下,赫淮斯托斯一边悲叹普罗米修斯所受到的不公正待遇,一边将普罗米修斯钉在悬崖的边上。我们的英雄在受难的过程当中一声不吭,只有等到威力神、暴力神还有赫淮斯托斯离开之后,他在寂寞与凄凉的双重袭击下终于发出了悲叹:

啊,晴明的天空,快翅膀的风,江河的流水,万顷海波的欢笑,养育万物的大地和太阳普照的光轮,我向你们呼吁:请看我这个神怎样受到众神迫害。请看我忍受什么痛苦,要经过万年的挣扎。这就是众神的新王想出来对付我、有伤我体面的束缚。哎,哎,我为这眼前和未来的灾难而悲叹!我这苦难的救星会在什么地方出现啊?


 这是什么话呀?一切未来的事我预先看得清清楚楚;绝不会有什么意外的灾难落到我头上。我既知道定数的力量不可抵抗,就得尽可能忍受这注定的命运。这些灾难说起来痛苦,闷在心里也痛苦!只因为我把神们特有的东西送给了人类,哎呀,才受这样的罪!我把火种偷来,藏在茴香杆里,使它成为人们各种技艺的教师,绝大的资力。为了这点过错,我受罚受辱,在这露天之下戴上脚镣手铐。


但是,并不是除了赫淮斯托斯之外就没有别的人或者神敢于对普罗米修斯表示同情了。你看,河神俄克阿诺斯(Okeanos)的十二个女儿乘着飞车前来探望我们的英雄了。她们得到了父亲的准许,连鞋都来不及穿就赶过来了。她们眼睛里充满了朦胧的泪水,控诉宙斯滥用法令,专制横行。我们的英雄在这巨大的抚慰之下,又一次显示出了他的坚强与忍耐。他告诉河神的女儿们宙斯原本是在他的帮助下才登上王位的。那时候天神们起了内讧,要把克洛诺斯轰下台去,改立他的儿子宙斯为王。普罗米修斯和母亲忒弥斯预见到宙斯的法律统治将要取代提坦神的暴力统治,因此帮助宙斯取得了胜利。刚刚登上王位的宙斯将权力分配给众神,但是对可怜的人类毫不关心,甚至打算要灭绝人类另行创造新的种族。普罗米修斯完全是出于对人类的怜悯才帮助人类的,他自己说道:

只有我有胆量拯救人类,使他们不至于完全被毁灭,被打进冥府。为此,我屈服在这样大的苦难之下,忍受着痛苦,看起来可怜!我怜悯人类,自己却得不到怜悯;我在这里受惩罚,没有谁怜悯,这景象真是使宙斯丢脸啊!


就在这个时候,河神俄克阿诺斯也亲自来看望普罗米修斯了。不过他似乎不是前来表示同情,而是前来向普罗米修斯劝降的:

天上已经立了一个新的君王......你的遭遇就是太夸口的报应......你既看见一位严厉的、不受审查的君王当了权,你就得奉我为师,不要伸脚踢刺棍。


但是普罗米修斯拒绝了河神的好意,河神的女儿们又一次为普罗米修斯的遭遇而悲叹了:

普罗米修斯,我为你这不幸的命运而悲叹,泪珠从我眼里大量滴出来,一行行泪水打湿了我的细嫩双颊。真是可怕啊,宙斯凭自己的法律统治,向前朝的神显出一副傲慢的神情。


现在,整个世界都为你大声痛哭......海潮下落,发出悲声,海地在呜咽,下界黑暗的地牢在号啕,澄清的河流也为你的不幸灾难而悲叹......普罗米修斯,你不怕宙斯,意志坚强,但是你未免太重视人类了。


让我们暂且把这剪不断理还乱的人物关系理一理吧。河神俄克阿诺斯是天和地的儿子,普罗米修斯的父亲伊阿珀托斯和母亲忒弥斯也都是天和地的儿女。所以河神俄克阿诺斯是普罗米修斯的叔叔,普罗米修斯是俄克阿诺斯的侄儿,河神的女儿们是普罗米修斯的堂妹。普罗米修斯的妻子赫西俄涅(Hesione)是河神众多女儿中的一个,所以河神还是普罗米修斯的岳父,河神的女儿们是普罗米修斯的表亲。宙斯的父亲克洛诺斯是天和地的儿子,威力神和暴力神的父亲帕拉斯也是天和地的儿子,所以普罗米修斯、宙斯、威力神、暴力神、还有河神的女儿们都是堂兄堂弟堂姐堂妹。

如果就这样让普罗米修斯和河神可爱的女儿们就这样一直哀叹下去,那么终究会让普罗米修斯显露出软弱的一面的。于是诗人及时地让伊俄出场了。伊俄是伊那科斯的女儿,原来是赫拉庙上的祭司,但是被宙斯看上了。赫拉当然不能够容忍自己的祭司变成丈夫的情人,宙斯于是把伊俄变成一头牛以躲避妻子的干涉。赫拉派了个牧人看守这头牛,但是牧人被宙斯的儿子赫尔墨斯杀死了。赫拉又叫一只牛氓追赶伊俄,不让宙斯接近她。伊俄被牛氓追赶到了高加索山上,看见了被绑在石头上遭受风暴的普罗米修斯。普罗米修斯认出了伊俄,并向她预言她未来颠沛流离的生活。(宙斯最后在埃及找到伊俄,让她恢复勒人形,并且和她生了一个儿子。这个儿子就是埃及日后的国王厄帕福斯Epaphos。)这一段对话我们看起来冗长,但是据说当时很能引起观众的兴趣,因为观众对于自己未知的世界是抱有很大好奇心的。另外,普罗米修斯和伊俄之间的关系,在于很多很多年之后,伊俄的第十三代传人赫剌克勒斯将要把普罗米修斯从苦难中解救出来。

河神的劝说,以及河神女儿们的同情,都不能够使普罗米修斯向宙斯屈服。普罗米修斯坚信自己保守着一个能够让宙斯失去权势的秘密,总有一天宙斯会回心转意重新与他结盟,以避免被下一个君主推下王位。于是宙斯的使臣赫尔墨斯趾高气昂地前来向普罗米修斯索要这个秘密了。你看,这个依附权势的小人说起话来是多么的傲慢无礼啊:

你这个十分狡猾,满肚子怨气的家伙,我是在说你 — 你得罪了众神,把他们的权利送给了朝生暮死的人,你是个偷火的贼;父亲叫你把你常说的会使他丧失权力的婚姻指出来;告诉你,不要含糊其辞,要详详细细的指出来;普罗米修斯,不要使我再跑一趟;你知道,含含糊糊的话平息不了宙斯的愤怒。


面对这样的小人,普罗米修斯怎么可能会屈服呢?宙斯是无法用苦刑或诡计强迫普罗米修斯道破一个秘密的。恼羞成怒的赫尔墨斯终于亮出了底牌:

如果你不听我的话,你要注意,什么样的风暴和灾难的鲸滔鲵浪会落到你身上,逃也逃不掉:首先,父亲将用雷电把这峥嵘的峡谷劈开,把你的身体埋葬,这岩石的手臂依然会拥抱你。你在那里住满le很长的时间,才能回到阳光里来;那时候宙斯的有翅膀的狗,那凶猛的鹰,会贪婪地把你的肉撕成一长条、一长条的,它是个不速之客,整天地吃,会把你的肝啄得血淋淋的。


不要盼望这种痛苦是有期限的,除非有一位神来替你受害,自愿进入那幽暗的冥土和漆黑的塔耳塔洛斯深坑。


是的,这家伙所说的消息普罗米修斯早已知道。对于普罗米修斯来说,忍受仇敌的迫害算不得耻辱。他说:

让电火的分叉的鬈须射到我身上吧,让雷霆和狂风的震动扰乱天空吧;让飓风吹得大地根基动摇,吹得海上的波浪向上猛冲,扰乱了天上星辰的轨道吧,让宙斯用严厉的定数和旋风把我的身体吹起来,使我落进幽暗的塔耳塔洛斯吧;总之,他弄不死我。


在普罗米修斯说了这番话之后,赫尔墨斯就要开始展开报复行动了。他劝河神的女儿们离开这是非之地,免得那无情的霹雳震得她们神志昏迷。河神的女儿们回答道:

请你说别的话,劝我做你能劝我做的事吧;你插进这句话,使我受不了!为什么叫我做这卑鄙的事呢?我愿意和他一起忍受任何注定的苦难;我学会了憎恨叛徒,再也没有什么恶行庇出卖朋友更使我恶心。


这是普罗米修斯留下的最后的话语:

看呀话已成真:大地在动摇,雷声在地底下作响,闪电的火红的鬈须在闪烁,旋风卷起了尘土,各处的狂风在奔腾,彼此冲突,互相斗殴;天和海已经混淆了!这风暴分明使从宙斯那里吹来吓唬我的。我的神圣的母亲啊,推动那阳光普照的天空啊,你们看见我要遭受什么样的迫害啊!


在悲剧的最后,普罗米修斯在雷电中小时,歌队也跟着不见了。

普罗米修斯并不是孤独的。

 

 

《波斯人》

发表时间:2013-01-21 06:34:37 评论:0

埃斯库罗斯的悲剧《波斯人》,罗念生翻译。

 

波斯老国王大流士(Darius)兵败马拉松(Marathon)战役。老国王死后,新国王塞克塞斯(Xerxes)带领远征军讨伐希腊,留下一些元老代为执行政务。当时希腊人比波斯人善于航海,而波斯人比希腊人精于骑射。塞克塞斯这一回出征希腊,不仅带去了1207只兵船,还有一支精锐的骑兵部队。塞克塞斯用六条巨绳在赫勒海峡(Hellespont)上搭起了一座浮桥,使得骑兵也可以顺利渡过大海。

由于军情隔绝,长老们聚集在一起讨论战事的吉凶。由长老们组成的歌队这样描述波斯大军的狂妄、暴戾、以及专制:


那争城夺地的王师渡到西邻的对岸去了,他们用绞织的巨绳系在赫勒海峡上公然越过,这系束的浮桥就像一条羁绊套在大海的颈上。


亚细亚的暴烈君主信靠他凶狠的将帅驱使着精良的大军水陆并进,去征服全世界;我们的国王与天神同尊,他的祖先原是“金雨”的结晶。


他眼中射出毒蛇的黑光,乘着叙利亚的车銮,带着水陆两军和勇敢的箭手去攻打那著名的茅兵。


长老们的歌队也表达了战争给人民所带来的痛苦:

婚床上滴满了眼泪,为的是思念良人;这些波斯妇人离开了他们暴烈的夫君,在想念中,在悲痛中愈觉孤单。


皇太后阿托萨(Atossa)出来请求长老们为她解释一个噩梦。在噩梦中有两位美丽无暇的高大女郎发生了争吵,两人各穿着希腊和波斯的服饰。塞克塞斯出来试图制服两位女郎,用绊带系在她们的脖子上驾在马前。有一位女郎顺从地听使缰绳的牵引,另一位却竭力反抗把横轭折成了两端。塞克塞斯从车上滚了下来,他已故的父亲站在旁边怜悯地看着他。无地自容的塞克塞斯在父亲的注视下撕毁了身上的长袍。

长老们听了这个不吉利的梦境,不敢跟皇太后解释噩梦的含义,只好劝她去祭祀地母和阴魂。这时候,从前线回来的信使报告了确实的军信:

全亚细亚的都城啊,波斯的领土和财富的藏府啊,怎么轻轻一打击,你们的幸福便消失了?波斯的花朵便枯萎了?啊,做一个首先传播凶信的人真是苦啊;但是呀,我得把战败的消息透露出来,波斯人啊,我们的全军覆灭了!


波斯人的失败是从海上开始的。如果单说战船的数量的话,波斯人用1207艘兵船将希腊人的300艘兵船包围在一个萨拉弥斯(Salamis)狭小的海湾里,大有将希腊海军一举歼灭之势。但是希腊人派了一个奸细来到波斯人的军中,谎称是希腊的兵船想要乘黑逃跑。波斯人严阵以待,彻夜不眠,而养精蓄锐的希腊人在日出时分冲杀出来,于是疲惫不堪的波斯海军大祸临头了。从前线回来的信使这么说道:

等到这许多船只集中在那狭小的港内时,非但不能彼此顾及,并且用那包铜的船头对着自己的船身撞击,撞坏了全船的桡扁。敌舰不肯失去良机,围着我们攻打,把我们的船弄翻了。海面上看不见水,净是破船片和被杀的尸;海滩上和礁石上也堆满着尸体......惨痛的事情多者呢,就叫我细数十天,我也数不完啊。但是你很可以相信,我们从未在一日之内丧失过这么多人。


波斯人的陆军也好不到哪里去。为了截击逃跑的希腊人,塞克塞斯派遣精锐兵士埋伏在一个小岛上。但是希腊人的战船将小岛团团围住,身穿战甲的兵士登上岛来,用石头、弓箭和长矛对着波斯人任意宰杀。塞克塞斯坐在海边的高山上,目惊口呆,高声嚎啕,撕破王袍,下令撤军。然而溃败的大军在返回波斯的途中又遭遇了严酷天气的袭击,有的人累死了,有的人渴死了,有的人饿死了,还有的人掉在刚刚结冰的河里淹死了。国王塞克塞斯倒是安全地回到了波斯,但是与他一起前去讨伐希腊的大军,大部分都埋骨在异国他乡了。

长老们的歌队这样哀叹波斯所遭受的打击:

我主宙斯啊,你如今毁灭了高傲的波斯人的大军,用一层灰暗的忧愁掩罩着苏萨城。许多妇女同来哭悼,用纤弱的手指撕毁了面纱,那浸濡的眼泪湿透了她们胸前的衣褶。那些波斯的妻子痛哭不定,在忧伤里想望新婚的夫君,他们离弃了那柔软的床帏,再不能在那床帏里享受青春和快乐。我自己也放出这真诚的悲歌来哭悼那些从军的死者。


唉,那些被迫留在萨拉弥斯的死者依然在那海滩上漂浮。哦,快哭啊,把这苦痛的悲音送入云天!伤心啊,把这愁惨的哭声送入云天!


唉,涡流撕毁他们的尸体,净海里无声的鳞介吞噬他们的骨肉。哎呀,家家门户哀悼人丁的死丧,孤独的亲老听了这全盘的灾难,一齐痛哭这天降的惩罚。


全亚细亚的人民不再遵守波斯的王法,不再受国王的威迫前来进贡,不再伏在地下敬畏至尊:因为波斯哦王权已经崩溃了。


他们不再保持缄默,暴力的钳制既然松懈了,他们便会自由议论。波斯的一切都埋藏在萨拉弥斯的红沙里。


这个时候噩梦的含义已经非常明了,皇太后阿托萨放弃了对神的祭祀,却跑到先夫大流士的坟前去祈祷。老国王的阴魂被长老们的咒语所惊醒,出来责备他的儿子不该贸然带领大军出征。他把儿子的失败归咎于天神的诅咒,说道:

哎呀!那神示竟显验得这样快,天帝宙斯把他得话应在我的儿子身上,我还相信要过了许多时候才能实现呢。但凡人作孽时,天神更是相催。现在啊,一大祸患临到了我的人民身上。我的儿子糊里糊涂地,凭着方刚的血气闹出了乱子。他想用镣铐把赫勒海峡的圣洁潮汐当一个努力锁起来,因此创出了一种新奇的水道:他用铁制的巨链抛过对岸,为他的大军筑成了一道长桥。他原是一个凡人,却妄想征服海神,征服一切的天神。这岂不是我的儿子发疯了?恐惧我辛辛苦苦为人民聚下的财宝会给那先下手的人掠去了。 


在悲剧的最后部分,丢魂落魄的塞克塞斯回到了波斯,在长老们的追问下哭诉战争中损失的精兵强将,并与长老们共同哀叹波斯所遭受的悲痛。

在这个悲剧里,大流士看起来是多么的热爱和平啊。诗人似乎忘记了大流士再其当政期间经历了两次惨败,一次是败于斯库提亚(Scythia),另一次在著名的马拉松战役中败于希腊。虽然大流士没有亲自出征,但是马拉松的败讯使得大流士一直耿耿于怀,征集了全部的人马和兵辐准备前往雅典进行报复。不幸的是正当大流士信心满满准备停当的时候,却被冥神永久地召唤到地府去了。他的儿子塞克塞斯本来是不打算去打仗的,但是他的谋臣们不断地用先王的遗志和天神的预言来怂恿他。从某种意义上来说,塞克塞斯也许是被谋臣们绑架出征的。

而诗人自己就亲身参加过击败波斯人的马拉松战役。他在自己的墓碑上全然没有提及自己在戏剧方面的成就,而是强调了自己在战场上的英勇:

马拉松的圣林能道出我盖世的英豪,那鬓发丛生的波斯人也必能深铭熟忆。


埃斯库罗斯出生于公元前525年,这个时候波斯和希腊之间战争刚刚开始。马拉松战役发生于公元前490年,波斯老国王大流士死于公元前486年,萨拉弥斯海战发生于公元前480年。直到公元前449年塞浦路斯战役之后,波斯和希腊之间的战争才宣告结束。《波斯人》这部悲剧据说是在公元前472年上演的,距离萨拉弥斯海战不过只有八年时间。从诗人的墓碑上来看,诗人参加了马拉松战役可以说是证据确凿的。也有传说认为诗人也参加了萨拉弥斯海战,这一类的传说可能不太可靠。但是在整个雅典人都放弃了城池将财产转移到岛上去躲避时,诗人完全有可能就在附近的海岛上目睹了大战的整个过程。《波斯人》是古希腊悲剧中现存的唯一一部以当时现实为题材的作品,为我们了解当时的历史提供了宝贵的资料。诗人亲自参加战争捍卫希腊的自由,其爱国热情毫无保留的自然流露在其作品中。然而诗人又没有对波斯所遭受的失败表示幸灾乐祸,而是对其人民所遭受的深重苦难表示了真切的怜悯与同情。也许可以这么认为,诗人出于爱国热情参加了卫国战争并为此感到骄傲,但是在其内心深处其实是反对战争的。

《波斯人》这一部悲剧,结构比较简单,情节也不算曲折,但是诗人的从军经历成就了其宏大场面。这中宏大的场面是我们在欧里庇得斯的悲剧中所看不到的。

 

 

Aquilaria Introduction

发表时间:2013-01-17 06:03:27 评论:1

Aquilaria-Introduction-1

This is a lightning presentation I gave to my Eucalyptus colleagues at Santa Barbara during our all-hands meeting. I think this is an interesting presentation and would like to share it with the rest of my friends. For those who prefer to read Chinese I have an older version in Chinese that was created in 2009, and the content in that version is quite similar to this one.

Aquilaria-Introduction-2

Aquilaria refers to a collection of 15 species of trees in the Thymelaeaceae. These are trees that grow in the rain forests in Southeast Asia. The heights of the trees are quite different, depending on the actual species and the geographic location they grow, but usually fall within the range of 6 to 20 meters. I myself have seen trees as tall as 30 meters in the south part of Thailand, and I assure you that these are very very old trees.

From this slide you can also see the flowers, the fruit, and the seeds.

Aquilaria-Introduction-3

As said just now, these trees usually occur in Southeast Asia, especially within the yellow square on this map. This includes the south part of China, the north part of India, Burma, Cambodia, Vietnam, Laos, Thailand, Malaysia, Philippines, and Indonesia.

屏幕快照 2013-01-17 上午6.00.57

Aquilaria is considered as the major source of agarwood. By saying agarwood we usually refer to the resinous material produced by the Aquilaria trees. Some people think that agarwood is the heart wood of the tree, but actually it is not. The Aquilaria tree produces epoxy-like material to protect itself when it get wounded, either by the force of nature such as birds and worms or by human beings. As time goes by the concentration of this epoxy-like material gets richer, and the color of the wound becomes darker. And then people harvest the dark and resinous part from the tree, which is called agarwood.

Aquilaria-Introduction-5

Agarwood is well known by its fragrance, which is very appealing and pleasing. Therefore it is widely used in religion rituals among the buddhist world and the islamic world. Further more,  agarwood has a decent hardness so that people make it into prayer beats or sculptures. It is believe that if you wear such prayer beats or host such sculptures you will receive special blessing from the Buddha, or Shiva, or some other god or goddess.

Aquilaria-Introduction-6

Agarwood can also be further processed to produce essential oil. The oldest -- and also the simplest -- method to produce essential oil is water distillation. You crash the wood into powder, boil it along with water, cool down the steam, and separate the oil from water. In the market agarwood essential oil is very expensive, way more expensive then gold. Therefore, the majority of the so-called "agarwood oil" available in the market are usually highly diluted, or even fake.

The essential oil produced can be used for aromatic therapy, body massage, as well as the "magic portion" in high end cosmetics.

I myself have tried this process, and it worked pretty well. The picture on the top-left side was actually taken by myself in my lab several years ago.

Aquilaria-Introduction-7

As you can imagine, agarwood is only an extremely small part of the Aquilaria tree. When people harvest agarwood, they usually cut down the whole tree, get rid of the white wood, extract the dark part, and abandon the rest. This is especially true when the harvest practice is done in an illegal way -- and it usually is. As the demand for agarwood increases, the number of standing Aquilaria trees decreases rapidly. Currently, all 15 species of Aquilaria are considered as endangered species, according to Convention on International Trade in Endangered Species of Wild Fauna and Flora (CITES).

Aquilaria-Introduction-8

Starting from 2007, I myself have been actively involved in the preservation and protection of the endangered Aquilaria species. I have a small farm in Hainan, which is a big island in the very south part of China. This is a screenshot from Google Maps, and it shows where I and my family live. In this small garden I have about 200 Aquilaria trees, and I have identified 6 different species out of them. Also, I am in the process of collecting Aquilaria seeds from other countries (legally, of course) and cultivate them in my own farm, so that I can preserve more species in the future.
更晚内容 更早内容

云与清风常拥有,
冰雪知音世难求。
击节纵歌相对笑,
案上诗书杯中酒。

2020年12月31日
洛杉矶

最新评论


2026-07-23 11:37:04
qyjohn 评论了 《几句翻译》

2026-07-21 20:11:28
wells 评论了 《几句翻译》

2025-11-15 06:29:51
qyjohn 评论了 《青桔》

2025-11-14 01:55:04
wells 评论了 《青桔》

2025-10-24 18:04:06
Ted Wang 评论了 《关于作者(About Me)》

2025-03-27 08:28:09
Max 评论了 《父亲走了》

2025-03-08 04:13:52
W 评论了 《我不想颂扬普京大帝》

2024-07-22 16:02:03
云思 评论了 《无题》

2024-06-27 10:01:54
yiming 评论了 《致访客(Welcome)》

2024-05-06 08:50:06
qyjohn 评论了 《致访客(Welcome)》

2024-05-03 19:49:00
jimmie 评论了 《致访客(Welcome)》

2024-02-19 03:32:57
林小静 评论了 《埋剑渡》

2024-01-05 03:54:28
路过者 评论了 《2023年度盘点》

2024-01-04 10:22:05
qyjohn 评论了 《致访客(Welcome)》

2024-01-04 08:05:13
qyjohn 评论了 《2023年度盘点》