体系结构
私有分发网络(PDN)是边缘、PDN节点及其组的集合,它们形成一个分散的网络,用于分发内容。PDN架构基于位于JFrog Artifactory或边缘服务器和客户端(Docker或HTTP)之间的相互连接节点网络。PDN节点充当客户端和Artifactory/Edge之间的缓存代理。
JFrog PDN架构由以下主要组件组成:
- PDN (Private Distribution Network)服务器:一个专门的服务,负责发布和跟踪位于PDN节点上的可用工件,PDN服务器作为初始工件种子器。
- 生产节点:这是一个独立的应用程序(或Docker映像),与其他PDN节点互连以解析文件,该应用程序被客户端用于下载内容,并部署在专用的主机或客户端机器上。PDN节点与它的父节点和兄弟节点通信以解析文件(Pull)和分发发布包(Push)。它还从缓存的工件和按需(Pull)向外部客户端提供文件。
- PDN节点组:由多个相互连接的节点组成PDN节点组。组可以以分层的方式排列,形成PDN组树,PDN服务器位于根。一个PDN节点只能通过点对点的方式从自己组内的节点或直接父组下载文件。每个组可能有几个子组,但只有一个父组。一个PDN节点自己的组被称为SelfGroup,而父组被称为ParentGroup.
- 客户:用于与节点交互的软件客户端,例如Docker或HTTP客户端。
负载均衡器支持
虽然不是PDN体系结构的一部分,但您也可以在此设置中添加负载均衡器。负载均衡器是一种配置,它支持PDN节点之间传入请求的负载均衡,支持在同一组内的PDN节点之间分配负载,同时还确保它们之间的持续缓存同步。
在上面的例子中,PDN Node1和PDN Node2都具有SelfGroup属性“East”,因此属于同一个组。PDN Node3具有SelfGroup属性“West”,因此属于“West”组。没有PDN节点配置了ParentGroup,因此它们默认情况下直接放在PDN服务器下,充当它们的ParentGroup。PDN Node1只能从PDN Node2或PDN Server下载文件,而PDN Node3只能从PDN Server下载文件。
PDN服务器可以连接到Artifactory的Source或Edge实例。在上面的例子中,它被连接到一个源Artifactory。
在上面的例子中,PDN Node4到PDN Node7属于同一个组“NY”,在ParentGroup“East”下,可以解析他们自己和他们的ParentGroup之间的文件。
拓扑结构
您定义的拓扑和层次结构取决于您的组织的需求。因此,在开始设置PDN之前,我们建议您绘制出您的拓扑需求。下面是您可以使用PDN实现的一些拓扑场景示例。
场景1—多组+单PDN服务器+单源JPD
在这个拓扑中,有m个多个PDN组,每组包含1000个PDN节点(组A, B, C, D, E),连接到A单PDN服务器直接连接到源JPD。
场景2 -多组+单PDN服务器+分布边缘+源JPD
在这种拓扑中,有多个(5)个PDN组,每个PDN组包含1000个PDN节点(组A、B、C、D和E),连接到单个PDN服务器,该PDN服务器连接到单个分布边缘,该分布边缘连接到单个源JPD。
场景3 -高可用性配置:二级多组(边缘到PDN节点)
高可用性(HA)是通过将源JPD或分发边缘连接到多个PDN服务器来实现的。每个服务器连接到多个组或一个PDN组,然后连接到子组。
在下面的例子中,我们有以下内容:
- 一个单一的源JPD和两个分布边,彼此相连。
- 每个配电边连接到两个PDN服务器。
- 每个PDN服务器连接到自己的PDN组。
- PDN组A还连接到另一个PDN组(1),该PDN组包含500个PDN节点。
工作流
设置和注册
- 安装PDN服务器使用安装选项。
- 将服务器连接到Artifactory或Edge。
连接一个或多个PDN节点创建一个组。
您需要在与JFrog PDN服务器或PDN中的任何其他节点有网络连接的主机上安装PDN节点。
PDN节点连接到PDN服务器,根据ParentGroup属性检索PDN节点的父候选节点。
- 验证连接。
分布
PDN支持按需拉动和基于推的分发,如下所述。
客户端下载工件(按需拉动)
客户端可以主动从PDN节点请求工件。
所有下载通信都使用Artifactory创建的证书链进行ssl加密
- 然后PDN节点监听客户端下载请求或来自其他PDN节点的请求。
- 当PDN节点代表客户端下载文件时,它们定期向PDN服务器发布关于存储文件片段的信息。然后,这些信息被PDN服务器存储。
- 一旦PDN节点从客户端获得下载请求,它将查询PDN服务器,以确定哪些其他注册的PDN节点可能拥有该文件。PDN服务器响应,PDN节点开始从相关的PDN节点下载文件的可用部分。
- 当文件缓存在PDN节点上时,根据Artifactory中定义的用户权限,它们被发布到PDN服务器,并可以由其他PDN节点并发下载。从多个PDN节点并行执行下载文件过程,从而在多个PDN节点之间分配网络负载,从Artifactory执行快速和高效的下载。
分发发布包(基于推送的分发)
PDN可以主动填充内容,以预热PDN节点上的本地缓存。
验证您拥有发布包分发权限,或者已被分配到项目/平台管理员角色,并且安装了JFrog分发。
分配现有的发布包到PDN节点。你可以分发:
- 到指定的PDN节点组。
- 从源Artifactory,直接分发到连接到发布包版本的源Artifactory或分发边缘的PDN节点组。
规则及指引
- Docker支持开放式货柜计划(OCI)和通用包。
- 所有PDN节点都应该被路由到访问根PDN服务器。
- PDN同一组中的节点应该能够相互访问。