鞍山百度做网站,网站开发维护招聘,一套完整的vi设计手册,wordpress页面模板亚马逊标题自动抓取在等待一个新项目时#xff0c;我想学习一些有用的东西。 而且由于在许多项目中我们需要评估和测试正在开发的应用程序的性能#xff0c;而很少有足够的硬件来生成实际负载#xff0c;因此我决定学习更多有关按需在云中按需配置虚拟机的知识#xff0c;即… 亚马逊标题自动抓取 在等待一个新项目时我想学习一些有用的东西。 而且由于在许多项目中我们需要评估和测试正在开发的应用程序的性能而很少有足够的硬件来生成实际负载因此我决定学习更多有关按需在云中按需配置虚拟机的知识即Amazon Web Services AWS。 我已经学到了很多有关可用于AWS的工具以及资源机器实例安全组数据库等的自动化设置以及AWS云中虚拟机实例的自动自定义的许多知识。 我想简要介绍一下AWS并简要概述工具和自动化选项。 如果您熟悉AWS / EC2则可能需要直接将介绍跳到自动化部分。 为什么选择AWS 亚马逊是“基础设施即服务”的领先提供商并正在不断为其产品增加新的服务。 AWS允许您按需创建虚拟机对其进行负载平衡将它们连接到“数据库即服务”与手动管理的数据库相比具有多个优点以及各种其他服务例如通知电子邮件和排队服务 。 您可以访问内置监视并且可以将应用程序部署到基于此的“平台即服务”同时保留对这些低级资源的控制权。 关注官方AWS博客以了解新服务功能等。 AWS入门 要创建一个AWS账户您将需要一部电话和一张信用卡如果您使用任何付费服务或超出任何免费使用限制都将被收取费用。 在注册过程中请务必小心因为UI并非完全防错。 您的帐户可能需要最多两个小时才能正常运行。 下一步要做的是浏览AWS管理控制台 该控制台可让您创建和配置各种服务和资源最有趣的是Elastic Compute CloudEC2您可以在其中启动新的虚拟机。 管理控制台很容易解释尽管不像我希望的那样友好。 您可能需要查看这些屏幕快照以显示如何在管理控制台中创建EC2实例 。 简要概述 AWS的核心规则是您仅需支付使用费用即实例的运行时间和流量-请参阅AWS Simple Monthly Calculator 。 最重要的资源是EC2因为它允许您创建称为“实例”的虚拟机。 关于它们的内存和计算能力存在不同类型的实例 。 默认情况下它们是瞬态的一旦停止使用它们就会被丢弃终止。 您可能还拥有一个由弹性块存储EBS支持的实例该实例使您可以停止并重新启动具有任何状态并保留更改的实例Amazon会为此收取$ 0.10 / GB /月。 如果只需要保留一些数据也可以将EBS存储作为卷装入实例。 没有快速的方法可以重新创建终止的实例您必须再次执行向导-这是命令行工具和自动化变得很方便的地方。 设置EC2实例时您可能还需要将它们分配到同一安全组中并配置对安全组中的哪些人开放的端口默认情况下您甚至无法SSH输入。 如果您想了解有关EC2的全部信息请转到Amazon EC2用户指南 。 除了EC2外还有许多其他有趣的服务例如Elastic BeanstalkPaaS当前用于Java Webapp使用Tomcat分布式存储S3等。还有一些其他服务例如Amazon CloudWatch 这是一项性能针对您的AWS基础架构的监控工具。 这可以通过New Relic监视进行补充以进一步了解应用程序。 利用亚马逊免费套餐 亚马逊免费为新客户提供一定数量的资源为期一年如果您消耗的资源更多则只需要付费即可。 它包括例如由EBS支持的不停止运行的微型EC2实例即它是持久的您可以停止并再次启动它15 GB流量10 GB EBS存储5 GB S3存储10个CloudWatch指标等不幸的是尽管它们在Amazon SimpleDB NoSQL键值存储中提供了1GB的空间但它不包括Amazon管理MySQL / Oracle数据库 RDS 。 这意味着您可以免费拥有一个持续运行的EC2 Micro实例613 MB内存。 您可以将其用作云中的基础例如因为两个EC2实例之间的流量更快/更便宜并且由于它可以完全访问同一安全组内的计算机。 最佳选择可能是将您的实例基于Amazon Linux AMI 它是针对AWS优化的RedHat Linux的变体配备了大多数AWS API命令行工具和CloudInit用于自动系统设置稍后介绍。 建议您浏览用户指南 该指南描述了可用的工具以及如何使用CloudInit。 自动化呢 如果您是第一次执行某项操作则AWS Management Console很棒但是对于重复任务而言向导太耗时。 特别是如果您需要设置多个实例比如说RDS数据库实例EC2计算机实例以及相应的安全组或许多相同的实例。 我们将研究如何自动执行此操作。 除了设置基础架构之外您通常还需要自定义EC2实例至少通过安装和启动所需的EC2实例。 您可以通过SSH登录它们但是能够自动化它不是很好特别是如果您需要多个类似的实例吗 请注意我现在只关注自动化AWS用户的工作。 也可以将AWS配置为在需要时例如当负载超过限制时 自动启动新的EC2实例 但这是另一回事。 概述 基础架构配置自动化 AWS API命令行工具或AWS Java API或第三方工具/库 AWS CloudFormation 实例操作系统和软件设置自动化 Canonical CloudInitUbuntu和Amazon Linux AMI–也许利用Puppet或Chef 创建定制的AMI 自动化基础架构配置 在没有AWS管理控制台的情况下有两个突出的选项可用于创建EC2实例和其他资源AWS API命令行工具和AWS CloudFormation。 AWS API命令行工具 亚马逊为其大多数服务例如EC2和RDS提供命令行工具。 EC2 Robert Sosinovski早在2008年就发布了关于使用Amazon EC2命令行工具 尽管其名称并非特定于Mac OS X的很好的说明但它们仍然有效因此只要关注它们就无需重复了。它们在这里基本上是下载解压缩设置环境变量提供凭据。 或者您可以转到下载页面并按照官方说明进行操作 。 我建议您创建一个文件夹以包含所有工具 $ AWS_FOLDER / ec2 /等而不是〜/ .ec2 /。 如果要使用除默认us-east-1之外的其他AWS区域则还需要设置环境变量EC2_URL请参阅区域端点列表或命令ec2-describe-regions 。 例如 我的URL中间有ec2与端点列表相反但显然也可以 export EC2_URLhttps://eu-west-1.ec2.amazonaws.com 其他工具的身份验证设置 虽然EC2工具的文档仅描述了通过X.509证书环境变量EC2_PRIVATE_KEYEC2_CERT进行的身份验证但其他工具至少是RDSCloudFormation支持通过环境变量AWS_CREDENTIAL_FILE指向统一身份验证到包含您的AWS Access Key ID和秘密密钥的文件可以在您的AWS帐户中的 “安全性凭证-访问密钥”下找到中配置在工具的自述文件中进行了描述。 RDS RDS命令行工具的设置与EC2非常相似只需下载它们并添加环境变量如随附的readme.txt中所述。 与EC2一样您可能需要更改默认的RDS区域 export RDS_URLhttps://eu-west-1.rds.amazonaws.com Vaadin测试设置中的示例 我最初的计划是尝试使用Amazon Web Services进行Vaadin可伸缩性测试中描述的性能测试不幸的是由于测试应用程序无法运行事实证明这是不可能的。 在此过程中我已自动完成了各个设置步骤如下所示。 您可能需要查看博客文章以了解上下文。 我不需要创建安全组并允许通过命令行访问它就像通过管理控制台进行操作一样。 您可以按以下方式打开SSH端口 ec2-authorize -p 22 创建两个EC2实例 ec2-run-instances ami-1a0f3d6e -t m1.large -k VaadinAS --instance-count 2 -z eu-west-1c -g quick-start-1 -k指定将与该实例相关联的现有密钥对的名称管理控制台为您提供了在首次创建实例时创建的密钥对的名称从而无需密码即可进行ssh登录 -z指定区域内的可用区AZ在Mgmt Console中创建实例时您可以看到可用区最好将所有资源都放在同一AZ中 -g指定一个现有的安全组再次在控制台中创建 我相信默认是“默认” ec2-run-instances命令还支持–user-data或–user-data-file属性以将设置指令传递给CloudInit如稍后所述。 要登录实例您将需要它们的公共域名/ IP在命令完成时打印和用户名这取决于所使用的AMI最简单的方法在Mgmt Console中右键单击该实例然后选择“连接”以获取完整的SSH connect命令和密钥文件在我的情况下为./VaadinAS.pem。 因此我将以如下方式登录我的第一个实例前提是我已经打开了安全组中的端口22 ssh -i VaadinAS.pem ubuntuec2-46-137-136-253.eu-west-1.compute.amazonaws.com 使用MySQL创建RDS实例启动完成可能需要几分钟 rds-create-db-instance quicktickets --allocated-storage 5 -c db.m1.large -e MySQL5.1 -u quicktickets -p V3ryS3cr3t -z eu-west-1c --backup-retention-period 0 --db-name quicktests quicktickets将是实例的名称 最大 大小为5 GB以后可以更改 -c –它基于db.m1.large实例 -e –数据库类型为MySQL-u用户名快捷票-p密码V3ryS3cr3t -z eu-west-1c将其置于与EC2实例相同的可用区中 –backup-retention-period 0 –不保留备份默认1天 –db-name quicktests –连接到它所需 接下来我需要使数据库可从我的EC2实例在安全组quick-start-1中访问 rds-authorize-db-security-group-ingress default --ec2-security-group-name quick-start-1 --ec2-security-group-owner-id 您可以找到您的AWS账户ID在AWS帐号的安全凭据下 要查找实例的主机名请执行rds-describe-db-instance 它还会告诉您实例是仍在启动还是已经在运行。 现在您可以从安全组中的EC2实例连接到数据库 mysql -h quicktickets.cpokd2djuazy.eu-west-1.rds.amazonaws.com -u quicktickets --passwordV3ryS3cr3t quickticketsAWS CloudFormation CloudFormation是Amazon的一项新的2/2011免费服务使您能够以文本格式描述所需的资源及其依赖项并使用此“模板”通过以下方式实例化它们“创建堆栈” AWS管理控制台或通过CloudFormation命令行工具 。 您还可以共享您的模板并使用和组合其他人创建的模板。 模板还支持UserData属性您可以使用该属性将设置说明传递给CloudInit如稍后所述。 查看此基于屏幕截图的文章有关通过管理控制台设置CF堆栈 。 模板文件示例 { AWSTemplateFormatVersion: 2010-09-09,Description : One EC2 instance with a security group open for SSH,Parameters: {KeyName: {Description : Name of an existing EC2 KeyPair to enable SSH access,Type: String},InstanceType: {Default: m1.large, Type: String}},Resources: {EC2SecurityGroup: {Properties: {SecurityGroupIngress: [{FromPort: 22,CidrIp: 0.0.0.0/0,ToPort: 22,IpProtocol: tcp}],GroupDescription: SSH access},Type: AWS::EC2::SecurityGroup},Ec2Instance: {Properties: {SecurityGroups: [{Ref: EC2SecurityGroup}],ImageId: { Fn::FindInMap: [AWSRegionArch2AMI,{Ref: AWS::Region}, 64]},UserData: {Fn::Base64: { Fn::Join: [, [#!/bin/bash -v\n,# you init bash script here...\n]]} },KeyName: { Ref: KeyName },InstanceType: { Ref: InstanceType }},Type: AWS::EC2::Instance}},Mappings: {AWSInstanceType2Arch : {m1.large : { Arch : 64 }, m1.xlarge : { Arch : 64 }, ...}},Outputs : {InstanceId : {Description : InstanceId of the newly created EC2 instance,Value : { Ref : Ec2Instance }},AZ : {Description : Availability Zone of the newly created EC2 instance,Value : { Fn::GetAtt : [ Ec2Instance, AvailabilityZone ] }},PublicIP : {Description : Public IP address of the newly created EC2 instance,Value : { Fn::GetAtt : [ Ec2Instance, PublicIp ] }}}
} 4如您所见您可以定义属性具有默认值当从模板创建新堆栈时可以为其提供值 16、31接下来它定义了两个资源安全组和EC2实例使用某些映射因为AMI的名称因地区而异 38可以通过base64编码的UserData将设置说明提供给CloudInit 56您还可以通过DescribeStacks函数定义哪些信息可用命令行cfn-describe-stacks 通过CloudFormation您可以定义任何资源EC2实例RDS实例负载平衡器安全组等它们的依存关系以及通过CloudInit定义各种启动时操作如SW安装。 模板是有效的JSON文档。 示例 使用CloudFormation和Cloud-Init安装和启动RoR应用程序 具有WaitCondition功能–它不太长描述了模板文件的各个部分。 您也可以浏览公共模板文件 例如 具有Amazon RDS数据库实例的单个EC2实例Web服务器 。 2011年6月亚马逊还启动了CloudFormer 这是一个原型工具使您可以从帐户中的现有AWS资源创建CloudFormation模板。 如果您仍需要更多信息请阅读《 CloudFormation用户指南》 。 使用CloudFormation元数据和帮助程序脚本自定义实例 从通过AWS CloudFormation引导应用程序 AWS CloudFormation允许您通过模板中的元数据定义软件包文件和操作系统服务的集合。 此外它还提供了辅助功能 解释元数据并对其执行操作安装软件包创建文件以及在实例上启动或重新启动服务。 AWS CloudFormation脚本基于基本CloudInit功能构建使您能够创建通用的简单CloudInit启动脚本该脚本通过元数据进行数据驱动。 您在元数据中描述了主机上需要安装的内容AWS CloudFormation负责此操作。 有关如何使用元数据和帮助程序脚本 如cfn-init的说明请参阅文档该脚本用于安装程序包下载和解压缩归档文件启动服务以及根据元数据部分中的数据创建文件。 它还提到了CloudFormation和Chef或Puppet的集成在将AWS CloudFormation与Opscode Chef 集成以及将AWS CloudFormation与Puppet集成的白皮书中对此进行了详细描述。 如果您打算使用CloudFormation则应完全阅读此22页的指南。 注意 cfn-init支持下载和解压缩软件包可用于例如获取GitHub按需提供的应用程序的最新源代码。 您可以在此模板中看到利用元数据和帮助程序脚本的用法示例。 其他选择 AWS Java API命令行工具使用它它基于Web服务调用 第三方工具/库例如Ruby gem Fog 。 Chef Knife和Puppet我相信他们为AWS WS调用提供了自己的包装器并利用CloudInit 自动化EC2实例OS / SW设置 要在EC2实例及其配置中自定义软件您可以创建自定义的AMI也可以将Canonical的CloudInit与支持它的AMIAmazon Linux和Ubuntu以及其他一起使用。 如果您使用CloudFormation则还有另一种基于CloudInit的可能性如上文CF部分所述。 Canonical CloudInit和实例用户数据 您可以通过“ 用户数据”属性最大16KB将任何文本数据传递到新实例然后可以从实例中的http://169.254.169.254/latest/user-data获得数据您也可以访问各种元数据 。 CloudInit是由Ubuntu背后的公司Canonical开发的Linux实用程序可在启动时大约在rc.local运行时读取这些数据并处理其中嵌入的所有指令。 例如如果它以开头。 然后在根目录下作为shell脚本运行。 CloudInit在用户数据中接受不同类型的指令以第一行区分脚本…云配置数据即要安装的软件包等cloud-config要处理的文件的URL#include… upstart-job向/ etc / init在每次启动时运行中添加一些内容。 它甚至可以处理gzip压缩的用户数据和多部分数据结合几种指令类型请参阅cloud-utils和命令write-mime-multipart 。 cloud-config类型非常有用因为它是安装软件包和执行命令的一种比bash脚本更简单的方法。 它包含YAML格式的指令f.ex。 “ runcmd”运行命令行工具“ packages”通过操作系统的软件包管理器安装软件包。 示例 使用 cloud-config 安装Jenkins CI 。 CloudInit的文档还不够完善您有时可能需要阅读Python源代码 。 如果出现问题可以检查实例的/var/log/cloud-init.log中的日志。 除了官方文档外您可能还想查看Xebia的CloudInit简介演示文稿并阅读Amazon Linux AMI 用户指南中有关CloudInit的部分。 创建自定义的Amazon Machine Image CloudInit在启动时安装和配置软件因此实例需要更长的时间才能完全可用。 如果这是一个问题那么您可能更喜欢使用已安装和配置的所有软件来创建自己的自定义Amazon Machine Image AMI。 例如在此简短的文章中描述了如何从现有的 2007年或官方的AMI定制文档中 创建新的AMI 您可能还想看看EC2 AMI命令行工具 。 然后您将基于定制的AMI创建新的EC2实例。 一些相关的东西 如果您的EC2实例需要进行通信并使用要求它们位于同一子网中的技术则可以使用Amazon Virtual Private Cloud VPC免费甚至可以通过VPN将其连接到数据中心每小时$ 0.05。 例如对于运行多个JMeter实例这可能是必需的。 关于JMeterJörgKalsbach创建了一个AMI该AMI简化了JMeter主从服务器场的创建3/2010 JMeter In The Cloud –基于云的负载测试环境 请阅读文档。 技巧是主实例启动从属实例从而知道其IP。我想可以使用CloudFormation自动缩放和用户数据/ CloudInit来完成类似的操作。 摘要 AWS是一个动态开发的平台具有不断改进的工具和不断增长的服务提供。 使用基于Web的管理控制台非常容易上手但是很快将变得更加方便可以迁移到更加自动化的界面例如命令行工具甚至整个基础架构堆栈设置的CloudFormation。 通过创建自定义图像或在启动时通过CloudInit和/或CloudFormation的元数据和脚本对实例进行自定义的支持非常好人们已经将其与自己喜欢的DevOps工具Chef和Puppet结合在一起。 我建议您先使用管理控制台开始使用AWS然后在您熟悉概念和用法后切换到命令行工具和CloudInit。 如果需要重复供应多个资源则应使用CloudFormation及其元数据和帮助程序脚本也许还利用Puppet / Chef。 参考 The Holy Java博客上来自JCG合作伙伴 Jakub Holy的15分钟之内的Amazon Web Services和全自动资源供应入门 。 相关文章 测试技巧–不编写测试 在云中开发和测试 晴间多云 用Scala测试 翻译自: https://www.javacodegeeks.com/2011/12/getting-started-with-amazon-web.html亚马逊标题自动抓取