跳到元数据的末尾
转到元数据开始

概述

JFrog Artifactory提供了可配置的灵活文件存储管理,以满足二进制存储提供程序、存储大小和冗余方面的各种需求。现在,您不仅可以使用不同的存储提供程序,还可以将一系列提供程序链接在一起,以构建二进制提供程序的复杂结构,并支持存储的无缝和无限增长。

Artifactory提供了灵活的文件存储管理binarystore.xml中的配置文件$ ARTIFACTORY_HOME /等文件夹中。通过修改该文件,您可以实现各种不同的二进制存储配置。

修改binarystore.xml时要小心

对该文件进行更改可能导致丢失存储在Artifactory中的二进制文件!

如果你不确定你在做什么,请联系JFrog支持寻求帮助。

链和二进制提供程序

binarystore.xmlFile指定一个带有一组二进制提供程序的链。一个二进制提供者表示一种对象存储特性,如“缓存文件系统”。二进制提供程序可以相互嵌入以形成表示一个连贯的文件存储。Artifactory自带一个内置链条对应于binary.provider.type在Artifactory的以前版本中使用的参数。Artifactory中可用的内置链集是:

  • 文件系统

  • cache-fs

  • full-db

  • full-db-direct

  • s3

  • google storage
  • double-shards

  • redundant-shards
  • 集群文件系统
  • cluster-s3
  • cluster-google-storage
  • cluster-azure-blob-storage

配置内置文件存储

要配置Artifactory以使用一个内置文件存储,您只需要一些基本的配置元素。



页面内容


基本配置要素

对于基本文件存储配置,使用binarystore.xmlFile非常简单,包含下面描述的基本标签或元素以及它们可能包含的属性:

配置标签

<设置>标记指定文件存储配置。它包括版本属性允许对配置进行版本控制。

链元素

config标记包含一个元素,该元素定义文件存储的结构。要使用一个内置文件存储,chain元素需要包含相应的模板属性。例如,要使用内置的基本文件系统模板,你所需要的是以下配置:

   .

内置的模板

以下部分描述了Artifactory内置的基本链模板,您可以开箱即用,以及默认链中包含的其他二进制提供程序。

关于每个模板的更多信息可以在下面的内置链模板部分中找到。

文件系统

Artifactory最基本的文件存储配置用于本地或挂载的文件存储。

cache-fs

与文件系统的工作方式相同,但也缓存使用LRU(最近最少使用)协议清理的下载请求。提升IOPS (I/O Operations)高或NFS访问速度慢的实例的性能。

full-db

所有元数据和二进制文件都以blob的形式存储在数据库中,并具有额外的缓存层。

full-db-direct
所有元数据和二进制文件都以blob的形式存储在数据库中,不进行缓存。
s3

这是用于S3对象存储使用JetS3t库。

s3Old
这是用于S3对象存储使用JCloud作为底层框架。
google storage
这是用于将谷歌Cloud Storage作为远程文件存储的设置。
azure-blob-storage
这是用于Azure Blob Storage作为远程文件存储的设置。
double-shards

一个纯分片使用2个物理安装和1个副本的配置(这意味着每个工件只保存一次)。

redundant-shards
一个纯分片使用2个物理挂载和2个副本(这意味着每个碎片存储每个工件的副本)的配置。
集群文件系统
一个文件存储配置,其中每个节点都有自己的本地文件存储(就像文件系统链一样),并通过动态分配连接到所有其他节点远程二进制提供程序使用Sharding-Cluster提供者。
cluster-s3

这是用于S3对象存储使用JetS3t库。它基于同步集群文件系统的分片和动态提供程序逻辑。

cluster-google-storage

这是用于谷歌云存储使用JetS3t库。它基于同步集群文件系统的分片和动态提供程序逻辑。

cluster-azure-blob-storage

这是用于一个zure Blob存储。它基于同步集群文件系统的分片和动态提供程序逻辑。


修改已存在的文件存储

为了满足您对文件存储的任何特定需求,您可以通过使用其他二进制提供程序扩展它或覆盖它的一个属性来修改现有的链模板之一。例如,内置的文件系统链模板将二进制文件存储在ARTIFACTORY_HOME /数据/ filestore美元目录中。修改模板,使其在下面存储二进制文件FILESTORE美元/二进制文件您可以将其扩展如下:

<!——file-system链模板结构——>     $FILESTORE/binaries 属性——>  

内置链模板

Artifactory内置了一组链模板,允许您开箱即用地设置各种不同的文件存储。但是,要覆盖内置文件存储,您需要熟悉其中使用的每个二进制提供程序的可用属性。这些将在下面的章节中进行描述,这些章节还展示了模板配置以及每个模板中的“底层”内容。此外,可以找到所有模板的使用示例。

文件系统二进制提供程序

这是Artifactory的基本文件存储配置,用于本地或挂载文件存储。

文件系统模板配置

如果您选择使用文件系统模板,你binarystore.xml配置文件应该如下所示:

   .


模板中有什么?
而您不需要在您的binarystore.xml,这是什么文件系统模板看起来像在引擎盖下。

在本例中,文件存储和临时文件夹位于计算机的根目录下。

   /var/opt/jfrog/data /filestore /tmp  

地点:

类型
文件系统
baseDataDir

默认值:美元ARTIFACTORY_HOME /数据

Artifactory应该存储数据文件的根目录。
fileStoreDir

默认值:filestore

文件存储的二进制文件的根文件夹。如果指定的值以正斜杠(" / ")开头,则该值被认为是文件存储文件夹的完全限定路径。否则,它被认为是相对的baseDataDir
tempDir

默认值:tmp

下面的临时文件夹baseDataDir将文件写入其中供Artifactory内部使用。这个必须在同一个磁盘上fileStoreDir

缓存文件系统二进制提供程序

cache-fs用作二进制缓存,使用LRU(最近最少使用)作为其清理协议。这可以提高Artifactory的性能,因为频繁的请求将从cache-fs(就像S3二进制提供程序一样)。

cache-fs二进制提供程序将是Artifactory最接近的文件存储层。这意味着,如果文件存储已挂载,则需要cache-fs在artifactory服务器本身上是本地的(如果文件存储是本地的,那么缓存-fs是没有意义的)。在HA配置的情况下,cache-fs会不会是挂载和建议是每个节点都要有自己的cache-fs层。


