云客户?
开始免费>
升级MyJFrog >
云有什么新鲜事>





S3对象存储概述

S3对象存储需要JFrog Container Registry、Pro、Enterprise X或Enterprise+ license。

Artifactory完全支持面向分布式文件系统的S3对象存储,因此您的Artifactory文件存储可以驻留在云中。这有几个好处:

  1. 无限的可扩展性
    由于您的文件现在存储在云中,这意味着您的Artifactory文件存储是可伸缩的,并且有效地不受限制(在您的存储提供者提供的范围内)。您可以自由地继续上传文件,而不必安装或维护任何文件存储设备。您甚至可以使用多部分上传的方式上传大于5gb的文件。

  2. 安全
    享受S3提供程序提供的相同的安全和身份验证机制。

  3. 灾难恢复
    因为您的文件是通过冗余复制和存储的,所以这提供了灾难恢复的能力。

  4. 支持任何S3兼容的协议
    Artifactory的支持基于S3协议。任何使用S3的提供者,比如Ceph, Swift(通过S3 API)和其他人也将得到Artifactory的支持。通过对AWS S3版本4的支持,您可以使用签名版本4

备份你的系统。您当前的文件存储将被删除。

将Artifactory设置为使用S3将删除当前文件存储中的所有文件。

如果您已经有一个正在运行的Artifactory安装,那么在您设置Artifactory使用S3并将您的文件存储迁移到云中之前,我们强烈建议您进行完整的系统备份

有关较早的S3文件存储实现的更多信息,请参见其他S3二进制提供程序

Filestore基本面

此页面提供有关特定二进制提供程序的信息。有关文件存储和可使用的各种文件存储的更多信息,请参见配置Filestore

通过将JFrog平台的功能委派为一个注册表,以便它用链接响应下载请求,您可以优化JFrog平台,以便从云存储下载大型二进制文件(如Docker映像)。有关更多信息,请参见云存储直接下载


页面内容







设置Artifactory以使用S3

第一次安装或升级

如果您正在升级Artifactory的上下文中将您的文件存储移动到S3,或者第一次安装,我们建议您首先使用默认设置进行Artifactory的标准安装,或者使用当前设置进行标准升级。

要将Artifactory文件存储移动到云中,您需要执行以下步骤:

设置您的许可

要使用S3对象存储,您的Artifactory安装需要用适当的JFrog许可证激活。

要做到这一点,请确保您的JFROG_HOME美元/ artifactory / var / etc / artifactory / artifactory.lic文件包含支持S3的license。

S3权限

您必须为Artifactory提供对S3桶的完全访问权限,并应用amazons3fullaccess政策。

配置Artifactory使用S3

方法配置Artifactory的文件存储binarystore.xml文件。Tbinarystore.xml配置文件位于$ JFROG_HOME / artifactory / var / etc / artifactory文件夹中。

直接(无最终)和最终上传机制

从最终版本迁移到直接版本?

如果要从任何最终机制迁移到直接上传机制,请确保最终目录为空,否则可能会丢失数据。

默认的S3链模板依赖于最终的上传机制,通过这种机制,当完整的二进制文件被上传到Artifactory时,来自客户机的上传就被认为是成功的。从Artifactory 7.9.0,直接上传机制作为一种替代机制,通过这种机制,上传直到到达S3才被视为成功。这两种方法都有优点,我们将在下面介绍。

直接上传机制(推荐)

直接上传机制使您可以在不需要为最终目录维护持久存储的情况下进行上传。这种机制还允许更快的上传,因为磁盘IO的争用较少,特别是当Artifactory驻留在AWS上时。

直接上传(即无终端上传)可用于AWS和Azure,但不能用于谷歌云平台(GCP)。

可直接下载AWS和GCP,但不是Azure。

  1. 客户端将工件上传到Artifactory。
  2. Artifactory接收并同时上传到S3。
  3. Artifactory将二进制文件上传至S3
    1. Artifactory将201成功返回给客户端。
    2. 为工件创建一个数据库条目。

最终上传机制

如果您在S3上传速度较慢的系统上进行上传(例如,当Artifactory托管在prem上时),您可能需要使用最终上传机制。最终上传机制还允许您在何时上传S3关闭或出现网络问题。

  1. 客户端将工件上传到Artifactory。
  2. Artifactory收到完整的上传。
    1. Artifactory向客户端返回一条201成功消息。
    2. 为工件创建一个数据库条目。
    3. 二进制文件存储在本地磁盘的最终目录中。
  3. Artifactory将二进制文件上传到S3。
  4. 二进制文件将从最终目录中删除。

