CN110049081A - 用于搭建及使用高可用性Docker私库的方法和系统 - Google Patents
用于搭建及使用高可用性Docker私库的方法和系统 Download PDFInfo
- Publication number
- CN110049081A CN110049081A CN201810044618.6A CN201810044618A CN110049081A CN 110049081 A CN110049081 A CN 110049081A CN 201810044618 A CN201810044618 A CN 201810044618A CN 110049081 A CN110049081 A CN 110049081A
- Authority
- CN
- China
- Prior art keywords
- harbor
- access request
- service
- proxy service
- primary proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及用于搭建及使用高可用性Docker私库的方法和系统,该方法包括设定代理服务,将若干个独立的Harbor实例纳入一个集群管理;部署多个代理服务组成相应的代理集群;获取访问请求;将访问请求通过统一的虚拟IP访问代理集群的主代理服务;每个主代理服务根据转发技术以及访问请求访问每个Harbor实例。本发明在Harbor实例或主代理服务出故障,切换可用的Harbor实例或重选主代理服务,确保Docker私库持续为用户提供服务,利用两种转发技术以及四种转发规则,将访问请求转发至Harbor实例,实现Docker私库的高可用性,减少系统负载,易于维护系统,能满足生产环境对Docker私库的需要。
Description
技术领域
本发明涉及Docker私库,更具体地说是指用于搭建及使用高可用性Docker私库的方法和系统。
背景技术
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、OpenStack集群和其他的基础应用平台。Docker技术就是基于容器的虚拟化技术,相对于其它虚拟化技术,它具备轻量级、快速就绪以及隔离性三大优点,单机可以轻松支持上百Container,让各种个位数虚拟化的方案相形见绌;一秒以内启动,即使是以资源快速就绪著称的青云IAAS也无法相比;Docker能够确保每个容器都拥有自己的资源,并且和其他容器是隔离的。
而随着互联网与云计算的不断发展,Docker应用范围也越来越广泛。但企业使用Docker时,都必不可少的需要使用Docker仓库以用于镜像的上传与下载等操作,而目前Docker提供两种仓库方式:一是公共仓库,二是私有仓库。目前Docker官方维护了一个公共仓库Docker Hub,其中已经包括了超过15,000的镜像。大部分需求都可以通过在DockerHub中直接下载镜像来实现,但访问公共仓库存在浪费网络带宽,数据不安全的问题。为了解决公共仓库所存在的网络带宽,数据安全的问题,企业一般都会在公司内部搭建自用的Docker私有仓库,以用于Docker镜像的保存与下载等操作。
而目前搭建的私有仓库常规方案有以下三种:一是使用官方提供的DockerRegistry工具搭建Docker私库,该工具只提供基本的镜像保存与下载等镜像操作,不仅没有提供相应的用户管理界面,增加了用户操作的难度,同时也没有提供保持服务正常运行的高可用能力,即当软件故障或承载该服务的机器宕机时,就无法向用户提供服务;二是使用VMware公司开源的Harbor项目搭建Docker私库,Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括管理用户界面、基于角色的访问控制、AD/LDAP集成以及审计日志等,然而其自身也没有提供服务正常运行的高可用保证,当软件故障或承载该服务的机器宕机时,无法向用户继续提供服务;三是使用kubernetes来管理Docker-registry,使用该方案虽然满足了生产环境下对Docker仓库的高可用要求,但其前提是搭建一整套kubernetes集群环境,其涉及比较多的组件,如etcd、flanned等,而这些涉及的多个组件与Docker私库功能并无关系,不仅加大了系统的复杂性,也必然大大加重系统的负载,增加系统维护难度。
因此,有必要设计一种用于搭建及使用高可用性Docker私库的方法,实现Docker私库的高可用性,减少系统的负载,易于维护系统,且能很好地满足生产环境对Docker私库的需要。
发明内容
本发明的目的在于克服现有技术的缺陷,提供用于搭建及使用高可用性Docker私库的方法和系统。
为实现上述目的,本发明采用以下技术方案:用于搭建及使用高可用性Docker私库的方法,所述方法包括:
设定代理服务,将若干个独立的Harbor实例纳入一个集群管理;
部署多个代理服务组成相应的代理集群;
获取访问请求;
将访问请求通过统一的虚拟IP访问代理集群的主代理服务;
每个主代理服务根据转发技术以及访问请求访问每个Harbor实例。
其进一步技术方案为:每个主代理服务根据转发技术以及访问请求访问每个Harbor实例的步骤,包括以下具体步骤:
判断主代理服务是否可用;
若否,则从备份代理服务内随机挑选出新的主代理服务,并将虚拟IP指向新的主代理服务,并进入下一步骤,若是,则直接进入下一步骤;
判断Harbor实例是否不可用;
若是,则删除不可用的Harbor实例,并进入下一步骤,若否,则进入下一步骤;
利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例。
其进一步技术方案为:删除不可用的Harbor实例的步骤,包括以下具体步骤:
识别不可用的Harbor实例;
从Harbor可用实例列表中删除不可用的Harbor实例的相应记录。
其进一步技术方案为:利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例的步骤,包括以下具体步骤:
判断转发技术是否为四层转发技术;
若是,则根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例;
若否,则解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例。
其进一步技术方案为:根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例的步骤中,所述转发规则包括轮询转发规则、随机转发规则以及源地址散列转发规则中至少一种。
其进一步技术方案为:解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例的步骤,所述转发规则包括轮询转发规则、随机转发规则、源地址散列转发规则以及按请求内容转发规则中至少一种。
本发明还提供了用于搭建及使用高可用性Docker私库的系统,包括集群管理设立单元、部署单元、请求获取单元、服务访问单元以及实例访问单元;
所述集群管理设立单元,用于设定代理服务,将若干个独立的Harbor实例纳入一个集群管理;
所述部署单元,用于部署多个代理服务组成相应的代理集群;
所述请求获取单元,用于获取访问请求;
所述服务访问单元,用于将访问请求通过统一的虚拟IP访问代理集群的主代理服务;
所述实例访问单元,用于每个主代理服务根据转发技术以及访问请求访问每个Harbor实例。
其进一步技术方案为:所述实例访问单元包括服务可用判断模块、挑选模块、实例可用判断模块、删除模块以及转发模块;
所述服务可用判断模块,用于判断主代理服务是否可用;
所述挑选模块,用于若否,则从备份代理服务内随机挑选出新的主代理服务,并将虚拟IP指向新的主代理服务;
所述实例可用判断模块,用于判断Harbor实例是否不可用;
所述删除模块,用于若是,则删除不可用的Harbor实例;
所述转发模块,用于利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例。
其进一步技术方案为:所述删除模块包括识别子模块以及记录删除子模块;
所述识别子模块,用于识别不可用的Harbor实例;
所述记录删除子模块,用于从Harbor可用实例列表中删除不可用的Harbor实例的相应记录。
其进一步技术方案为:所述转发模块包括转发判断子模块、四层转发处理子模块以及七层转发处理子模块;
所述转发判断子模块,用于判断转发技术是否为四层转发技术;
所述四层转发处理子模块,用于若是,则根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例;
所述七层转发处理子模块,用于若否,则解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例。
本发明与现有技术相比的有益效果是:本发明的用于搭建及使用高可用性Docker私库的方法,通过设定代理服务,将若干个Harbor实例纳入一个集群管理,并部署代理服务形成代理集群,并由虚拟IP指向代理集群内的主代理服务,在Harbor实例还是主代理服务出故障,切换可用的Harbor实例或者重选主代理服务,以确保Docker私库持续为用户提供服务,利用两种转发技术以及四种转发规则,将访问请求转发至Harbor实例,实现Docker私库的高可用性,减少系统的负载,易于维护系统,且能很好地满足生产环境对Docker私库的需要。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为本发明具体实施例提供的用于搭建及使用高可用性Docker私库的方法的流程图;
图2为本发明具体实施例提供的每个主代理服务根据转发技术以及访问请求访问每个Harbor实例的流程图;
图3为本发明具体实施例提供的主代理服务删除不可用的Harbor实例的流程图;
图4为本发明具体实施例提供的主代理服务将用户请求转发至对应的可用Harbor实例的流程图;
图5为本发明具体实施例提供的四层转发技术的流程图;
图6为本发明具体实施例提供的七层转发技术的流程图;
图7为本发明具体实施例提供的用于搭建及使用高可用性Docker私库的系统的结构框图;
图8为本发明具体实施例提供的实例访问单元的结构框图;
图9为本发明具体实施例提供的删除模块的结构框图;
图10为本发明具体实施例提供的转发模块的结构框图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
如图1~10所示的具体实施例,本实施例提供的用于搭建及使用高可用性Docker私库的方法,可以运用在开源的引擎的仓库创建过程中,实现Docker私库的高可用性,减少系统的负载,易于维护系统,且能很好地满足生产环境对Docker私库的需要。
如图1所示,本实施例提供了用于搭建及使用高可用性Docker私库的方法,该方法包括:
S1、设定代理服务,将若干个独立的Harbor实例纳入一个集群管理;
S2、部署多个代理服务组成相应的代理集群;
S3、获取访问请求;
S4、将访问请求通过统一的虚拟IP访问代理集群的主代理服务;
S5、每个主代理服务根据转发技术以及访问请求访问每个Harbor实例。
对于上述的S1步骤至S2步骤,开发了一个代理服务将多个独立的Harbor实例纳入一个集群管理,部署多个代理服务可组成相应的代理集群,代理集群中的代理服务分为两种类型:主代理服务和备份代理服务,主代理服务只有一个,而备份代理服务可以多个,通过一个统一的VIP(虚拟IP)访问服务集群,IP指向的代理服务是当前的主代理服务。每个代理服务可根据转发规则访问每个Harbor实例,以实现满足生产环境下Docker私库高可用的要求。
对于上述的S3步骤,当用户访问Docker私库时,用户会发起SYN的访问请求。
对于上述的S4步骤,利用虚拟IP指向的主代理服务进行访问的转发,通过虚拟IP代理集群,为基于Harbor的Docker私库提供统一访问接口,实现高可用能力、防止单点失效。
更进一步地,在某些实施例中,上述的S5步骤,每个主代理服务根据转发技术以及访问请求访问每个Harbor实例的步骤,包括以下具体步骤:
S51、判断主代理服务是否可用;
S52、若否,则从备份代理服务内随机挑选出新的主代理服务,并将虚拟IP指向新的主代理服务,并进入S53步骤,若是,则直接进入S53步骤;
S53、判断Harbor实例是否不可用;
S54、若是,则删除不可用的Harbor实例,并进入S55步骤,若否,则进入S55步骤;
S55、利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例。
具体地,当主代理服务和Harbor实例均正常可用的情况下,当用户访问Docker私库时,用户的访问请求通过虚拟IP发送给代理集群,由于虚拟IP指向主代理服务,当前的主代理服务会收到用户请求,并根据用户设定的转发规则把用户请求转发到相应的Harbor实例,从而完成对Docker私库的访问。
对于上述的S51步骤至S52步骤,当主代理服务由于故障或机器宕机导致不可用时,代理集群从备份代理服务中随机挑选出新的主代理服务,虚拟IP指向新的主代理服务,继续为用户提供服务,保证了Docker私库的高可用性。即当主代理服务出故障时,虚拟IP自动切换到一个随机选择的可用备份代理服务,使该代理服务的角色由备份变成主角,也保障Proxy服务的高可用性。
更进一步地,在某些实施例中,对于上述的S54步骤,删除不可用的Harbor实例的步骤,包括以下具体步骤:
S541、识别不可用的Harbor实例;
S542、从Harbor可用实例列表中删除不可用的Harbor实例的相应记录。
对于上述的S541步骤至S542步骤,当一个或多个独立的Harbor实例由于故障或所在机器宕机导致不可用时,代理集群里的所有代理服务都能自动检测和识别到不可用的Harbor实例,并从存储的可用实例列表中把相应不可用Harbor实例的记录删除,当用户访问私库时,主代理服务就会根据转发规则访问可用Harbor实例中的一台,保证每次请求都能转发到可用的Harbor实例,持续为用户提供Docker私库服务,从而保证了Docker私库的高可用性。
由上述的S51步骤至S55步骤,可知不管是Harbor实例还是主代理服务出故障,该方法都能确保Docker私库持续为用户提供服务,从而保证了Docker私库的高可用性,满足了生产环境对Docker私库的要求,为企业生产环境上使用Docker提供了保证。
另外,在某些实施例中,上述的S55步骤,利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例的步骤,包括以下具体步骤:
S551、判断转发技术是否为四层转发技术;
S552、若是,则根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例;
S553、若否,则解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例。
在任何时候只有一个主代理服务工作,它将收到的用户请求按照转发规则从当前可用的Harbor实例中选出一个承载本次用户访问请求,并将用户访问请求转发给该Harbor实例完成具体工作,在有多个可用Harbor实例的情况下,主代理服务可根据转发规则将多个用户访问请求转发给多个Harbor实例同时处理,在保障高可用能力的基础上,还能提供负载均衡的功能。
上述提及的转发技术包括四层转发技术与七层转发技术,即该代理服务能同时支持四层与七层的转发功能,适应不同场景下高可用与负载均衡的需要。
对于上述的S552步骤,具体是依据四层转发技术对访问请求进行转发,而四层就是ISO参考模型中的第四层。四层转发技术主要是通过分析IP层及TCP/UDP层的流量实现的基于IP加端口的转发,以常见的TCP应用为例,主代理服务在接收到第一个来自用户的SYN请求时,会通过设定的转发规则选择一个最佳的Harbor实例,同时将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,直接转发给该Harbor实例,这样一个用户请求就转发完成了。从这个过程来看,一个TCP连接是用户和Harbor实例直接建立的,而Proxy服务只不过完成了一个类似路由器的转发动作。在某些转发策略中,为保证Harbor实例返回的报文可以正确传递给Proxy服务,在转发报文的同时可能还会对报文原来的源地址进行修改,整个过程如图5所示。
对于上述的S553步骤,具体是采用七层转发技术对用户的访问请求进行转发,而代理服务的七层转发技术位于OSI的应用层,应用于支持HTTP协议。应用该七层转发技术的代理服务可以解析用户请求,获取其中字段的取值,再根据转发规则来选择Harbor实例。例如,根据用户请求Docker镜像的名字、版本确定存储该镜像的Harbor实例,代理服务在这种情况下类似于一个代理服务器,整个过程图6所示。
由上可知,四层转发技术与七层转发技术可以满足不同的应用需求,而对于代理服务选择四层转发技术还是七层转发技术,具体由通过设置代理模式为TCP或Http对应开启四层或七层转发。四层转发技术的工作模式简单,负载性能高,所有Harbor实例都必须承载相同的业务,适用于轮询、随机转发、源地址散列转发规则,而七层转发技术的工作模式复杂,性能消耗高,但带来了更好的灵活度,可以规划来自不同应用系统的Docker镜像的存储位置,除了适用于轮询、随机转发、源地址散列转发规则之外,还能适用于按请求内容转发的规则。用户可根据真实环境的需要灵活选择使用四层转发技术或七层转发技术,确定转发技术以后,当用户访问Docker私库时,即可通过代理服务访问真正的Harbor提供的Docker私库。
具体地,上述的S552步骤,根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例的步骤中,转发规则包括轮询转发规则、随机转发规则以及源地址散列转发规则中至少一种。
上述的S553步骤,解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例的步骤,所述转发规则包括轮询转发规则、随机转发规则、源地址散列转发规则以及按请求内容转发规则中至少一种。
上述的轮询转发规则,具体是每一次来自用户的访问请求轮流分配给每个可用的Harbor实例,从1至N然后重新开始。此种转发规则适合于所有Harbor实例都有相同的软硬件配置并且平均服务请求相对均衡的情况。上述的随机转发具体是把来自用户的请求随机分配给一个Harbor实例。针对上述的源地址散列转发规则而言,具体是根据用户请求的来源IP地址,通过散列函数计算得到一个数值,用该数值对Harbor实例列表的大小进行取模运算,得到的结果便是处理该用户请求的Harbor实例序号,该转发规则来自同一IP地址的请求,当后端Harbor实例列表不变时,它每次都会映射到同一台Harbor实例进行访问。另外,对于按请求内容转发规则,则是将多个应用系统的Docker镜像按照用户规划的存储方案存储在不同的Harbor实例中,代理服务从用户请求中解析出所访问镜像所属应用系统的Harbor实例,并将请求转发到该实例。
另外,在某些实施例中,上述的方法还包括:当其中一个Harbor实例中的Docker私库新增了镜像或者删除了原有镜像,其余的所有Harbor实例也会同步新增或删除自身Docker私库中的相同镜像,以保证方案中所有Harbor实例中的Docker私库的数据一致性。
通过设计的代理服务,不仅保证了Docker私库的高可用性,而且涉及的组件比较少,对系统负载不高,满足了生产环境下对Docker私库的要求。
在本实施例中,上述的虚拟IP是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址,数据包被发送到虚拟IP地址,但是所有的数据还是经过真实的网络接口,虚拟IP大部分用于连接冗余;一个虚拟IP地址也可能在一台计算机或NIC发生故障时可用,交由另一个可选计算机或NIC响应连接。
上述的代理服务也称网络代理服务,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。上述的Harbor是由VMWare公司开源的容器镜像仓库。
上述的用于搭建及使用高可用性Docker私库的方法,通过设定代理服务,将若干个Harbor实例纳入一个集群管理,并部署代理服务形成代理集群,并由虚拟IP指向代理集群内的主代理服务,在Harbor实例还是主代理服务出故障,切换可用的Harbor实例或者重选主代理服务,以确保Docker私库持续为用户提供服务,利用两种转发技术以及四种转发规则,将访问请求转发至Harbor实例,实现Docker私库的高可用性,减少系统的负载,易于维护系统,且能很好地满足生产环境对Docker私库的需要。
如图7所示,本实施例还提供了用于搭建及使用高可用性Docker私库的系统,包括集群管理设立单元1、部署单元2、请求获取单元3、服务访问单元4以及实例访问单元5。
集群管理设立单元1,用于设定代理服务,将若干个独立的Harbor实例纳入一个集群管理。
部署单元2,用于部署多个代理服务组成相应的代理集群。
请求获取单元3,用于获取访问请求。
服务访问单元4,用于将访问请求通过统一的虚拟IP访问代理集群的主代理服务。
实例访问单元5,用于每个主代理服务根据转发技术以及访问请求访问每个Harbor实例。
对于上述的集群管理设立单元1以及部署单元2而言,开发了一个代理服务将多个独立的Harbor实例纳入一个集群管理,部署多个代理服务可组成相应的代理集群,代理集群中的代理服务分为两种类型:主代理服务和备份代理服务,主代理服务只有一个,而备份代理服务可以多个,通过一个统一的VIP(虚拟IP)访问服务集群,IP指向的代理服务是当前的主代理服务。每个代理服务可根据转发规则访问每个Harbor实例,以实现满足生产环境下Docker私库高可用的要求。
对于上述的请求获取单元3,当用户访问Docker私库时,用户会发起SYN的访问请求。
对于上述的服务访问单元4,利用虚拟IP指向的主代理服务进行访问的转发,通过虚拟IP代理集群,为基于Harbor的Docker私库提供统一访问接口,实现高可用能力、防止单点失效。
更进一步地,在某些实施例中,上述的实例访问单元5包括服务可用判断模块51、挑选模块52、实例可用判断模块53、删除模块54以及转发模块55。
服务可用判断模块51,用于判断主代理服务是否可用。
挑选模块52,用于若否,则从备份代理服务内随机挑选出新的主代理服务,并将虚拟IP指向新的主代理服务。
实例可用判断模块53,用于判断Harbor实例是否不可用。
删除模块54,用于若是,则主代理服务删除不可用的Harbor实例。
转发模块55,用于利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例。
具体地,当主代理服务和Harbor实例均正常可用的情况下,当用户访问Docker私库时,用户的访问请求通过虚拟IP发送给代理集群,由于虚拟IP指向主代理服务,当前的主代理服务会收到用户请求,并根据用户设定的转发规则把用户请求转发到相应的Harbor实例,从而完成对Docker私库的访问。
当主代理服务由于故障或机器宕机导致不可用时,代理集群从备份代理服务中随机挑选出新的主代理服务,虚拟IP指向新的主代理服务,继续为用户提供服务,保证了Docker私库的高可用性。即当主代理服务出故障时,虚拟IP自动切换到一个随机选择的可用备份代理服务,使该代理服务的角色由备份变成主角,也保障Proxy服务的高可用性。
另外,对于上述的删除模块54包括识别子模块541以及记录删除子模块542。
识别子模块541,用于识别不可用的Harbor实例;
记录删除子模块542,用于从Harbor可用实例列表中删除不可用的Harbor实例的相应记录。
当一个或多个独立的Harbor实例由于故障或所在机器宕机导致不可用时,代理集群里的所有代理服务都能自动检测和识别到不可用的Harbor实例,并从存储的可用实例列表中把相应不可用Harbor实例的记录删除,当用户访问私库时,主代理服务就会根据转发规则访问可用Harbor实例中的一台,保证每次请求都能转发到可用的Harbor实例,持续为用户提供Docker私库服务,从而保证了Docker私库的高可用性。
不管是Harbor实例还是主代理服务出故障,该方法都能确保Docker私库持续为用户提供服务,从而保证了Docker私库的高可用性,满足了生产环境对Docker私库的要求,为企业生产环境上使用Docker提供了保证。
另外,在某些实施例中,上述的转发模块55包括转发判断子模块551、四层转发处理子模块552以及七层转发处理子模块553。
转发判断子模块551,用于判断转发技术是否为四层转发技术。
四层转发处理子模块552,用于若是,则根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例。
七层转发处理子模块553,用于若否,则解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例。
在任何时候只有一个主代理服务工作,它将收到的用户请求按照转发规则从当前可用的Harbor实例中选出一个承载本次用户访问请求,并将用户访问请求转发给该Harbor实例完成具体工作,在有多个可用Harbor实例的情况下,主代理服务可根据转发规则将多个用户访问请求转发给多个Harbor实例同时处理,在保障高可用能力的基础上,还能提供负载均衡的功能。
上述提及的转发技术包括四层转发技术与七层转发技术,即该代理服务能同时支持四层与七层的转发功能,适应不同场景下高可用与负载均衡的需要。
对于上述的四层转发处理子模块552而言,四层就是ISO参考模型中的第四层。四层转发技术主要是通过分析IP层及TCP/UDP层的流量实现的基于IP加端口的转发,以常见的TCP应用为例,主代理服务在接收到第一个来自用户的SYN请求时,会通过设定的转发规则选择一个最佳的Harbor实例,同时将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,直接转发给该Harbor实例,这样一个用户请求就转发完成了。从这个过程来看,一个TCP连接是用户和Harbor实例直接建立的,而Proxy服务只不过完成了一个类似路由器的转发动作。在某些转发策略中,为保证Harbor实例返回的报文可以正确传递给Proxy服务,在转发报文的同时可能还会对报文原来的源地址进行修改,整个过程如图5所示。
对于上述的七层转发处理子模块553而言,代理服务的七层转发技术位于OSI的应用层,应用于支持HTTP协议。应用该七层转发技术的代理服务可以解析用户请求,获取其中字段的取值,再根据转发规则来选择Harbor实例。例如,根据用户请求Docker镜像的名字、版本确定存储该镜像的Harbor实例,代理服务在这种情况下类似于一个代理服务器,整个过程图6所示。
由上可知,四层转发技术与七层转发技术可以满足不同的应用需求,而对于代理服务选择四层转发技术还是七层转发技术,具体由通过设置代理模式为TCP或Http对应开启四层或七层转发。四层转发技术的工作模式简单,负载性能高,所有Harbor实例都必须承载相同的业务,适用于轮询、随机转发、源地址散列转发规则,而七层转发技术的工作模式复杂,性能消耗高,但带来了更好的灵活度,可以规划来自不同应用系统的Docker镜像的存储位置,除了适用于轮询、随机转发、源地址散列转发规则之外,还能适用于按请求内容转发的规则。用户可根据真实环境的需要灵活选择使用四层转发技术或七层转发技术,确定转发技术以后,当用户访问Docker私库时,即可通过代理服务访问真正的Harbor提供的Docker私库。
具体地,上述的四层转发处理子模块552中涉及的转发规则包括轮询转发规则、随机转发规则以及源地址散列转发规则中至少一种。
上述的七层转发处理子模块553涉及的转发规则包括轮询转发规则、随机转发规则、源地址散列转发规则以及按请求内容转发规则中至少一种。
上述的轮询转发规则,具体是每一次来自用户的访问请求轮流分配给每个可用的Harbor实例,从1至N然后重新开始。此种转发规则适合于所有Harbor实例都有相同的软硬件配置并且平均服务请求相对均衡的情况。上述的随机转发具体是把来自用户的请求随机分配给一个Harbor实例。针对上述的源地址散列转发规则而言,具体是根据用户请求的来源IP地址,通过散列函数计算得到一个数值,用该数值对Harbor实例列表的大小进行取模运算,得到的结果便是处理该用户请求的Harbor实例序号,该转发规则来自同一IP地址的请求,当后端Harbor实例列表不变时,它每次都会映射到同一台Harbor实例进行访问。另外,对于按请求内容转发规则,则是将多个应用系统的Docker镜像按照用户规划的存储方案存储在不同的Harbor实例中,代理服务从用户请求中解析出所访问镜像所属应用系统的Harbor实例,并将请求转发到该实例。
另外,在某些实施例中,上述的系统还包括同步单元,该同步单元用于当其中一个Harbor实例中的Docker私库新增了镜像或者删除了原有镜像,其余的所有Harbor实例也会同步新增或删除自身Docker私库中的相同镜像,以保证方案中所有Harbor实例中的Docker私库的数据一致性。
通过设计的代理服务,不仅保证了Docker私库的高可用性,而且涉及的组件比较少,对系统负载不高,满足了生产环境下对Docker私库的要求。
在本实施例中,上述的虚拟IP是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址,数据包被发送到虚拟IP地址,但是所有的数据还是经过真实的网络接口,虚拟IP大部分用于连接冗余;一个虚拟IP地址也可能在一台计算机或NIC发生故障时可用,交由另一个可选计算机或NIC响应连接。
上述的代理服务也称网络代理服务,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。上述的Harbor是由VMWare公司开源的容器镜像仓库。
上述的用于搭建及使用高可用性Docker私库的系统,通过设定代理服务,将若干个Harbor实例纳入一个集群管理,并部署代理服务形成代理集群,并由虚拟IP指向代理集群内的主代理服务,在Harbor实例还是主代理服务出故障,切换可用的Harbor实例或者重选主代理服务,以确保Docker私库持续为用户提供服务,利用两种转发技术以及四种转发规则,将访问请求转发至Harbor实例,实现Docker私库的高可用性,减少系统的负载,易于维护系统,且能很好地满足生产环境对Docker私库的需要。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。
Claims (10)
1.用于搭建及使用高可用性Docker私库的方法,其特征在于,所述方法包括:
设定代理服务,将若干个独立的Harbor实例纳入一个集群管理;
部署多个代理服务组成相应的代理集群;
获取访问请求;
将访问请求通过统一的虚拟IP访问代理集群的主代理服务;
每个主代理服务根据转发技术以及访问请求访问每个Harbor实例。
2.根据权利要求1所述的用于搭建及使用高可用性Docker私库的方法,其特征在于,每个主代理服务根据转发技术以及访问请求访问每个Harbor实例的步骤,包括以下具体步骤:
判断主代理服务是否可用;
若否,则从备份代理服务内随机挑选出新的主代理服务,并将虚拟IP指向新的主代理服务,并进入下一步骤,若是,则直接进入下一步骤;
判断Harbor实例是否不可用;
若是,则删除不可用的Harbor实例,并进入下一步骤,若否,则进入下一步骤;
利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例。
3.根据权利要求2所述的用于搭建及使用高可用性Docker私库的方法,其特征在于,删除不可用的Harbor实例的步骤,包括以下具体步骤:
识别不可用的Harbor实例;
从Harbor可用实例列表中删除不可用的Harbor实例的相应记录。
4.根据权利要求2所述的用于搭建及使用高可用性Docker私库的方法,其特征在于,利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例的步骤,包括以下具体步骤:
判断转发技术是否为四层转发技术;
若是,则根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例;
若否,则解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例。
5.根据权利要求4所述的用于搭建及使用高可用性Docker私库的方法,其特征在于,根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例的步骤中,所述转发规则包括轮询转发规则、随机转发规则以及源地址散列转发规则中至少一种。
6.根据权利要求4所述的用于搭建及使用高可用性Docker私库的方法,其特征在于,解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例的步骤,所述转发规则包括轮询转发规则、随机转发规则、源地址散列转发规则以及按请求内容转发规则中至少一种。
7.用于搭建及使用高可用性Docker私库的系统,其特征在于,包括集群管理设立单元、部署单元、请求获取单元、服务访问单元以及实例访问单元;
所述集群管理设立单元,用于设定代理服务,将若干个独立的Harbor实例纳入一个集群管理;
所述部署单元,用于部署多个代理服务组成相应的代理集群;
所述请求获取单元,用于获取访问请求;
所述服务访问单元,用于将访问请求通过统一的虚拟IP访问代理集群的主代理服务;
所述实例访问单元,用于每个主代理服务根据转发技术以及访问请求访问每个Harbor实例。
8.根据权利要求7所述的用于搭建及使用高可用性Docker私库的系统,其特征在于,所述实例访问单元包括服务可用判断模块、挑选模块、实例可用判断模块、删除模块以及转发模块;
所述服务可用判断模块,用于判断主代理服务是否可用;
所述挑选模块,用于若否,则从备份代理服务内随机挑选出新的主代理服务,并将虚拟IP指向新的主代理服务;
所述实例可用判断模块,用于判断Harbor实例是否不可用;
所述删除模块,用于若是,则删除不可用的Harbor实例;
所述转发模块,用于利用转发技术,主代理服务将访问请求转发至对应的可用Harbor实例。
9.根据权利要求8所述的用于搭建及使用高可用性Docker私库的系统,其特征在于,所述删除模块包括识别子模块以及记录删除子模块;
所述识别子模块,用于识别不可用的Harbor实例;
所述记录删除子模块,用于从Harbor可用实例列表中删除不可用的Harbor实例的相应记录。
10.根据权利要求9所述的用于搭建及使用高可用性Docker私库的系统,其特征在于,所述转发模块包括转发判断子模块、四层转发处理子模块以及七层转发处理子模块;
所述转发判断子模块,用于判断转发技术是否为四层转发技术;
所述四层转发处理子模块,用于若是,则根据访问请求通过转发规则选择一个符合请求的Harbor实例,将访问请求报文中目标IP地址修改为所选择的Harbor实例的IP地址,并将访问请求转发给所述Harbor实例;
所述七层转发处理子模块,用于若否,则解析访问请求,获取访问请求设定字段的取值,再根据转发规则选择Harbor实例,并将访问请求转发给所述Harbor实例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810044618.6A CN110049081A (zh) | 2018-01-17 | 2018-01-17 | 用于搭建及使用高可用性Docker私库的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810044618.6A CN110049081A (zh) | 2018-01-17 | 2018-01-17 | 用于搭建及使用高可用性Docker私库的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110049081A true CN110049081A (zh) | 2019-07-23 |
Family
ID=67273040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810044618.6A Pending CN110049081A (zh) | 2018-01-17 | 2018-01-17 | 用于搭建及使用高可用性Docker私库的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110049081A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795347A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种应用测试平台搭建方法及系统 |
CN112491940A (zh) * | 2019-09-12 | 2021-03-12 | 北京京东振世信息技术有限公司 | 代理服务器的请求转发方法及装置、存储介质及电子设备 |
CN113556388A (zh) * | 2021-07-14 | 2021-10-26 | 杭州玳数科技有限公司 | 代理服务方法、代理服务平台、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506605A (zh) * | 2016-10-14 | 2017-03-15 | 华南理工大学 | 一种基于微服务架构的SaaS应用构建方法 |
CN106878484A (zh) * | 2017-02-27 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种配置Docker集群容器外部IP的方法 |
-
2018
- 2018-01-17 CN CN201810044618.6A patent/CN110049081A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506605A (zh) * | 2016-10-14 | 2017-03-15 | 华南理工大学 | 一种基于微服务架构的SaaS应用构建方法 |
CN106878484A (zh) * | 2017-02-27 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种配置Docker集群容器外部IP的方法 |
Non-Patent Citations (1)
Title |
---|
亨利笔记: "用Harbor和Kubernetes构建高可用企业级镜像仓库,https://www.sohu.com/a/130779211_609552", 《搜狐网》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491940A (zh) * | 2019-09-12 | 2021-03-12 | 北京京东振世信息技术有限公司 | 代理服务器的请求转发方法及装置、存储介质及电子设备 |
CN112491940B (zh) * | 2019-09-12 | 2024-05-24 | 北京京东振世信息技术有限公司 | 代理服务器的请求转发方法及装置、存储介质及电子设备 |
CN110795347A (zh) * | 2019-10-25 | 2020-02-14 | 北京浪潮数据技术有限公司 | 一种应用测试平台搭建方法及系统 |
CN113556388A (zh) * | 2021-07-14 | 2021-10-26 | 杭州玳数科技有限公司 | 代理服务方法、代理服务平台、计算机设备和存储介质 |
CN113556388B (zh) * | 2021-07-14 | 2023-06-13 | 杭州玳数科技有限公司 | 代理服务方法、代理服务平台、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6898633B1 (en) | Selecting a server to service client requests | |
US10887276B1 (en) | DNS-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks | |
Nathan et al. | Comicon: A co-operative management system for docker container images | |
CN102771084B (zh) | 用于在多核gslb设备中管理静态邻近性的系统和方法 | |
WO2022002209A1 (zh) | 数据传输方法和代理服务器、存储介质及电子装置 | |
US20180011874A1 (en) | Peer-to-peer redundant file server system and methods | |
US11095534B1 (en) | API-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks | |
CN107819802A (zh) | 一种在节点集群中的镜像获取方法、节点设备及服务器 | |
US20060168107A1 (en) | Generalized on-demand service architecture for interactive applications | |
US20080256248A1 (en) | Single server access in a multiple tcp/ip instance environment | |
CN108833462A (zh) | 一种面向微服务的自注册服务发现的系统及方法 | |
CN108270818A (zh) | 一种微服务架构系统及其访问方法 | |
WO2021120633A1 (zh) | 一种负载均衡方法及相关设备 | |
CN110049081A (zh) | 用于搭建及使用高可用性Docker私库的方法和系统 | |
CN112698838B (zh) | 多云容器部署系统及其容器部署方法 | |
US20190068536A1 (en) | System and method for unit-of-order routing | |
EP3977707B1 (en) | Hardware load balancer gateway on commodity switch hardware | |
CN108200211A (zh) | 集群中镜像文件下载的方法、节点和查询服务器 | |
US11743325B1 (en) | Centralized load balancing of resources in cloud edge locations embedded in telecommunications networks | |
US7711780B1 (en) | Method for distributed end-to-end dynamic horizontal scalability | |
CN107180034A (zh) | MySQL数据库的集群系统 | |
CN115242882B (zh) | 一种基于传输层路由访问k8s容器环境的方法及装置 | |
US11861386B1 (en) | Application gateways in an on-demand network code execution system | |
CN111459619A (zh) | 一种基于云平台实现服务的方法和装置 | |
CN112711465B (zh) | 基于云平台的数据处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190723 |