Cache-fs模板配置

如果您选择使用cache-fs模板,你binarystore.xml配置文件应该如下所示:

   .
模板中有什么?
而您不需要在您的binarystore.xml,这是什么cache-fs模板看起来像在引擎盖下。

这个例子将cache-fs的大小设置为10GB,它的位置(绝对路径,因为它以“/”开头)设置为/cache/filestore。

   /cache/filestore 10000000000  

地点:

类型
cache-fs
maxCacheSize

默认值:5000000000 (5GB)

中为缓存分配的最大存储空间字节.请注意,maxCacheSize可以包括正在上传的文件(保存在cache/_pre下);因此建议保留_pre文件夹的额外空间
cacheProviderDir

默认值:缓存

文件存储缓存的二进制文件的根文件夹。如果指定的值以正斜杠(" / ")开头,则认为它是文件存储文件夹的完全限定路径。否则,它被认为是相对的baseDataDir

全数据库二进制提供程序

这个二进制提供程序将所有元数据和二进制内容保存为数据库中的blob,并在文件系统上增加了一层缓存。
缓存可以提高Artifactory的性能,因为频繁的请求将从cache-fs在访问数据库之前。


全db模板配置

如果您选择使用full-db模板,你binarystore.xml配置文件应该如下所示:

   .
模板中有什么?

而您不需要在您的binarystore.xml,这是什么full-db模板看起来像在引擎盖下。
有关cache-fs供应商,请参考缓存文件系统二进制提供程序
provider处理元数据和二进制内容作为blob在数据库中的实际保存。

     


全db - direct二进制提供程序

这个二进制提供程序将所有元数据和二进制内容保存为数据库中的blob,而不使用缓存层。
全数据库直接模板配置

如果您选择使用full-db-direct模板,你binarystore.xml配置文件应该如下所示:


   .
模板中有什么?

而您不需要在您的binarystore.xml,这是什么full-db-direct模板看起来像在引擎盖下。
provider处理元数据和二进制内容作为blob在数据库中的实际保存。

   

云存储提供商


云对象存储支持

从6.15版本开始,JFrog Container Registry和Artifactory Pro支持使用来自主要SaaS提供商的云对象存储,包括Amazon的S3、谷歌的云存储或Azure的Blob存储作为其二进制提供商。
其他对象存储服务提供商,如OpenStack Swift、NetApp的StorageGRID等,需要获得Enterprise license。



高可用性集群需要为S3提供程序使用共享挂载

使用S3存储提供商(或s3链模板),将需要集群共享挂载。这是因为只有主节点将处理对象存储交互,而所有节点将能够向共享挂载添加文件最终目录中。

的替代方案S3对于没有共享挂载的集群,将使用cluster-s3链模板


Amazon S3官方SDK模板

从版本6.12开始,Artifactory提供了以下功能s3-storage-v3使用官方的Amazon SDK配置S3云存储。

身份验证机制

支持以下认证方式:

  • 基本凭证
  • 默认的Amazon Provider Chain凭据。默认的Amazon Provider链按照以下顺序搜索凭据:

“Amazon S3官方版Amazon SDK”模板用于配置S3云存储和支持下面的一组参数。

类型

s3-storage-v3

testConnection

默认值:真正的

当设置为true时,二进制提供程序将在Artifactory启动时上传和下载一个文件,以验证与云存储提供程序的连接是否完全正常。

身份

您的云存储提供商身份。

凭证

您的云存储提供者身份验证凭据。

地区

您希望与之合作的云存储提供商提供的区域。

bucketName

您的全局惟一桶名。

路径

默认值:filestore
相对于存储二进制文件的桶的路径。

rootFoldersNameLength

默认值:2

对象校验和中应用于命名存储中的文件夹的初始字符数。它可以取0到5.0之间的任何值,这意味着校验和文件将存储在对象存储桶的根目录下。

例如,如果对象的校验和是8c335149…而且rootFoldersNameLength设置为4,则存储对象的文件夹将命名为8c33。

proxyIdentity

当您通过代理服务器访问云存储提供商时,需要输入相应的参数。

proxyCredential
proxyPort
proxyHost
端点

云存储提供商的URL。

kmsServerSideEncryptionKeyId

默认= N / A。仅适用于“s3-storage-v3”模板。

使用KMS加密客户端,提供KMS加密密钥ID或别名。

kmsKeyRegion
默认=N/A (from Artifactory 6.13)
设置从给定区域获取的KMS密钥。如果没有提供,则使用region参数。如果没有同时提供区域,则使用默认AWS区域。
kmsCryptoMode

默认值:EncryptionOnly。仅适用于“s3-storage-v3”模板。

使用KMS加密与以下加密策略之一:

  • EncryptionOnly
  • AuthenticatedEncryption
  • StrictAuthenticatedEncryption

有关更多信息,请参见https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-crypto-kms.html

useInstanceCredentials

默认值:false。

当真正的,使用AWS S3默认提供者链根据身份验证机制

usePresigning

默认值:false。

当设置为true时,应用于签名url,用于在s3对象上添加、删除和获取客户端方法。

multiPartLimit

默认值:100,000,000字节

usePresigning设置为false,或者对于s3old和s3模板

文件大小阈值(以字节为单位),文件上传的分块和多线程超过该阈值。

transferManagerThreads

默认值:10。仅适用于“s3-storage-v3”模板。

适用于当usePresigning设置为false

适用于多段上传,由multiPartLimit配置。

signatureExpirySeconds

默认值:300

usePresigning设置为true时,该参数为内部用于上传和下载的签名url设置有效时间(以秒为单位)。

maxConnections

默认值:50。

设置AWS客户端的最大HTTP客户端连接数

connectionTimeout

默认值:10 x1000。

为AWS客户端设置连接超时(以毫秒为单位)。

socketTimeout

默认值:50 * 1000。

为AWS客户端设置套接字超时(以毫秒为单位)。

enablePathStyleAccess

默认值:假

Amazon S3支持virtual-hosted-style而且path-style所有地区的接入。