Amazon S3官方SDK模板

Artifactory提供了s3-storage-v3使用官方的Amazon SDK配置S3云存储。

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

使用Amazon S3官方SDK模板需要集群的共享挂载。这是因为任意节点将处理对象存储交互,而所有节点将能够向共享挂载添加文件最终目录中。

身份验证机制

支持以下认证方式:

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

类型

s3-storage-v3

testConnection

默认值:真正的

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

身份

您的云存储提供商身份。

凭证

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

港口

云存储提供商端口。

当未分配端口且useHttp参数设置为true时,默认端口将设置为80。否则,默认端口设置为443。注意,如果您已经定义了一个端口,那么无论useHttp参数设置了什么值,该端口都将具有优先级并将被应用。

地区

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

bucketName

您的全局惟一桶名。

路径

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

rootFoldersNameLength

默认值:2

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

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

proxyIdentity

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

proxyCredential
proxyPort
proxyHost
端点

云存储提供商的URL。

Amazon端点:支持JFrog订阅

只有正式的AWS端点,例如s3.amazonaws.com,* .amazonaws.com,* .amazonaws.com.cn在所有JFrog订阅中都受支持。JFrog企业/企业+订阅支持其他端点。”

useHttp

默认值:假

定义连接模式。当设置为true时,可以设置一个不安全的HTTP连接。

kmsClientSideEncryptionKeyId
(命名为kmsServerSideEncryptionKeyId之前Artifactory版本7.31.10)

默认是N / A。

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

这个名字,kmsServerSideEncryptionKeyId弃用。但是您可以继续使用该名称而不会引起任何错误。

server-side-encryption-aws-kms

默认是N / A。
如果设置为true, S3将根据默认的KMS密钥对服务器上的构件进行加密。您还可以使用加密密钥ID或别名来设置它,而不是true。

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。

设置为true以使用AWS S3作为您的默认提供者链身份验证机制
usePresigning

默认值:false。

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

注意:启用预命名将限制上传的对象的最大大小不超过5GB。有关更多信息,请参见AWS的文档

multiPartLimit

默认值:100000000字节

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

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

multipartElementSize

默认值:5 MB的块。

使用multiPartLimit时的块大小。如果没有设置标记,将应用AWS客户端默认的5MB。

指定块大小(类似于Azure BP中的功能)。

transferManagerThreads

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

适用于当usePresigning设置为false

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

signatureExpirySeconds

默认值:300

为内部用于上传和下载的签名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。对于CEPH存储,将此属性设置为true。

disableChunkedEncoding

默认值:假

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

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

useDeprecatedBucketExistenceCheck

默认值:假

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

enableSignedUrlRedirect
使直接下载云存储。
signedUrlExpirySeconds

默认值:30(可选)

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

请注意,AWS和GCP可以直接下载,但Azure不能。

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

S3二进制存储模板配置

您需要使用特定于您的帐户的参数来配置S3提供程序(但是可以保留所有其他参数的推荐值)。

S3直接上传模板(推荐)

S3直接(或无最终结果)模板允许直接上传到S3,绕过最终上传机制。有关更多信息,请参见直接(无最终)和最终上传机制

       s3.amazonaws.com bucketName pathPrefix s3Region  yourCredentials  

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

此示例使用凭据设置S3,对对象操作使用预签名,并设置预签名URL 10分钟(600秒)

   s3.amazonaws.com bucketName pathPrefix s3Region yourIdentity yourCredentials < usepresign >true 600 

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

这是用于Amazon S3官方SDK模板在为HA集群配置文件存储分片时使用。它基于同步集群文件系统的分片和动态提供程序逻辑。

当使用cluster-s3-storage-v3模板,数据临时存储在每个节点的文件系统上Eventual-Cluster二进制提供者,然后传递到S3对象存储进行持久存储。

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

cluster-s3-storage-v3模板配置

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

身份验证方法

Amazon S3支持两种身份验证方法。

  • 基本凭据——如果使用基本凭据,则需要输入身份和凭据参数
  • 默认Amazon Provider Chain凭据—如果使用default Amazon Provider Chain证书,您将需要提供默认的Amazon Provider链搜索凭据

要了解更多信息,以及用于配置S3云存储的完整参数列表,请参见Amazon S3官方SDK模板



   s3.amazonaws.com bucketName pathPrefix s3Region yourIdentity yourCredentials < usepresign >true 600 

