一种面向aws平台的并行系统快速部署方法
【专利摘要】本方法公开了面向AWS(AmazonWebServices亚马逊网络服务系统)平台,快速部署并行处理系统的基本方法。本发明明确了基于AWS所提供的EC2(ElasticComputeCloud弹性计算云)服务,利用外部初始化脚本来构建大规模且稳定的计算机集群系统,同时利用内置初始化脚本来部署Hadoop扩展平台的基本流程。在保证部署质量的前提下,将集群准备的时间与费用成本降到最低。
【专利说明】—种面向AWS平台的并行系统快速部署方法
【技术领域】
[0001]本发明涉及一种面向AWS平台的并行系统快速部署方法,属于信息技术处理领域。
【背景技术】
[0002]AffSCAmazon Web Services亚马逊网络服务系统)是由亚马逊公司于2002年开始运营的云计算平台,提供多种类型的远端Web服务。其中的EC2 (Elastic Compute Cloud弹性计算云)服务可以让用户以租用虚拟计算机(实例)方式,远程使用不同类型的计算机系统,并且运行任何自己所需要的软件。租用虚拟计算机的价格随提供的硬件资源多少而区分,并且用户可以随时创建、运行和终止服务,因此AWS EC2被视为一个灵活的、相对廉价的云计算平台。实例中所包含的操作系统和预安装软件取决于它启动时所选择的系统镜像AMI,不仅是AWS官方,任何用户均可以将自己所设置的软件环境封装为AMI,并且提供给其它用户使用。
[0003]由于受到EC2服务自己的限制,申请大量EC2实例来组建计算机集群,并在此上部署基于Hadoop的并行处理平台的过程繁琐且耗时。首先的原因在于EC2实例无法拥有一个长久固定的IP地址。一台EC2实例在其创建时被赋予一个惟一的公有链接地址和私有IP地址,分别用于从数据中心外部和内部来对实例进行访问。在从外部进行访问时,由于网络受到途经所有路由的限制,其带宽有限且会根据使用流量收取相应的费用,而在从内部网络访问实例时,则带宽质量受到保证,且不计入流量费用。此外,当实例被暂停或终止后,仅管不再计价,但相应地,实例的公有链接地址与私有IP均被收回,因此在AWS EC2平台中,无法长久保存一个拥有固定私有IP的计算机集群系统。针对此问题,AWS提供了 EIP(Elastic IP弹性IP)服务,用于租用一系列固定的私有IP地址,但会收取一定的额外费用。
[0004]其次,在部署基于Hadoop的并行处理平台时,需要修改一定数量的配置文件,如masters>slaves>core-site.xml等,用于设置当前集群中的主实例与子实例的IP址址。由于受到不能获取固定IP的问题局限,每当建立一个新的集群系统时,都要对这些文件需要进行更新。当集群规模超过50台实例时,广播传输更新后的文件也需要耗费一定的时间与费用。
[0005]最后,由于EC2平台自身存在的不稳定性,在申请大批量实例时,会存在部分实例无法顺利启动的问题,从而对其它已启动实例的计算资源造成了浪费。
[0006]这种AWS EC2服务的不稳定性以及无法免费获取固定私有IP地址的局限构成了在此平台上部署基于Hadoop平台的并行处理系统的一个技术难点。
[0007]目前,也没有公开发表的技术或手段来对此问题加以解决。
【发明内容】
[0008]本发明所要解决的技术问题是针对上述【背景技术】的不足,提供一种面向AWS平台的并行系统快速部署方法。
[0009]本发明为实现上述发明目的采用如下技术方案:
步骤1,检测当前系统是否准备有EC2命令行工具以及其它必须文件,如账户私有密钥等;
步骤2,设置启动EC2实例的参数,包括实例数量、类型,AMI ID,主子实例的标签名,数据中心的名称,防火墙规则等,并启动所有实例;
步骤3,等待并确保所有实例启动成功,具体方法为:
步骤3-1,检测并收集当前未顺利启动的实例ID,若全部实例均已启动,则返回;
步骤3-2,告知用户未启动的实例数量,询问是否继续等待一定周期(如10s),若是则返回步骤3-1 ;
步骤3-3,终止未启动成功的实例,并再次启动相应数量的新实例,返回步骤3-1 ;
步骤4,为启动实例添加相应标签,以区分主实例与其它子实例;
步骤5,收集主实例的公有链接地址,以及所有实例的私有IP地址;
步骤6,初始化主实例,并上传所收集到的实例私有IP地址信息,具体方法为:
步骤6-1,查看此实例的初始化标记,若存在则说明此实例已用于其它集群,则返回失败信息,否则将收集到的实例私有IP地址上传至主实例;
步骤6-2,查看当前是否为主实例,否则进入步骤6-5-1 ;
步骤6-3,根据主子实例的私有IP地址,修改并行处理系统的所有相关配置文件,然后将所有配置文件封装并进行压缩;
步骤6-4,将封装后的配置文件并行传输至所有参与此集群的子实例中;
步骤6-5,标记主实例初始化完成,初始化所有子实例,待全部完成后结束部署。这一过程通过并发进程的方式完成,以便加快整体部署的效率,具体包含两个步骤:
步骤6-5-1,子实例检测是否已被初始化,若是则返回步骤6-5 ;
步骤6-5-2,待接收到步骤6-4传输的封装配置文件后,解压缩至相应路径,并标记此子实例初始化完成并返回步骤6-5。
[0010]以上
【发明内容】
中所述的EC2命令行工具是指由AWS EC2服务提供的,通过文本命令方式来运行服务的脚本;
所述的账户私有密钥是指用于辨别AWS用户的惟一标识,以此来启动并计价所使用的服务资源;
所述的公有链接地址是指用于从外部网络访问所创建实例时需要的网络地址,而私有IP地址则是指实例被分配到的用于从内部网络进行访问的惟一 IP地址;
所述的EC2实例是指由AWS EC2服务所提供的虚拟计算平台,每个实例具有物理计算机的基本特征,包含若干处理器单元,内存与外存设备,以及网络接口,实例的硬件计算资源的多少取决于实例的类型,并由此决定实例租用的单位时间价格;
所述的AMI (Amazon Machine Image亚马逊机器镜像)是指实例的软件资源,包括操作系统,预安装软件,系统位数等,镜像通过惟一的ID标识加以区别,AWS官方以及普通用户均可提供公开的镜像资源;所述的实例标签是指用于区别不同实例角色的文本描述,同一实例可拥有多个标签,而不同的实例也可标记相同的标签内容;所述的主子实例是指利用实例标签来区分基于Hadoop平台的并行处理系统中实例的不同角色,包含一个主实例与若干子实例,主实例亦可被用作一个子实例;所述的数据中心是指用于提供AWS服务的,包含大量物理计算资源的设备中心,分布在全球不同区域,用户可自行挑选某个数据中心来使用;所述的防火墙规则是指由用户自行设定的,维护实例使用安全的路由规则,包括开放的网络端口和对应的IP地址段。
[0011]本发明采用上述技术方案,具有以下有益效果:
1、通过阶段性的检测与及交互提示,从而可以在短时间内申请大规模可运行的EC2实例来建立所需要的计算机集群系统。
[0012]2、在实例创建过程中,收集所有相关实例的私有IP地址,并通过添加对应标签的方法对主子实例进行区分。
[0013]3、通过主实例一次性配置完成后,以并行方式借由数据中心内部网络对所有子实例进行初始化,保证了部署的效率。
[0014]
【专利附图】
【附图说明】
[0015]图1为面向AWS平台的并行系统快速部署方法基本流程图。
[0016]图2为实例初始过程流程图。
【具体实施方式】
[0017]下面结合附图对发明的技术方案进行详细说明:
利用面向AWS平台的快速部署方法进行基于Hadoop平台的并行处理系统的最小对象为一个包含有Hadoop系统文件以及初始化脚本的AMI,一个可以有效申请EC2实例的Amazon账号,以及一台设置有EC2命令行工具的可联网的计算机设备。
[0018]按照图1所示的流程图,实现面向AWS平台的快速并行平台的部署方法,包括以下步骤:
步骤1,检测当前计算机系统内是否准备有EC2命令行工具,工具均为可执行的系统脚本,以“ec2_”为命名前缀,也可通过命令如“ec2-describe_reg1ns”来进行实地验证,此命令用于打印所有可用的EC2数据中心名称;检测当前计算机内是否存在AWS EC2账户私有密钥,如不存在,则可通过访问EC2图形化网页界面来获取;
步骤2,设置启动EC2实例的参数,包括实例数量、类型,AMI ID,主子实例的标签名,数据中心的名称,防火墙规则等;此处可以设置实例数量为50,主实例标签为master,而子实例标签为slaves,AMI ID则设置为事前准备好的包含有所需软件资源AMI的ID编号,数据中心通常默认设置为处于美国弗吉尼亚州的数据中心编号us-east-la,类型可设置为m3, large,S卩每台实例含有两颗Intel Xeon 2.5GHz处理器,7.5GB内存与32GB SSD外存设备,防火墙规则通常打开所有Hadoop平台运行过程所需要的网络端口,而账户私有密钥可通过设置环境变化或给予绝对路径的方式来指定;在所有参数设置完毕后,利用EC2命令行工具中的“ec2-run-1nstances”命令来启动所需要的实例;
步骤3,等待并确保所有实例启动成功,具体方法为:
步骤3-1,利用EC2命令行工具中的“ec2-describe-1nstances”命令来检测所有需要启动的实例状态,若其“instance-state-name”条件不为“running”,则说明此实例未能正常启动;统计未顺利启动的实例ID,若全部实例均已启动,则返回;
步骤3-2,告知用户未启动的实例数量,询问是否继续等待一定周期(如10s),若是则返回步骤3-1 ;
步骤3-3,利用EC2命令行工具中的“ec2-terminate_instances”命令来终止未启动成功的实例,并再次利用EC2命令行工具中的“ec2-run-1nstances”命令启动相应数量的新实例,并返回步骤3-1继续等待;
步骤4,利用EC2命令行工具中的“ec2-create-tags”命令来为启动实例添加相应标签,以区分主实例与其它子实例;其中,最先启动的实例被视为主实例,并将其Name标签设置为master,而其它实例的Name标签则均被设置为slaves ;
步骤5,利用EC2命令行工具中的“ec2-describe-1nstances”命令获取主实例的状态信息,并从返回值中的第16列字符得到其公有链接地址;所有实例的私有实例的私有IP地址也可通过读取“ec2-describe_instances”命令返回值的第17列内容来获取;
步骤6,如图2所示,初始化主实例,并上传所收集到的实例私有IP地址信息,具体方法为:
步骤6-1,在AMI所封装的软件系统内,其启动脚本包含实例初始化功能的触发指令,当实例启动并被远程连接时,初始化过程被触发;为避免重复进行初始化过程,方法利用一个临时文件作为系统初始化标记,当初始化结束后则此文件被创建,而在下次实例被连接时,由于此文件的存在,则说明此实例已被初始化或者已用于其它集群,因此返回失败信息;在主实例被初始化前,所有收集到的实例私有IP地址被上传,以便进行下一步过程;步骤6-2,通过查看自身的Name标签来确定当前计算机是否为主实例,否则进入步骤6-5-1 ;
步骤6-3,根据收集到的实例私有IP地址,修改并行处理系统的所有相关配置文件,如masters、slaves、core-site.xml等,然后将所有配置文件封装并进行压缩;
步骤6-4,将封装后的配置文件并行传输至所有参与此集群的子实例中;
步骤6-5,标记主实例初始化完成,初始化所有子实例,待全部完成后结束部署。这一过程通过并发进程的方式完成,以便加快整体部署的效率。子实例的初始化具体包含两个步骤:
步骤6-5-1,子实例检测是否已被初始化,若是则返回步骤6-5 ;
步骤6-5-2,待接收到步骤6-4传输的封装配置文件后,解压缩至相应路径,并标记此子实例初始化完成并返回步骤6-5。
【权利要求】
1.一种面向AWS平台的并行系统快速部署方法,其特征在于利用外部初始化脚本来构建大规模且稳定的计算机集群系统,包括如下步骤: 步骤1,检测当前系统具有构建与控制AWS EC2计算机集群的必要条件,待设置必要参数后,利用具备内部初始化脚本的系统镜像,启动所有实例; 步骤2,等待并确保所有实例启动成功; 步骤3,为启动实例添加相应标签,以区分主实例与其它子实例,并收集主实例的公有链接地址,以及所有实例的私有IP地址; 步骤4,利用系统内置的初始化脚本完成所有实例的初始化过程。
2.根据权利要求1所述的一种面向AWS平台的并行系统快速部署方法,其特征在于步骤2的实例启动及等待过程,具体步骤为: 步骤2-1,周期性检测并收集未顺利启动的实例ID,若全部实例均已启动,则返回; 步骤2-2,告知用户未启动的实例数量,由用户自行决定是否继续等待一定周期,若是则返回步骤2-1 ; 步骤2-3,若用户决定不再等待,则终止未启动成功的实例,并再次启动相应数量的新实例,返回步骤2-1。
3.根据权利要求1所述的一种面向AWS平台的并行系统快速部署方法,其特征在于步骤4的利用预设于系统镜像内部的初始化脚本完成实例初始化过程,具体步骤为: 步骤4-1,查看此实例的初始化标记,并将收集到的实例私有IP地址上传至主实例; 步骤4-2,查看当前是否为主实例,否则进入步骤4-5-1 ; 步骤4-3,根据主子实例的私有IP地址,修改并行处理系统的所有相关配置文件,然后将所有配置文件封装并进行压缩; 步骤4-4,将封装后的配置文件并行传输至所有参与此集群的子实例中; 步骤4-5,标记主实例初始化完成,初始化所有子实例,待全部完成后结束部署;这一过程通过并发进程的方式完成,以便加快整体部署的效率。
4.根据权利要求1所述的一种面向AWS平台的并行系统快速部署方法,其特征在于步骤4-5利用预设于系统镜像内部的初始化脚本完成子实例初始化过程,具体步骤为: 步骤4-5-1,实例检测是否已被初始化,若是则返回; 步骤4-5-2,待接收到步骤4-4传输的封装配置文件后,解压缩至相应路径,并标记此子实例初始化完成并返回步骤4-5。
5.根据权利要求1所述的主实例是指由Hadoop系统指定为主计算机的AWSEC2实例,所述的子实例是指由Hadoop系统指定为子计算机的AWS EC2实例。
【文档编号】G06F9/44GK104243563SQ201410444527
【公开日】2014年12月24日 申请日期:2014年9月3日 优先权日:2014年9月3日
【发明者】陆佳民, 冯钧 申请人:河海大学