path-style语法要求在尝试访问桶时使用特定于区域的端点。对于非aws用户,此属性可能需要设置为true。

disableChunkedEncoding

默认值:假

默认行为是自动启用分块编码PutObjectRequest而且UploadPartRequest
设置此标志将导致对所有请求禁用分组编码,这可能会影响性能。

只有当您的终端没有实现分块上传时,才建议使用此选项。

useDeprecatedBucketExistenceCheck

默认值:假

设置此属性将强制根据对桶的HEAD请求检查桶是否存在。(在AWS中已弃用)

enableSignedUrlRedirect

默认值:假

使云存储直接下载(企业+)。

signedURLExpirySeconds

默认值:30

指定向请求客户端提供的从云存储直接下载的签名URL有效的秒数。

下面的代码片段展示了使用S3二进制提供程序支持几种配置(CEPH、CleverSafe等)的基本模板配置和示例。

s3-storage-v3二进制存储模板配置

因为您必须配置S3提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果选择使用此模板,您的binarystore.xml配置文件应该如下所示:

   http://s3.amazonaws.com bucketName pathPrefix s3Region yourIdentity yourCredentials  


模板中有什么?

而您不需要在您的binarystore.xml,这是什么s3-storage-v3模板看起来像在引擎盖下。

         .

有关cache-fs供应商,请参考缓存文件系统二进制提供程序
有关最终供应商,请参考最终二进制提供程序
有关重试供应商,请参考重试二进制提供程序

例子

这个例子用您的凭证设置s3,使用pre-signing用于对象操作,并设置10分钟(600秒)的预签名URL

   http://s3.amazonaws.com bucketName pathPrefix s3Region  yourCredentials yourCredentials < usepresign >true 600 


S3二进制提供程序

Artifactory提供了以下模板,用于在S3云提供商上配置存储:

  • s3模板:用于使用JetS3t库配置s3对象存储。
  • s3Old模板:用于通过JClouds配置S3对象存储。

S3模板的最新推荐版本

从6.12版本开始,Artifactory支持使用官方Amazon SDK配置S3对象存储。有关更多信息,请参见s3-storage-v3模板

类型

S3或s3old

testConnection

默认值:真正的

当设置为true时,二进制提供程序将在Artifactory启动时上传和下载一个文件,以验证与云存储提供程序的连接是否完全正常。

multiPartLimit

默认值:100,000,000字节

文件大小阈值,文件上传的分块和多线程。

身份

您的云存储提供商身份。

凭证

您的云存储提供者身份验证凭据。

地区

您希望与之合作的云存储提供商提供的区域。

bucketName

您的全局惟一桶名。

路径

默认值:filestore

相对于存储二进制文件的桶的路径。
rootFoldersNameLength

默认值:2

对象校验和中应用于命名存储中的文件夹的初始字符数。它可以取0到5之间的任何值。0表示校验和文件将存储在对象存储桶的根目录下。

例如,如果对象的校验和是8c335149…而且rootFoldersNameLength设置为4,则存储对象的文件夹将命名为8c33。

proxyIdentity

当您通过代理服务器访问云存储提供商时,需要输入相应的参数。

proxyCredential
proxyPort
proxyHost
港口

云存储提供商的端口。

端点

云存储提供商的URL。

roleName

只于S3。

在你的Amazon服务器上为认证配置的IAM角色。

当使用此参数时,refreshCredentials参数必须设置为true。

refreshCredentials

默认值:false。只于S3。

当为true时,如果所有者的凭证过期,则自动更新。

roleName,此参数必须设置为true。

httpsOnly

默认值:真的。只于S3

如果只希望通过安全https连接访问云存储提供商,则设置为true。

httpsPort

默认值:443。如果必须设置httpsOnly真正的.用于安全连接的https端口。

指定此值时,需要将端口从端点

providerID

设置为S3。只适用于S3old

s3AwsVersion

默认值:'AWS4-HMAC-SHA256' (AWS签名版本4)S3。

如果需要AWS签名版本2,可以设置为'AWS2'。请参阅AWS的文档更多信息。

"><属性名= " s3service。disable-dns-buckets " value = " true " > < /属性>
Artifactory在默认情况下将bucketName放在端点的前面(例如。mybucket.s3.aws.com)创建一个URL来访问S3桶。Amazon AWS等S3提供者使用这种约定。
但是,有些S3提供者使用桶名作为上下文URL的一部分,情况就不是这样了。s3provider.com/mybucket);因此Artifactory需要添加以下参数,以便URI与S3提供者兼容。使用此URI格式的S3提供商包括OpenStack、CEPH、CleverSafe和EMC ECS。
"><属性名= " s3service。server-side-encryption“价值= " aws:公里" > < /属性>
使用此属性可以设置Artifactory,以便使用配置了KMS加密密钥的S3 bucket。
useSignature

默认值:假

当设置为true时,应用于签名url,用于在s3对象上添加、删除和获取客户端方法。此参数还启用云存储直接下载(企业+)。

signedURLExpirySeconds

默认值:30

指定向请求客户端提供的从云存储直接下载的签名URL有效的秒数。

signatureExpirySeconds
默认值:300(可选)
useSignature设置为true时,该参数指定签名S3signature访问S3的秒数。
下面的代码片段展示了使用S3二进制提供程序支持几种配置(CEPH、CleverSafe等)的基本模板配置和示例。
S3模板配置
因为您必须配置s3提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果选择使用此模板,您的binarystore.xml配置文件应该如下所示:


   http://s3.amazonaws.com [ENTER identity HERE] [ENTER CREDENTIALS HERE] [ENTER path HERE] [ENTER BUCKET NAME HERE]   .  [ENTER identity HERE] [ENTER CREDENTIALS HERE] [ENTER path HERE] [ENTER BUCKET NAME HERE]  


模板中有什么?

而您不需要在您的binarystore.xml,这是什么s3模板看起来像在引擎盖下。

          .       


有关cache-fs供应商,请参考缓存文件系统二进制提供程序

有关最终供应商,请参考最终二进制提供程序
有关重试供应商,请参考重试二进制提供程序
示例1

OpenStack对象存储Swift的配置。


   XXXXXXXXX XXXXXXXX   < httponly >false< property name="s3service. "Disable-dns-buckets " value="true">   . value="true

