“s3”和“cluster-s3”文件存储链之间的区别是什么?
相关版本:人工制品5和6。
将Artifactory与云二进制提供程序(如S3)集成时,基于文档有两种可能的链模板可供选择:“s3”和“cluster-s3”链模板。在这里,我们将重点讨论它们之间的区别,以及应该如何选择正确的配置。
*本文主要以S3为例,而所提到的信息也与“google storage" & "cluster-google-storage,和azure-blob-storage" & "cluster-azure-blob-storage”。
运行独立的Artifactory服务器?
“集群”链的好处只有在运行Artifactory时才有意义高可用性.
因此,对于使用云存储提供商的独立设置,您应该使用非集群模板链。
系统需求
“集群”链除了在HA集群(和Enterprise Artifactory许可证)中运行之外,不需要其他任何东西。
在HA设置中使用非集群链时,需要在所有Artifactory节点之间有一个共享挂载(NFS/NAS/SAN)。
“非集群”模板及其工作原理
s3 <链模板= " " / >
“s3”链代表以下配置:<链模板= " s3 " >
> < /供应商
> < /供应商
> < /供应商
< / >链
如上所述,当在HA集群中使用非集群模板时,需要在所有HA节点之间进行共享挂载,以共享Artifactory“data”目录。
共享的“data”目录必须在ARTIFACTORY_HOME / etc /美元ha-node.properties:artifactory.ha.data.dir = / mnt /共享/ artifactory / ha-data
上面的模板配置了4层存储提供商。
- Cache-FS-不应共享,以确保频繁工件的良好性能。
- 最终—在配置的“artifactory.ha.data. data”中创建。Dir”,是所有集群节点之间的共享层。目录“eventual”包含3个子目录:“_pre”、“_add”、“_delete”。这些文件夹实际上是应该传输到下一个提供者(云存储提供者)的事件队列。
- 重试-在失败的情况下负责“重试”事件。
- S3——云存储提供商。
当使用非集群模板时,主节点负责将事件从“最终”文件夹分派到S3桶。
因此,他的运行时间是重要的,以确保“最终”文件夹不会失去控制。
在下载
- 接收到下载请求的节点将首先检查该文件在Cache-FS层中是否可用。
- 如果不可用,他将检查该文件是否存在于最终文件夹中。
- 否则,他将继续从云提供商处下载文件,然后将其提供给客户端。
直接云存储将允许您跳过Artifactory从云存储下载文件并将其提供给客户端的部分。
在上传
- 接收到上传请求的节点将把文件流式传输到最终的“_pre”文件夹。
- 一旦节点完全接收到文件,它将把文件从“_pre”移到“_add”,然后关闭上传请求。当文件到达“_add”文件夹时,所有其他HA成员都可以下载它。
- 主节点检查“最终”文件夹中是否有需要处理的新文件,并最终将该文件上传到S3。
最佳实践:
- 一个大的地方Cache-FS分区对于确保尽可能快地提供频繁的工件非常重要。
- 上传工件到S3需要主节点正常运行时间。
- 监视“最终”子文件夹中的文件数量非常重要,这样在出现故障时,作为管理员的您就可以及时得到通知。
binarystore.xml例子:<配置版本=“v1”>
<链模板= " s3 " >
> < /供应商
> < /供应商
> < /供应商
< / >链
< cacheProviderDir > / var / opt / jfrog artifactory /数据/缓存< / cacheProviderDir >
< maxCacheSize > 100000000000 < / maxCacheSize >
> < /供应商
10 < numberOfThreads > < / numberOfThreads >
<超时> 180000 > < /超时
5000年< dispatcherInterval > < / dispatcherInterval >
> < /供应商
10 < maxTrys > < / maxTrys >
<时间> 1000 > < /间隔
> < /供应商
端点> < http://s3.amazonaws.com > < /端点
<凭据>[在这里输入凭据]凭据>
> < /供应商
< / config >
“集群”模板及其工作原理
<链模板= " cluster-s3 " / >
“cluster-s3”链代表以下配置:<链> < !——模板=“cluster-s3”- - - >
> < /供应商
< / sub-provider >
> < /供应商
> < /供应商
< / >链
“集群”链配置与非集群链配置的主要区别在于,在“集群”中,每个Artifactory节点将为“最终”提供程序使用自己的存储,因此不需要共享挂载。
在这里,每个Artifactory节点将管理自己的队列,并根据云存储分派自己的事件。
该链配置了以下提供商层:
- Cache-FS
- Sharding-Cluster这个提供程序允许我们以一种允许Artifactory识别在其他节点中持久化的文件的方式对“最终”进行集群。
- Eventual-Cluster-最终提供程序的集群版本。位于
美元ARTIFACTORY_HOME /数据/最终并有2个子文件夹:“_pre”和“_queue”。 - 重试-在失败的情况下负责“重试”事件。
- S3——云存储提供商。
- 远程—负责与其他HA成员节点通信。
在此配置中,二进制文件存储在本地而不是外部驱动器上,因此只有在Artifactory启动并运行时才能访问它们(主机启动还不够)。
为了确保数据始终可用,熟悉“sharding-cluster”提供程序的以下2个参数非常重要:
冗余—默认值:2。应为每个二进制文件存储的副本数量。尽管“最终”只是一个可传递目录,但我们通常希望“最终”中每个文件至少有2个副本,以确保所有文件始终可用。例如,在重新启动期间,我们可能会关闭在“最终”中有文件的节点。如果相同的文件存在于另一个节点中,它将从那里得到服务。(假设是滚动重启)
lenientLimit—默认值:1。为使上传成功而需要存储的最小副本数量。如果设置为0,则必须保持已配置的冗余。
在下载
- 接收到下载请求的节点将首先检查该文件在Cache-FS层中是否可用。
- 如果不可用,他将检查该文件是否存在于本地的最终文件夹中。
- 如果没有,他将使用“Remote”提供程序检查该文件是否在其他成员节点中可用。
- 否则,他将继续从云提供商处下载文件,然后将其提供给客户端。
直接云存储将允许您跳过Artifactory从云存储下载文件并将其提供给客户端的部分。
在上传
- 接收到上传请求的节点将把文件流式传输到最终的“_pre”文件夹。
- 一旦节点完全接收到文件,它将把文件从“_pre”移到“_queue”,然后关闭上传请求。如果“lenientLimit”和“redundancy”设置为大于1,它将首先确保二进制文件存在至少“n”个HA集群节点的“最终”文件夹。(" n "为已配置的" lenientLimit ")
- 一旦文件位于“_queue”文件夹中,就可以将其下载给所有其他HA成员。
- 节点每1秒检查一次(默认情况下,可配置)“最终”文件夹中是否有需要处理的新文件,并将它们上传到S3。
最佳实践:
- 一个大的地方Cache-FS分区对于确保尽可能快地提供频繁的工件非常重要。
- 监视“最终”子文件夹中的文件数量非常重要,这样在出现故障时,作为管理员的您就可以及时得到通知。
- 如果“lenientLimit”设置为1,则在重新启动Artifactory节点之前,将其从负载均衡器中取出至少一分钟。这是为了确保保留最近部署的工件的冗余。
binarystore.xml例子:<配置version = " 2 " >
<链> < !——模板=“cluster-s3”- - - >
> < /供应商
< / sub-provider >
> < /供应商
> < /供应商
< / >链
> < /供应商
< readBehavior > crossNetworkStrategy < / readBehavior >
< writeBehavior > crossNetworkStrategy < / writeBehavior >
<冗余> 2 > < /冗余
1 < lenientLimit > < / lenientLimit >
> < /供应商
10 < maxWorkers > < / maxWorkers >
1000年< dispatcherInterval > < / dispatcherInterval >
15000年< checkPeriod > < / checkPeriod >
300000年< addStalePeriod > < / addStalePeriod >
当地<区> < /区>
> < /供应商
15000年< checkPeriod > < / checkPeriod >
5000年< connectionTimeout > < / connectionTimeout >
15000年< socketTimeout > < / socketTimeout >
200年< maxConnections > < / maxConnections >
2 < connectionRetry > < / connectionRetry >
<区>远程> < /区
> < /供应商
端点> < http://s3.amazonaws.com > < /端点
<凭据>[在这里输入凭据]凭据>
> < /供应商
< / config >