本发明涉及计算机软件应用领域,特别是涉及一种基于gorouter的软件负载均衡实现方法及装置。
背景技术:
cloudfoundry平台是开源的paas平台,提供应用的打包、部署、访问管理功能,包括多开发语言,多应用运行环境,外部服务接入等功能,越来越多的企业开始在私有云环境部署cloudfoundry平台,实现企业内部的devops。但当应用无法部署到cloudfoundry平台时,用户就不能进行应用访问地址统一管理和应用负载均衡的问题,虽然在出现用户的应用与平台不兼容的问题时,可以考虑使用其他负载均衡软件完成应用的负载均衡,但这样增加系统的维护成本。亟须一种方法,解决当应用无法部署到cloudfoundry平台时,仍然可以进行应用访问地址统一管理和应用负载均衡的问题。
技术实现要素:
针对上述技术问题,本发明提供了一种备份及时,备份效果好的基于gorouter的软件负载均衡实现方法及装置。
为实现上述目的,本发明采用以下技术解决方案:
一种基于gorouter的软件负载均衡实现方法,包括以下步骤:
将获取应用的各个实例的注册信息注册到dea组件;
通过界面将应用的各个实例的访问地址、健康检查地址和访问域名注册到gorouter;
gorouter将应用的各个实例的访问地址、健康检查地址和访问域名保存到dea组件中;
dea组件周期调用应用的各个实例的健康检查地址,确认能够访问应用的各个实例,当应用的各个实例不能访问时,将应用的各个实例的访问地址、健康检查地址和访问域名从gorouter删除;
当不能访问的实例的健康检查地址恢复正常后,dea组件将各个实例的访问地址、健康检查地址和访问域名再次注册到gorouter。
进一步地,在将获取应用的各个实例的注册信息注册到dea组件之前,还包括:定义应用的域名,分别获取应用的各个实例的注册信息。
进一步地,所述的界面为cloudfoundry平台的界面。
进一步地,所述的注册信息包括:ip地址和端口,以及每个实例对应的健康检查地址。
进一步地,所述的调用应用的健康检查地址,包括:通过健康检查地址检查该实例是否可以正常访问,若可以正常访问,即为该实例分配访问域名,若不可以正常访问,则不为该实例分配访问域名。
进一步地,所述的应用包括cloudfoundry平台外部应用和cloudfoundry平台内部应用。
进一步地,所述的能够访问应用的各个实例,包括:用户可以根据访问域名访问与该访问域名对应的应用的一个实例。
基于上述的一种基于gorouter的软件负载均衡实现方法的一种基于gorouter的软件负载均衡实现装置,包括:
第一注册模块,用于将获取应用的各个实例的注册信息注册到dea组件;
更新模块,用于通过界面将应用的各个实例的访问地址、健康检查地址和访问域名注册到gorouter;
保存模块,用于gorouter将应用的各个实例的访问地址、健康检查地址和访问域名保存到dea组件中;
确认模块,用于dea组件周期调用应用的各个实例的健康检查地址,确认应用的各个实例能够访问,当应用的各个实例不能访问时,将各个实例的访问地址、健康检查地址和访问域名从gorouter删除;
第二注册模块,用于当不能访问的实例恢复正常后,dea组件将各个实例的访问地址、健康检查地址和访问域名再次注册到gorouter。
进一步地,还包括:
定义模块,用于定义应用的域名,分别获取应用的各个实例的注册信息。
与现有技术相比,本发明一种基于gorouter的软件负载均衡实现方法及装置具有以下有益效果:
本发明利用cloudfoundry平台中的开源组件gorouter,将无法部署到平台的应用通过构造dea组件,将应用注册到cloudfoundry平台,解决了当应用无法部署到cloudfoundry平台时,仍然可以进行应用访问地址统一管理和应用负载均衡的问题,避免了由于用户的应用与平台不兼容的问题时,考虑使用其他负载均衡软件增加系统维护成本的问题,降低了平台成本,降低了平台的运维管理难度,并且具有很好的扩展性。
附图说明
图1是本发明一种基于gorouter的软件负载均衡实现方法的流程示意图之一。
图2是本发明一种基于gorouter的软件负载均衡实现方法的流程示意图之二。
图3是本发明一种基于gorouter的软件负载均衡实现装置的结构示意图之一。
图4是本发明一种基于gorouter的软件负载均衡实现装置的结构示意图之二。
具体实施方式
下面对本发明中涉及到的一些技术词语进行解释:
gorouter,作用分为三个部分:负责接收cloudfoundry内部组件及应用uri注册以及注销的请求,负责转发所有外部对cloudfoundry的访问请求,负责提供gorouter作为一个组件的状态监控。
dea,英文全称为dropletexecutionagent,作用分为两个部分,一是运行所有的应用,二是监控所有的应用,是app的运行环境,一台虚拟机上会运行一个或多个dea。一个dea可以启动多个app。
router,整个平台的流量入口,负责分发所有的请求到对应的组件,包括来自外部用户对app的请求和平台内部的管理请求。
负载均衡,英文名称为loadbalance,其意思就是分摊到多个操作单元上进行执行,例如web服务器、ftp服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
健康检查地址,查询被选定的网络服务的地址,并在执行自身系统“构造”之前,告知系统管理员相关网络服务的可用性问题。
下面结合附图和具体实施方式对本发明一种基于gorouter的软件负载均衡实现方法及装置作进一步说明:
实施例1
如图1所示,一种基于gorouter的软件负载均衡实现方法,包括以下步骤:
步骤s101:将获取应用的各个实例的注册信息注册到dea组件;
步骤s102:通过界面将应用的各个实例的访问地址、健康检查地址和访问域名注册到gorouter;
步骤s103:gorouter将应用的各个实例的访问地址、健康检查地址和访问域名保存到dea组件中;
步骤s104:dea组件周期调用应用的各个实例的健康检查地址,确认能够访问应用的各个实例,当应用的各个实例不能访问时,将应用的各个实例的访问地址、健康检查地址和访问域名从gorouter删除;
步骤s105:当不能访问的实例的健康检查地址恢复正常后,dea组件将各个实例的访问地址、健康检查地址和访问域名再次注册到gorouter。
实施例2
如图2所示,一种基于gorouter的软件负载均衡实现方法,包括以下步骤:
步骤s201:定义平台外部应用和平台内部应用的域名,分别获取平台外部应用和平台内部应用的各个实例的ip地址和端口,以及每个实例对应的健康检查地址;
步骤s202:将获取应用的各个实例的ip地址和端口,以及每个实例对应的健康检查地址注册到dea组件;
步骤s203:通过cloudfoundry平台的界面将平台外部应用和平台内部应用的访问地址、健康检查地址和访问域名注册到gorouter;
步骤s204:gorouter将平台外部应用和平台内部应用的访问地址、健康检查地址和访问域名保存到dea组件中;
步骤s205:dea组件周期调用应用的各个实例的健康检查地址,确认用户可以根据访问域名访问与该访问域名对应的应用的一个实例,当平台外部应用和平台内部应用的各个实例不可以根据访问域名访问与该访问域名对应的应用的一个实例时,将应用的各个实例的访问地址、健康检查地址和访问域名从gorouter删除;
步骤s206:当不能访问的实例恢复正常后,dea组件将平台外部应用和平台内部各个实例的访问地址、健康检查地址和访问域名再次注册到gorouter。
作为一种实施方式,所述的平台为cloudfoundry平台。
实施例3
如图3所示,一种基于gorouter的软件负载均衡实现装置,包括:第一注册模块301依次连接更新模块302、保存模块303、确认模块304和第二注册模块305。
第一注册模块301,用于将获取应用的各个实例的注册信息注册到dea组件;更新模块302,用于通过界面将应用的各个实例的访问地址、健康检查地址和访问域名注册到gorouter;保存模块303,用于gorouter将应用的各个实例的访问地址、健康检查地址和访问域名保存到dea组件中;确认模块304,用于dea组件周期调用应用的各个实例的健康检查地址,确认应用的各个实例能够访问,当应用的各个实例不能访问时,将各个实例的访问地址、健康检查地址和访问域名从gorouter删除;第二注册模块305,用于当不能访问的实例恢复正常后,dea组件将各个实例的访问地址、健康检查地址和访问域名再次注册到gorouter。
实施例4
如图4所示,一种基于gorouter的软件负载均衡实现装置,包括:定义模块401依次连接第一注册模块402、更新模块403、保存模块404、确认模块405和第二注册模块406。
定义模块401,用于定义应用的域名,分别获取应用的各个实例的注册信息;第一注册模块402,用于将获取应用的各个实例的注册信息注册到dea组件;更新模块403,用于通过界面将应用的各个实例的访问地址、健康检查地址和访问域名注册到gorouter;保存模块404,用于gorouter将应用的各个实例的访问地址、健康检查地址和访问域名保存到dea组件中;确认模块405,用于dea组件周期调用应用的各个实例的健康检查地址,确认应用的各个实例能够访问,当应用的各个实例不能访问时,将各个实例的访问地址、健康检查地址和访问域名从gorouter删除;第二注册模块406,用于当不能访问的实例恢复正常后,dea组件将各个实例的访问地址、健康检查地址和访问域名再次注册到gorouter。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。