示例2
CEPH的配置。


   XXXXXXXXXX XXXXXXXXXXXXXXXXX   [我的CEPH桶名] <属性名="s3service. "disable-dns-buckets" value="true"> < httponly >false  . value="true"> < httponly >false 
示例3
CleverSafe的配置。

   XXXXXXXXX XXXXXXXX [My CleverSafe Server]  [My CleverSafe Bucket] < httponly >false <属性名="s3service. "Disable-dns-buckets " value="true">   . value="true
示例4
S3的配置,在Artifactory和S3桶之间有一个代理。

   XXXXXXXXXX XXXXXXXXXXXXXXXXX [My s3服务器] [My s3桶名] [http代理主机名] [http代理端口号] XXXXX XXXX  
示例5
S3使用IAM角色而不是IAM用户的配置。

   XXXXXX s3.amazonaws.com [mybucketname] true  
例子6
使用服务器端加密时S3的配置。

   XXXXXXXXX XXXXXXXX s3.amazonaws.com [mybucketname]    .
例7

当使用KMS(密钥管理服务)类型的服务器端加密时,S3的配置。

   XXXXXXXXX XXXXXXXX s3.amazonaws.com [mybucketname]    .
示例8
使用时S3的配置EMC弹性云存储(ECS)

   XXXXXXXXXX XXXXXXXXXXXXXXXXX  < httpsPort>  [我的ECS桶名]    . value="true

S3Old二进制提供程序

下面的代码片段显示了一个使用S3二进制提供程序的示例,其中JClouds是底层框架。

s3Old模板配置

AWS的配置。
因为您必须配置s3Old提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果选择使用此模板,您的binarystore.xml配置文件应该如下所示:


   XXXXXXXXX XXXXXXXX s3.amazonaws.com [mybucketname]  


模板中有什么?

而您不需要在您的binarystore.xml,这是什么s3Old模板看起来像在引擎盖下。


          .

有关cache-fs供应商,请参考缓存文件系统二进制提供程序

有关最终供应商,请参考最终二进制提供程序
有关重试供应商,请参考重试二进制提供程序

谷歌存储二进制提供程序本地客户端模板

“Google - Storage -v2”模板用于使用谷歌本地客户端配置“谷歌云存储”作为远程文件存储。

身份验证机制

使用谷歌自动生成的凭据文件建立身份验证。

认证解决方案

我们支持三种解决方法

认证解析顺序如下:

  1. ' useInstanceCredentials ' == true &&设置"GOOGLE_APPLICATION_CREDENTIALS"环境变量

  2. ' useInstanceCredentials ' == true &&使用Kubernetes(或其他)服务帐户学分(无学分文件)

  3. ' useInstanceCredentials ' == false &&将信用文件保存在default路径[arti_home_full_path] / etc / gcp.credentials.json。

    授予“云功能服务代理”角色转换为所使用的服务帐户,以便使用实例的凭据。

    Artifactory搜索一个名为GOOGLE_APPLICATION_CREDENTIALS包含凭据文件的路径。如果环境变量不存在,则计算引擎、Kubernetes引擎、App引擎和Cloud Functions提供的默认服务帐户将应用于运行在这些服务上的应用。

下面的代码片段显示了基本的google-storage-v2模板配置和使用谷歌云存储二进制提供程序的示例。

这个二进制提供程序使用以下一组参数:

类型

google-storage-v2

bucketName
您的全局惟一桶名。
路径
默认值:filestore
设置相对于存储二进制文件的桶的路径。
rootFoldersNameLength

默认值:2。

对象校验和中应用于命名存储中的文件夹的初始字符数。它可以取0到6之间的任何值。0表示校验和文件将存储在对象存储桶的根目录下。例如,如果对象的校验和是8c335149…而且rootFoldersNameLength如果设置为4,则存储对象的文件夹将命名为8c33。

bucketExists

默认值:false。

当设置为true时,它向二进制提供程序指示一个桶已经存在于谷歌云存储中,因此不需要创建。

testConnection

默认值:真正的

当设置为true时,二进制提供程序将在Artifactory启动时上传和下载一个文件,以验证与云存储提供程序的连接是否完全正常。

useInstanceCredentials

默认值:false。

当设置为真正使用时,“GOOGLE_APPLICATION_CREDENTIALS”环境变量会找到凭证或使用默认的服务帐户。
当设置为false时,将使用默认路径查找凭据文件。

enableSignedUrlRedirect

默认值:false。

当设置为true时,使用启用的签名url重定向下载请求。

signedUrlExpirySeconds

默认值:30。

以秒为单位设置签名URL的有效期。

signatureExpirySeconds

默认值:30。

指定内部用于上传/下载的签名URL有效的秒数。

proxyIdentity

默认值:无代理

当您通过代理服务器访问云存储提供商时,需要输入相应的参数。

proxyCredential
proxyPort
proxyHost
maxConnections

默认值:100

设置http客户端最大连接数。

ConnectionTimeout
设置连接超时时间。
Google-storage-v2模板配置

因为您必须配置google-storage-v2提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果选择使用此模板,您的binarystore.xml配置文件应该如下所示:

        
示例1
   my-bucket myPath 3 false 10 127.0.0.1 8888 username password50 120000  


谷歌存储二进制提供程序

该模板用于将“谷歌云存储”配置为远程文件存储。

下面的代码片段显示了基本模板配置和使用谷歌云存储二进制提供程序的示例。

这个二进制提供程序使用以下一组参数:

类型

google storage

testConnection

默认值:真正的

当设置为true时,二进制提供程序将在Artifactory启动时上传和下载一个文件,以验证与云存储提供程序的连接是否完全正常。

multiPartLimit

默认值:100,000,000字节

文件大小阈值,文件上传的分块和多线程。

身份

您的云存储提供商身份。

凭证

您的云存储提供者身份验证凭据。

bucketName

您的全局惟一桶名。

路径

默认值:filestore

相对于存储二进制文件的桶的路径。
proxyIdentity

当您通过代理服务器访问云存储提供商时,需要输入相应的参数。

proxyCredential
proxyPort
proxyHost
港口

云存储提供商的端口。

