本发明涉及一种license检测方法,具体涉及一种基于ambari心跳机制实现license检测功能的方法。
背景技术:
apacheambari是一种基于web的工具,支持apachehadoop集群的供应、管理和监控。ambari已支持大多数hadoop组件,包括hdfs、mapreduce、hive、pig、zookeper、sqoop等,而我们的产品是基于这些组件才能正常运行,所以我们将产品以插件化的形式加入到ambari集群,作为集群中的一个服务。作为一个商用产品,license功能是必不可少的,不管是大数据平台还是产品的web界面都是需要导入证书才可以正常使用。此发明很好的利用ambari平台自身的特性实现了此功能。
目前在中国流行的是apachehadoop,clouderacdh,当然hortonworks也有用的;
由于apache社区版的hadoop在面对企业级的应用时存在稳定性、可靠性、性能、易用性等方面的限制,许多公司都对其进行了“二次包装”,这些公司被称为hadoop商业发行版提供商。
大浪淘沙,自从10+年前(2006年)hadoop诞生到2017年为止,这一市场已被几大公司瓜分,国外比较著名的提供商有cloudera、mapr、hortonworks、ibm、amazon等,国内比较著名的提供商有华为、星环科技等。这里面,目前只有cloudera和hortonworks两家国外公司有提供不收费的hadoop商业发行版,分别叫做cloudera’sdistributionincludingapachehadoop(简称“cdh”)和hortonworksdataplatform(简称“hdp”)。这两家公司也都提供了相应的集群管理、部署、监控的工具,分别是clouderamanager和ambari。
apacheambari是一个基于web的工具,用于配置、管理和监视apachehadoop集群,支持hadoophdfs、hadoopmapreduce、hive、hcatalog,、hbase、zookeeper、oozie、pig和sqoop。ambari同样还提供了集群状况仪表盘,比如heatmaps和查看mapreduce、pig、hive应用程序的能力,以友好的用户界面对它们的性能特性进行诊断。
因此,需要对现有技术进行改进。
技术实现要素:
本发明要解决的技术问题是提供一种高效的基于ambari心跳机制实现license检测功能的方法。
为解决上述技术问题,本发明提供一种基于ambari心跳机制实现license检测功能的方法,包括以下步骤:
1)、生成服务器机器码文件:执行步骤2;
2)、根据服务器机器码文件根据机器得到唯一的license证书文件;执行步骤3;
3)、根据服务器机器码文件编写脚本;执行步骤4;
4)、将步骤3得到的脚本加入到ambari心跳检测脚本,ambari每隔一段时间就会执行此脚本;执行步骤5;
5)、根据步骤4得到的ambari心跳检测脚本得到当前宿主机的机器码,与当前宿主机所在的license证书文件内容进行对比,从而得到返回结果;执行步骤6;
6)、如果返回结果为不通过,结束;
如果返回结果为通过,执行步骤7;
7)、跳转到ambari管理界面。
作为对本发明基于ambari心跳机制实现license检测功能的方法的改进:
步骤6包括:
如果返回结果为不通过,关闭ambari-server服务,此时大数据平台将无法打开,结束;
如果返回结果为通过,开启ambari-server服务,执行步骤7。
作为对本发明基于ambari心跳机制实现license检测功能的方法的进一步改进:
license证书文件包括机器码、部门标示、试用合同编号、试用客户名称、许可类型、服务名称和维保时间,维保时间包括试用许可维保期和试用合同起始时间。
作为对本发明基于ambari心跳机制实现license检测功能的方法的进一步改进:
在步骤6中,在以下情况下判断为返回结果不通过:
一、ambari心跳检测脚本得不到当前宿主机的机器码,不存在相应的当前宿主机所在的license证书文件,
二、当前宿主机的机器码中的日期不在license证书文件内容中的维保时间中;
三、当前宿主机的机器码中的客户信息与license证书文件内容中的客户信息不相同。
作为对本发明基于ambari心跳机制实现license检测功能的方法的进一步改进:
步骤1包括:
用c或c++写一个license校验和生成的工具;用于收集服务器各项硬件指标生成机器码,根据机器码做好许可,包含客户信息、许可类型(试用或合同)、维保时间(到期时间自动生成)、申请人、合同号、销售人员、自动生成申请日期。
作为对本发明基于ambari心跳机制实现license检测功能的方法的进一步改进:
在运行时候,在license证书文件中的到维保时间期前10天,产品页会界面提醒,许可10天之后到期,到期之后,针对试用许可,访问产品页面会跳到一个license过期页面,不允许再使用,但大数据各个组件能够正常服务,数据都能够接受处理,如果重启,大数据组件则不能够正常工作。
本发明基于ambari心跳机制实现license检测功能的方法的技术优势为:
1、不使用第三方license认证程序即可完成认证功能;
2、利用现有平台心跳机制可以完成实时的心跳检测;
3、认证过程逻辑清晰简单;
4、不需要在平台安装额外的软件。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明生成服务器机器码文件后启动license导入程序的流程示意图;
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。
实施例1、基于ambari心跳机制实现license检测功能的方法,如图1所示,包括以下步骤:
1)、生成服务器机器码文件:
用c或c++写一个license校验和生成的工具,用于收集服务器各项硬件指标生成机器码,在公司根据机器码做好的许可,包含客户信息、许可类型(试用或合同)、维保时间(到期时间自动生成)、申请人、合同号、销售人员、自动生成申请日期,导入的许可放入机器某个特定的目录,许可导入之前需要校验,主要校验,本地的机器码和上传的许可里的机器码是否一致,不一致,导入失败;一致,导入成功,导入成功则再根据当前服务器系统时间进行对比,到期后不会关闭服务,而是限制界面访问,未到期则启动ambari服务。
2)、后台启动license导入程序;
得到的机器码会跟根据机器得到唯一的license证书文件,且证书文件是加过密的。
license导入程序提供license导入功能,导入成功以后拉起ambari-server服务;
license证书文件包括机器码、部门标示、试用合同编号、试用客户名称、许可类型、服务名称和维保时间,维保时间包括试用许可维保期和试用合同起始时间。
3)、编写脚本;
编写脚本调用c或c++程序(步骤1得到的生成服务器机器码文件)获取当前宿主机机器码;
4)、加入ambari心跳检测脚本;
将步骤3得到的脚本加入到ambari心跳检测脚本,ambari每隔一分钟就会执行此脚本;
5)、机器码对比;
被调用的脚本会将当前宿主机的机器码与步骤2得到的当前宿主机所在的license证书文件内容进行对比,从而得到返回结果;
6)、返回结果判断;
6.1)、结果会有以下几种情况:
-3:读license证书文件出错;(ambari心跳检测脚本得不到当前宿主机的机器码,或者不存在相应的当前宿主机所在的license证书文件)
-2:过期;(不在维保时间,即为:当前宿主机的机器码中的日期不在license证书文件内容中的维保时间中)
-1:产品名称不对;(客户信息不符合,即为:当前宿主机的机器码中的客户信息与license证书文件内容中的客户信息不相同)
0:机器码不对;(当前宿主机的机器码中的机器码与license证书文件内容中的机器码不相同)
1:check通过;
返回值为-3-10的情况下会直接关闭ambari-server服务,这个时候就会通过nginx的主备配置跳转到licnese导入界面,主为ambari-server的web界面,备为license程序界面,过期则限制web界面访问,1则正常访问。
6.2)、根据返回的值进行判断,如果是-3、-2、-1、0的情况(check不通过)下将调用命令关闭ambari-server服务,此时大数据平台将无法打开,结束;
6.3)、如果返回值为1(check通过)则调用ambari命令开启ambari-server服务,默认没有导入许可证的情况下,ambari-server是关闭的,并且执行步骤7。
许可证是根据机器码制作而成且包含合同号到期时间等,且证书内容包含如下内容:
机器码(待填)
checkinfo.mac=ea0d333a8399386ecd45833567645bf4
部门标示(固定)
checkinfo.hdtype=ailpha
试用合同编号(待转unicode填)
checkinfo.no=\u48\u32\u30\u31\u39\u30\u34\u33\u32\u32\u37\u8bd5
试用客户名称(待转unicode填)
checkinfo.client=\u901a\u5e02\u5927\u6570\u636e\u5c40
许可类型:试用(可以改)
checkinfo.type=\u8bd5\u7528
服务名称(可以修改)
checkinfo.name=\u41\u49\u56\u49\u45\u57\u2e\u41\u69\u4c\u50\u48\u41\u5927\u6570\u636e\u667a\u80fd\u5b89\u5168\u5206\u6790\u5e73\u53f0
试用许可维保期:3个月(可以改)
checkinfo.month=3
试用合同起始时间:当前时间(待算)
checkinfo.duration=2019-03-15
节点数量(待填)
checkinfo.total_nodes=2
7)、返回值为1的情况下会执行步骤7,跳转到ambari管理界面;
即可正常访问ambari大数据平台界面,可以正常开关大数据组件。
8)、在运行时候,如果license到期:
在license到期前10天,产品页会界面提醒,许可10天之后到期,到期之后,针对试用许可,访问产品页面会跳到一个license过期页面,不允许再使用,但大数据各个组件能够正常服务,数据都能够接受处理,如果重启,大数据组件则不能够正常工作;
针对合同用户,不存在到期,只有是否在维保时间内,但界面会有醒目提醒。
如图1所示,所述一种基于ambari心跳检测机制实现license检测功能的方法具体包括以下步骤:
a)获取license文件所在宿主机机器码。
command:./securityclientmachine_code
return:string
b)使用c++程序读取license内容。
c)对比机器码:
c1、脚本获取返回值。
result1=`ssh-o″stricthostkeycheckingno″master
c2、根据返回值进行对应的操作
d1、关闭或者开启ambari-server。
amabri-serverstart
ambari-serverstop
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。