体系结构
私有分发网络(PDN)是边缘、PDN节点及其组的集合,它们形成了一个分散的网络来分发内容。PDN架构基于位于JFrog Artifactory或Edge服务器和客户端(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。
- 客户:用于与Node交互的软件客户端,例如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 Artifactory。
在上面的例子中,PDN Node4到PDN Node7属于同一个组“NY”,并且在ParentGroup“East”下,可以解析它们自己和它们的ParentGroup之间的文件。
拓扑结构
您定义的拓扑和层次结构取决于您的组织的需求。因此,在继续设置PDN之前,我们建议您规划拓扑需求。下面是一些使用PDN可以实现的拓扑场景示例。
场景一—多组+单PDN服务器+单源JPD
在这个拓扑中,有m个多个(5)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节点)
通过将源JPD或分发边缘连接到多个PDN服务器来实现高可用性(HA)。每个服务器要么连接到多个组,要么连接到一个PDN组,然后再连接到子组。
在下面的例子中,我们有以下内容:
- 一个单独的源JPD和两个相互连接的分布边。
- 每个分发边缘连接两个PDN服务器。
- 每个PDN服务器连接到自己的PDN组。
- PDN组A与另一个包含500个PDN节点的PDN组(1)相连。
工作流
设置和注册
- 安装PDN服务器使用其中一个安装选项。
- 将服务器连接到Artifactory或Edge。
连接PDN节点或多个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节点上时,它们会被发布到PDN服务器,并且可以由其他PDN节点同时下载,根据Artifactory中定义的用户权限。下载文件过程从多个PDN节点并行执行,从而在多个PDN节点之间分配网络负载,以便从Artifactory执行快速有效的下载。
发布发布包(基于推送的发布)
PDN可以主动填充内容,以预热PDN节点上的本地缓存。
验证您是否具有发布包分发权限或已分配给项目/平台管理员角色,并且安装了JFrog分发版。
分配现有的发布包到PDN节点。您可以分发:
- 指定PDN节点组。
- 从源工件直接分发到连接到发布包版本的源工件或分发边缘的PDN节点组。
规则及指引
- Docker支持货柜开放计划(OCI)和通用包。
- 所有PDN节点都应该路由到访问根PDN服务器。
- 同一组中的PDN节点应该能够相互访问。