端点

云存储提供商的URL。

httpsOnly

默认值:真的。

如果只希望通过安全https连接访问云存储提供商,则设置为true。

httpsPort

默认值:443。如果必须设置httpsOnly真正的.用于安全连接的https端口。

指定此值时,需要将端口从端点

bucketExists

默认值:false。

当设置为true时,它向二进制提供程序指示一个桶已经存在于谷歌云存储中,因此不需要创建。

Google-storage模板配置

因为您必须配置google storage提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果选择使用此模板,您的binarystore.xml配置文件应该如下所示:

   commondatastorage.googleapis.com  XXXXXX XXXXXXX  

模板中有什么?

而您不需要在您的binarystore.xml,这是什么google storage模板看起来像在引擎盖下。


          .执行以下命令

有关cache-fs供应商,请参考缓存文件系统二进制提供程序
有关最终供应商,请参考最终二进制提供程序
有关重试供应商,请参考重试二进制提供程序


示例1
带有JetS3t库中的动态属性的配置。在本例中,httpclient.max-connections参数设置全局允许的最大并发连接数(默认值为100)。

   commondatastorage.googleapis.com  XXXXXX XXXXXXX <属性名="httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient。“最大连接数”值=150>  

Azure Blob存储二进制提供程序

Azure - Blob - Storage模板用于将Azure Blob Storage配置为远程文件存储。

下面的代码片段展示了基本的模板配置和一个使用Azure Blob Storage二进制提供程序的示例。

这个二进制提供程序使用以下一组参数:

testConnection

默认值:真正的

当为true时,Artifactory将在启动时上传和下载一个文件,以验证与云存储提供程序的连接是否完全正常。

帐号名称

存储帐户可以是a通用存储帐户或者一个Blob存储帐户它专门用于存储对象/blob。

您的云存储提供商身份。

accountKey

您的云存储提供者身份验证凭据。

containerName

Azure Blob Storage上的全局惟一容器名称。

端点

主机名。您应该只使用默认值,除非您需要为测试或生产目的联系不同的端点。
请注意:如果在XML文件中没有定义端点,它将自动使用默认值生成https:// < ACCOUNT_NAME > .blob.core.windows.net价值。

httpsOnly

默认值:真的。

如果您只想通过安全https连接进行访问,则设置为true。


因为您必须使用特定于您的帐户的参数配置Azure Blob存储提供程序(但可以保留所有其他参数的推荐值),如果您选择使用此模板,您的binarystore.xml配置文件应该如下所示:

   XXXXXXXX XXXXXXXX https://< accountName> .blob.core.windows.net/   
模板中有什么?

下面的代码片段显示了使用azure-blob-storage作为二进制提供程序:

           .
有关cache-fs供应商,请参考缓存文件系统二进制提供程序
有关最终供应商,请参考最终二进制提供程序
有关重试供应商,请参考重试二进制提供程序

最终二进制提供程序

这个二进制提供程序不是独立的,它总是被用作远程文件存储的模板链的一部分,这些文件存储可能会出现上传延迟(例如S3或GCS)。为了克服潜在的延迟,文件首先被写入一个名为“ultimate”的文件夹baseDataDir在本地存储中,然后上传到云提供商的持久存储中。的默认位置最终文件夹在美元ARTIFACTORY_HOME /数据文件夹(或$ CLUSTER_HOME / ha-data在使用Artifactory版本的HA配置的情况下下面5.0)并且不可配置。您需要确保Artifactory对该位置具有完全的读/写权限。

目录下还有三个额外的文件夹eventual文件夹:

  • _pre:持久性机制的一部分,它确保所有文件在上传到远程文件存储之前都是有效的
  • _add:处理向远程文件存储上传文件
  • _delete:处理远程文件存储中的文件删除
例子

下面的示例展示了在使用最终二进制提供程序进行临时存储之后使用S3进行持久存储的配置。最终提供者为上传配置10个并行线程,并设置180秒的锁定超时。

<!——S3二进制提供者配置——>< config version="v1">   XXXXXXXXX XXXXXXXX   < httponly >false< property name="s3service. "Disable-dns-buckets " value="true">    10 180000  

地点:

类型
最终
超时
当文件被写入或从文件系统中删除时,它可能被锁定的最长时间。
dispatcherInterval

默认值:5000 ms

提供程序扫描“最终”文件夹以检查应上传到持久存储的文件的间隔时间。

numberOfThreads

默认值:5

为将文件上传到持久存储而分配的并行线程数。

重试二进制提供程序

这个二进制提供程序不是独立的,总是作为更复杂的提供程序模板链的一部分使用。如果读或写操作失败,这个二进制提供程序将通知其层次结构中的底层提供程序重试该操作。


类型
重试
时间间隔

默认值:5000 ms

重试前等待的时间间隔。
maxTrys

默认值:5

在响应失败之前读或写的最大尝试次数。
例子

下面的示例展示了一个使用S3进行持久存储的配置,但使用重试提供程序来持续重试(最多10次),以防上传失败。

<!——S3二进制提供者配置——>< config version="v1">   XXXXXXXXX XXXXXXXX   < httponly >false< property name="s3service. "Disable-dns-buckets " value="true">    10  


最终集群二进制提供程序

这个二进制提供程序不是独立的,它总是被用作远程文件存储的模板链的一部分,这些文件存储可能会出现上传延迟(例如S3或GCS)。为了克服潜在的延迟,文件首先被写入一个名为“ultimate”的文件夹baseDataDir在本地存储中,然后上传到云提供商的持久存储中。的默认位置最终文件夹在美元ARTIFACTORY_HOME /数据文件夹,并且不可配置。您需要确保Artifactory对该位置具有完全的读/写权限。

目录下还有两个额外的文件夹eventual文件夹:

  • _pre:持久性机制的一部分,它确保所有文件在上传到远程文件存储之前都是有效的
  • _queue:处理将到达远程文件存储的文件上的所有操作
id
eventual-cluster
addStalePeriod

默认值:300000毫秒

事件发生前等待的时间添加当试图处理添加在Artifactory中不存在的文件时,操作将被视为过期。

maxWorkers

默认值:5

此提供程序使用的工作线程数。这些线程处理针对远程文件存储的所有操作。