模板中有什么?

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

            100000000000   3 2    10 1000 15000 300000 local   15000 5000 5000 200 2 remote   s3.amazonaws.com [ENTER identity HERE] < CREDENTIALS >[ENTER CREDENTIALS HERE] [ENTER path HERE] [ENTER BUCKET NAME .) < / bucketName > < /提供者> < / config >

S3分片

您可以使用多个S3桶实现分片。的s3-sharding在Artifactory中可以使用模板配置与S3的分片。sub-binary提供者,state-aware-s3,模板与s3-sharding模板来实现跨多个S3桶的分片。

分片规则(如冗余和写/读机制)适用于修改文件存储配置后添加到文件存储的新数据。对于文件存储中的现有数据,必须将数据复制到其他新的S3碎片。


S3-sharding模板

s3-sharding模板使用相同的参数Amazon S3官方模板除了UrlPresigning,不支持。

  2    


State-Aware-S3二进制提供者

这个二进制提供程序不是独立的,总是与S3分片一起使用.提供者知道其底层S3桶是否在工作。我通过添加。T还可以从错误中恢复(父提供者负责恢复)checkPeriod字段。

类型
state-aware-s3
checkPeriod

默认值:15000毫秒

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

writeEnabled



默认值:真正的

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

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

S3分片实例

在下面的示例配置中,文件存储使用两个S3碎片、一个区域和一个冗余来实现。

          1   http://s3.amazonaws.com data1212  us- east1  aws-s3 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2   http://s3.amazonaws.com test-tomer -bucket yon1220t us- east1  aws-s3 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2 < /提供者> < / config >

S3分片例2

在下面的示例配置中,文件存储使用两个S3碎片、一个区域和两个冗余来实现。

          2   http://s3.amazonaws.com bucket1 path1 us- east1  aws-s3 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2   http://s3.amazonaws.com bucket2 path2 us- east1  aws-s3 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2 < /提供者> < / config >

S3分片例3

在下面的示例配置中,文件存储使用五个S3碎片、两个区域和两个冗余来实现。

<?xml version = " 1.0 " encoding = " utf - 8 " ?>           3   http://s3.amazonaws.com data120 yond us-east-1 aws-s3 AK...-accessKeyId ePE...-secretAccessKey true 3600 false 2   http://s3.amazonaws.com data125 yont us-east-1 aws-s3 AK...-accessKeyId ePE...-secretAccessKey false true 3600 false 2   http://s3.amazonaws.com data121 yonb us-west-1 aws-s3 AK...-accessKeyId ePE...-secretAccessKey true 3600 false 2   http://s3.amazonaws.com data122 yonb2 us-east-1 aws-s3 AK...-accessKeyId ePE...-secretAccessKey true 3600 false 2   http://s3.amazonaws.com data123 yonb3 us-west-1 aws-s3 AK...-accessKeyId ePE...-secretAccessKey true 3600 false 2  



将文件存储迁移到S3

有两种方法可以将文件存储迁移到S3提供程序。

  • 自动(推荐)
  • 手动

自动迁移文件存储(推荐)

为了确保您的文件存储迁移成功完成而不破坏文件,我们建议配置Artifactory为您自动完成迁移:

为此,您需要在中创建以下链接美元JFROG_HOME / artifactory / var /数据/ artifactory /最终/(如果最终文件夹不存在——当最终的二进制提供程序通过Artifactory重新启动和更新的binarystore.xml被应用时,它会自动创建):

  • 一个有名字的链接_add这指向$ JFROG_HOME / artifactory / var /数据/ artifactory /filestore目录
  • 一个有名字的链接_pre这指向美元JFROG_HOME / artifactory / var /数据/ artifactory / filestore /_pre目录

有了这个设置,一旦Artifactory启动,它就会自动将您的完整文件存储转移到S3提供程序。Artifactory验证上传到S3的每个文件,如果传输成功,则从NFS中删除该文件。

您当前的文件存储将被删除

将文件存储移动到S3提供程序的过程将删除当前的文件存储。我们强烈建议您做一个完整的系统备份在执行此迁移之前。

迁移完成后,可以删除_pre链接和$ JFROG_HOME / artifactory / var /数据/ artifactory/_pre目录


手动Filestore迁移

手动迁移文件存储需要执行以下步骤:

  • 停止Artifactory
  • 复制$ JFROG_HOME / artifactory / var /数据/ artifactory / filestore目录到您的S3对象存储到您配置Artifactory使用S3时指定的桶名和路径。
  • 配置Artifactory以在binarystore.xml文件$ JFROG_HOME / artifactory / var / etc / artifactory文件夹中。
  • 开始Artifactory
  • 没有标签
版权所有©2022 JFrog有限公司