dispatcherInterval

默认值:1000毫秒

扫描最终目录之间的等待时间。

checkPeriod

默认值:15000 ms

如果提供程序在任何时候发生致命错误,则两次尝试重新激活提供程序之间的最小等待时间。

提供程序所在的分片区域的名称(仅适用于分片提供程序)
例子

下面的配置使用google-storage链模板,配置10个并行线程用于上传,扫描时间为1秒。

   commondatastorage.googleapis.com  XXXXXX XXXXXXX <属性名=" httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient. httpclient。max-connections " value=150>   5 1000 15000 300000 local   .使用实例



双碎片,冗余碎片

这些二进制提供程序只能通过企业许可证使用。

双碎片二进制提供程序

double-shards模板用于使用2个物理挂载和1个副本的纯分片配置(这意味着每个工件只保存一次)。要了解关于不同分片功能的更多信息,请参考Filestore分片

双碎片模板配置

如果您选择使用double-shards模板,你binarystore.xml配置文件应该如下所示:

   .
模板中有什么?

而您不需要在您的binarystore.xml,这是什么double-shards模板看起来像在引擎盖下。
有关cache-fs供应商,请参考缓存文件系统二进制提供程序
有关分片供应商,请参考分片二进制提供程序
有关结合分供应商,请参考状态感知二进制提供程序

    1   1    .

冗余碎片二进制提供程序

redundant-shardsTemplate用于使用2个物理挂载和2个副本(这意味着每个碎片存储每个工件的副本)的纯分片配置。要了解关于不同分片功能的更多信息,请参考Filestore分片

冗余碎片模板配置

如果您选择使用redundant-shards模板,你binarystore.xml配置文件应该如下所示:

   .
模板中有什么?

而您不需要在您的binarystore.xml,这是什么redundant-shards模板看起来像在引擎盖下。
有关cache-fs提供程序可以在缓存文件系统二进制提供程序部分。
有关分片提供程序可以在分片二进制提供程序部分。
有关结合子提供程序可在状态感知二进制提供程序部分。

    2   1   

分片二进制提供程序

Artifactory提供了一个分片二进制提供程序,允许您在分片文件存储中管理二进制文件。分片文件存储是在多个物理挂载(M)上实现的文件存储,它存储具有冗余(R)的二进制对象,其中R <= M。
这个二进制提供程序不是独立的,总是作为更复杂的提供程序模板链的一部分使用。要了解关于分片的知识,请参考Filestore分片

类型
分片
lenientLimit

默认值:1(从5.4版本开始。注意,对于配置了自定义链且不使用内置模板的文件存储,lenientLimit参数为0,以保持与以前版本一致。)

最低成功写的数量必须维护才能成功上传.下一个平衡循环(由GC机制触发)将最终将二进制文件传输到足够多的节点,以便保留冗余承诺。
换句话说,在暂时没有保留冗余承诺的情况下,宽容管理允许的最小冗余。

例如,如果lenientLimit设置为3,我的设置包括4个文件存储,其中一个文件存储下降,写入将继续。如果第二个文件存储发生故障,写操作将停止。

当前活动节点的数量必须始终大于或等于配置的lenientLimit。如果设置为0,则必须保留冗余值。

readBehavior

此参数指定从组成分片文件存储的安装中读取二进制文件的策略。

取值包括:

设置轮流捡取(默认):使用循环策略从每个挂载读取二进制文件。

writeBehavior

此参数指示将二进制文件写入组成分片文件存储的挂载的策略。取值包括:

设置轮流捡取(默认):二进制文件使用循环策略写入每个挂载。

空闲空间:二进制文件被写入具有最大绝对可用空闲空间的挂载。

percentageFreeSpace:根据可用的空闲空间百分比将二进制文件写入挂载。

冗余
默认值:r = 1

在文件存储中为每个二进制文件存储的副本数量。注意,冗余必须小于或等于系统中安装的数量,Artifactory才能使用此配置。

concurrentStreamWaitTimeout

默认值:30000 ms

为了支持指定的冗余,在缓冲区中累积写流,并使用“r”线程(根据指定的冗余)写入正在写入的二进制文件的每个冗余副本。只有在所有冗余线程完成写操作后,才可以认为二进制文件已写入。由于所有线程都在竞争写流缓冲区,所以每个线程将在不同的时间完成写操作。该参数指定任何线程等待所有其他线程完成写操作的时间(ms)。

如果写操作失败,您可以尝试增加该参数的值。

concurrentStreamBufferKb

默认值:32kb
在复制写入二进制文件的“r”个冗余副本之前,用于累积写入流的写入缓冲区的大小。

如果写操作失败,您可以尝试增加该参数的值。

maxBalancingRunTime

默认值:3,600,000 ms(1小时)
一旦恢复了失败的挂载,此参数指定每个平衡会话在失效之前可以运行多长时间,直到下一个垃圾收集完成。关于平衡的更多细节,请参考使用均衡从挂载失败中恢复

为了在挂载失败后更快地将系统恢复到完全冗余状态,可以增加该参数的值。如果您发现这会导致整体系统性能不可接受的下降,您可以考虑降低该参数的值,但这意味着Artifactory恢复完全冗余所花费的总体时间将更长。
freeSpaceSampleInterval

默认值:3,600,000 ms(1小时)

为了实现其写行为,Artifactory需要定期查询分片文件存储中的挂载,以检查空闲空间。由于此检查可能是一个资源密集型操作,您可以使用此参数来控制空闲空间检查之间的时间间隔。

如果预期会有一段时间需要大量上传二进制文件,可以考虑降低该参数的值,以减少系统中挂载之间的暂时不平衡。
minSpareUploaderExecutor

默认值:2

Artifactory维护一个线程池来执行对每个冗余存储单元的写操作。根据写活动的强度,最终,一些线程可能会变为空闲,然后成为被杀死的候选线程。然而,当写活动再次开始时,Artifactory确实需要维护一些活动线程。此参数指定为提供冗余存储单元而应保持活动的最小线程数。

uploaderCleanupIdleTime

默认值:120,000 ms(2分钟)

线程在成为被杀死的候选线程之前可以保持空闲的最长时间。


状态感知二进制提供程序

该二进制提供程序不是独立的,总是在分片sharding-cluster提供者。提供程序知道其底层磁盘是否在工作。它和基本的是一样的文件系统方法,它也可以从错误中恢复(父提供程序负责恢复)checkPeriod字段。


类型
结合
checkPeriod

默认值:15000 ms

如果提供程序在任何时候发生致命错误,则两次尝试重新激活提供程序之间的最小等待时间。

writeEnabled

默认值:真正的

从Artifactory 6.18和更高版本开始,启用/禁用二进制提供程序的写操作。如果设置为false,状态感知提供程序将继续为读请求提供服务,因此Artifactory可以继续从该提供程序读取二进制文件。此外,垃圾收集可以继续从提供程序中清除已删除的二进制文件。(仅适用于分片提供者。)

提供程序所在的分片区域的名称。(仅适用于分片提供者。)

为HA集群配置分片

这些二进制提供程序只能通过企业许可证使用。

对于高可用性集群,Artifactory提供了支持File-System、S3和谷歌Storage分片集群的模板。要了解关于不同分片功能的更多信息,请参考Filestore分片
在HA集群上配置文件存储时,需要放置binarystore.xml$ ARTIFACTORY_HOME /等在主节点中,它将被同步到集群中的其他成员。

文件系统集群二进制提供程序

当使用集群文件系统模板每个节点都有自己的本地文件存储(就像文件系统二进制提供程序)并通过动态分配连接到所有其他集群节点远程二进制提供程序使用分片-集群二进制提供程序

集群文件系统模板配置
如果您选择使用集群文件系统模板,你binarystore.xml配置文件应该如下所示:


   .
模板中有什么?
而您不需要在您的binarystore.xml,这是集群文件系统模板在底层的样子。
有关cache-fs提供程序可以在缓存文件系统二进制提供程序部分。
有关sharding-cluster可以在分片-集群二进制提供程序部分。
有关结合子提供程序可在状态感知二进制提供程序部分。
           local    remote   crossNetworkStrategy crossNetworkStrategy 2    . /

Amazon S3 SDK集群二进制提供程序

这是用于Amazon S3官方SDK模板在为HA集群配置文件存储分片时使用。它基于同步集群文件系统的分片和动态提供程序逻辑。
当使用cluster-s3-storage-v3模板数据临时存储在每个节点的文件系统上最终集群二进制提供程序,然后传递到S3对象存储进行持久存储。
每个节点都有自己的本地文件存储(就像文件系统二进制提供程序)并通过动态分配连接到所有其他集群节点远程二进制提供程序使用分片-集群二进制提供程序

配置Cluster-s3-storage-v3模板

因为您必须配置s3提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果您选择使用cluster-s3-storage-v3模板,你binarystore.xml配置文件可以是这样的:

   http://s3.amazonaws.com bucketName pathPrefix s3Region  yourCredentials  
模板中有什么?

虽然您不需要在binarystore.xml中配置任何其他内容,但这就是s3-storage-v3模板在底层的样子。

             crossNetworkStrategy crossNetworkStrategy 2    remote   local   http://s3.amazonaws.com bucketNamepathPrefix s3Region yourIdentity yourCredentials  


有关cache-fs提供程序可以在缓存文件系统二进制提供程序部分。
有关sharding-cluster可以在分片-集群二进制提供程序部分。
有关eventual-cluster子提供程序可在最终集群二进制提供程序部分。
有关重试提供程序可以在重试二进制提供程序部分。
有关远程动态提供程序可以在远程二进制提供程序部分。

S3集群二进制提供程序

这是用于S3对象存储在为HA集群配置文件存储分片时使用JetS3t库。它基于同步集群文件系统的分片和动态提供程序逻辑。
当使用cluster-s3模板数据临时存储在每个节点的文件系统上最终二进制提供程序,然后传递到S3对象存储进行持久存储。
每个节点都有自己的本地文件存储(就像文件系统二进制提供程序)并通过动态分配连接到所有其他集群节点远程二进制提供程序使用分片-集群二进制提供程序

Cluster-s3模板配置
因为您必须配置s3提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果您选择使用cluster-s3模板,你binarystore.xml配置文件应该如下所示:


   http://s3.amazonaws.com [ENTER identity HERE] [ENTER CREDENTIALS HERE] [ENTER path HERE] [ENTER BUCKET NAME HERE]  
模板中有什么?

而您不需要在您的binarystore.xml,这是什么cluster-s3模板看起来像在引擎盖下。

              crossNetworkStrategy crossNetworkStrategy 2    remote   local    [ENTER identity HERE] [ENTER CREDENTIALS . [ENTER path HERE] [ENTER BUCKET NAME HERE]  

有关cache-fs提供程序可以在缓存文件系统二进制提供程序部分。
有关sharding-cluster可以在分片-集群二进制提供程序部分。
有关eventual-cluster子提供程序可在最终二进制提供程序部分。
有关重试提供程序可以在重试二进制提供程序部分。
有关远程Dnyamic提供程序可以在远程二进制提供程序部分。

谷歌存储集群二进制提供程序

这是用于谷歌云存储在为HA集群配置文件存储分片时使用JetS3t库。它基于同步集群文件系统的分片和动态提供程序逻辑。
当使用cluster-google-storage模板数据临时存储在每个节点的文件系统上最终二进制提供程序,然后传递到您的谷歌存储持久存储。
每个节点都有自己的本地文件存储(就像文件系统二进制提供程序)并通过动态分配连接到所有其他集群节点远程二进制提供程序使用分片-集群二进制提供程序

Cluster-google-storage模板配置
因为您必须配置google storage提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果您选择使用cluster-google-storage模板,你binarystore.xml配置文件应该如下所示:


   commondatastorage.googleapis.com  XXXXXX XXXXXXX  
模板中有什么?

而您不需要在您的binarystore.xml,这是什么cluster-google-storage模板看起来像在引擎盖下。

              crossNetworkStrategy crossNetworkStrategy 2    remote   local  commondatastorage.googleapis.com  XXXXXX XXXXXXX  
有关cache-fs提供程序可以在缓存文件系统二进制提供程序部分。
有关sharding-cluster可以在分片-集群二进制提供程序部分。
有关eventual-cluster子提供程序可在最终二进制提供程序部分。
有关重试提供程序可以在重试二进制提供程序部分。
有关远程Dnyamic提供程序可以在远程二进制提供程序部分。

Azure Blob存储集群二进制提供程序

这是用于Azure Blob存储.它基于同步集群文件系统的分片和动态提供程序逻辑。
当使用cluster-azure-blob-storage模板数据临时存储在每个节点的文件系统上最终二进制提供程序,然后传递到您的Azure Blob Storage进行持久存储。
每个节点都有自己的本地文件存储(就像文件系统二进制提供程序)并通过动态分配连接到所有其他集群节点远程二进制提供程序使用分片-集群二进制提供程序

Cluster-azure-blob-storage模板配置
因为您必须配置azure-blob-storage提供特定于您的帐户的参数(但可以保留所有其他参数的推荐值),如果您选择使用cluster-azure-blob-storage模板,你binarystore.xml配置文件应该如下所示:


   XXXXXX XXXXXX https://< accountName> .blob.core.windows.net/   
模板中有什么?

而您不需要在您的binarystore.xml,这是什么cluster-azure-blob-storage模板看起来像在引擎盖下:

      type = "远程" / > < /提供者> < /提供者> < /链> < !——cluster eventual Azure Blob Storage Service default chain——>  crossNetworkStrategy crossNetworkStrategy 2 1    remote   crossNetworkStrategy 2 2 1    remote   local  < provider id="azure-blob-storage" type="azure-blob-storage"> XXXXXX XXXXXX https://.blob.core.windows.net/    . https://< accountName>XXXXXX XXXXXX https://.blob.core.windows.net/   
有关cache-fs提供程序可以在缓存文件系统二进制提供程序部分。
有关sharding-cluster可以在分片-集群二进制提供程序部分。
有关eventual-cluster子提供程序可在最终二进制提供程序部分。
有关重试提供程序可以在重试二进制提供程序部分。
有关远程Dnyamic提供程序可以在远程二进制提供程序部分。

分片-集群二进制提供程序

分片集群二进制提供程序可以与其他二进制提供程序一起使用,用于本地存储或本地云存储。它增加了一个crossNetworkStrategy参数用于验证冗余值和平衡机制的读写行为。它必须包括远程二进制提供程序在其动态提供程序设置中,允许跨集群同步提供程序。

Sharding-Cluster提供程序监听集群拓扑事件,并根据集群中节点的当前状态创建或删除动态提供程序。

类型
sharding-cluster

在分片机制中定义的区域。读/写策略采用基于区域的提供程序。

lenientLimit

默认值:1(从5.4版本开始。注意,对于配置了自定义链且不使用内置模板的文件存储,lenientLimit参数为0,以保持与以前版本一致。)

最低成功写的数量必须维护才能成功上传.下一个平衡循环(由GC机制触发)将最终将二进制文件传输到足够多的节点,以便保留冗余承诺。
换句话说,在暂时没有保留冗余承诺的情况下,宽容管理允许的最小冗余。

例如,如果lenientLimit设置为3,我的设置包括4个文件存储,其中一个文件存储下降,写入将继续。如果第二个文件存储发生故障,写操作将停止。

当前活动节点的数量必须始终大于或等于配置的lenientLimit。如果设置为0,则必须保留冗余值。

dynamic-provider
可以根据集群拓扑的更改动态添加和删除的提供者类型。目前只有远程二进制提供程序作为动态提供程序支持。
例子
           crossNetworkStrategy crossNetworkStrategy 21   filestore1   15000 5000 15000 200 2 remote  

远程二进制提供程序

这个二进制提供程序不是独立的,总是作为更复杂的提供程序模板链的一部分使用。如果读或写操作失败,这个二进制提供程序会通知层次结构中的父提供程序。

远程二进制提供程序将一个节点链接到集群中的所有其他节点,这意味着它使每个节点都能“看到”每个其他节点的文件存储。

类型
远程
connectionTimeout

默认值:5000 ms

传出连接超时前的时间。
socketTimeout

默认值:15000 ms

已建立的连接超时前的时间(即没有数据通过线路发送)。
maxConnections

默认值:200

提供程序的最大传出连接数。

connectionRetry

默认值:2

重试连接到远程端点的次数。

提供程序所在的分片区域的名称(仅适用于分片提供程序)。
checkPeriod

默认值:15000 ms

如果提供程序在任何时候发生致命错误,则两次尝试重新激活提供程序之间的最小等待时间。


例子

以下是如何配置远程二进制提供程序的示例。看看这是如何与一个完整的binarystore.xml配置请参考下面的示例分片-集群二进制提供程序

 15000 5000 15000 200 2 remote 

从头开始配置自定义文件存储

除了下面的内置文件存储链模板之外,您还可以构造自定义链模板来适应所需的任何文件存储结构。
由于文件存储中的不同二进制提供程序必须彼此兼容,因此错误配置可能会导致数据丢失。 如需配置自定义文件存储,请联系JFrog支持


为较旧的Artifactory版本配置文件存储

对于4.6以下的Artifactory版本,使用的文件存储在美元ARTIFACTORY_HOME / etc / storage.properties文件如下

binary.provider.type

文件系统(默认)
这意味着元数据存储在数据库中,而二进制文件存储在文件系统中。默认位置在ARTIFACTORY_HOME /数据/ filestore美元然而,这是可以修改的。

fullDb
所有元数据和二进制文件都以blob的形式存储在数据库中。

cachedFS
原理和文件系统但也有一个二进制LRU(最近最少使用)缓存上传/下载请求。提升IOPS (I/O Operations)高或NFS访问速度慢的实例的性能。

S3
这是用于S3对象存储

binary.provider.cache.maxSize
该值指定在系统上为缓存blob分配的最大缓存大小(以字节为单位)。
binary.provider.filesystem.dir
如果binary.provider.type设置为文件系统这个值指定二进制文件的位置(默认值:ARTIFACTORY_HOME /数据/ filestore美元).
binary.provider.cache.dir
缓存的位置。这应该直接设置为$ARTIFACTORY_HOME目录(而不是在NFS上)。