云客户?
免费开始>
在MyJFrog中升级>
云的新功能>







S3对象存储概述

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

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并将文件存储库迁移到云之前,我们强烈建议您执行以下操作完整的系统备份

Filestore基本面

此页为您提供有关特定二进制提供程序的信息。有关文件存储库和可以使用的各种文件存储库的详细信息,请参见配置文件存储

您可以优化JFrog平台,以便从云存储下载大型二进制文件,例如Docker映像,方法是将其功能委托为注册表,以便它使用链接响应下载请求。有关更多信息,请参见直接下载云存储


页面内容







设置Artifactory以使用S3

首次安装或升级

如果您要在升级Artifactory或首次安装时将文件存储库移动到S3,我们建议您首先使用默认设置执行Artifactory的标准安装,或者使用当前设置执行标准升级。

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

设置License

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

要做到这一点,确保你的JFROG_HOME美元/ artifactory / var / etc / artifactory / artifactory.lic文件中包含支持S3的许可证。

S3权限

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

配置Artifactory使用S3

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

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

从最终迁移到直接?

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

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

直接上传机制(推荐)

Direct Upload机制允许您上传,而不需要为最终目录维护持久存储。这种机制还允许更快的上传,因为磁盘IO的争用更少,特别是当Artifactory托管在AWS上时。

AWS和Azure支持直接上传(即无需最终上传),但谷歌云平台(GCP)不支持。

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

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

最终上传机制

如果要在S3上传速度较慢的系统上进行上传(例如,当Artifactory托管在本地时),则可能需要使用最终上传机制。最终上传机制还允许您上传何时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官方SDK模板用于S3 Cloud的配置存储和支持下面的一组参数。

类型

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
(在Artifactory版本7.31.10之前命名为kmsServerSideEncryptionKeyId)

默认为N/A。

使用给定KMS加密密钥ID或别名的KMS加密客户端。

这个名字,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

默认值:100,000,000字节

usePresigning设置为false,或者为s3和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-stylepath-style所有地区的访问权限。

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

disableChunkedEncoding

默认值:假

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

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

useDeprecatedBucketExistenceCheck

默认值:假

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

enableSignedUrlRedirect
使直接云存储下载。
signedUrlExpirySeconds

默认值:30(可选)

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

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

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

S3二进制存储模板配置

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

S3直接上传模板(推荐)

S3 direct(或evental -less)模板允许直接上传到S3,绕过最终上传机制。有关更多信息,请参见直接(无最终)vs最终上传机制

        s3.amazonaws.com bucketName pathPrefix s3Region yourIdentity yourCredentials 

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

本例使用您的凭证设置S3,对对象操作使用预签名,并将预签名的URL设置为10分钟(600秒)。d的默认设置maxConnectionsconnectionTimeout,cache-fs maxCacheSize本例中还显示了配置。

< config version = " 2 " > <链模板= " s3-storage-v3-direct " / > <提供者id =“s3-storage-v3”类型=“s3-storage-v3”> <端点> s3.amazonaws.com < /端点> < bucketName > bucketName < / bucketName > <路径> pathPrefix路径< / > < >区域s3Region地区< / > < >身份yourIdentity < /身份> <凭证> yourCredentials < /凭证> < usePresigning >对< / usePresigning > < signatureExpirySeconds > 600 < / signatureExpirySeconds > < maxConnections > 50 < / maxConnections > < connectionTimeout > 10000 < / connectionTimeout > < /提供者> 5000000000  

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

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

在使用cluster-s3-storage-v3模板将数据临时存储在每个节点的文件系统中最终-集群二进制提供程序,然后传递到S3对象存储以进行持久存储。

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

配置Cluster-s3-storage-v3模板

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

身份验证方法

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

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

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



    s3amazonaws.com  bucketName pathPrefix s3Region yourIdentity yourCredentials true 600  

模板里有什么?

虽然您不需要在binarstore .xml中配置任何其他内容,但这就是您要做的cluster-s3-storage-v3模板看起来像在引擎盖下。

                100000000000   3 2   <   1000 15000  300000local   15000 5000 15000 200 2 remote   s3.amazonaws.com [ENTER identity HERE] [ENTER path HERE] [输入桶名  

S3分片

您可以使用多个S3桶实现分片。的s3-shardingArtifactory提供了一个模板,用于配置S3的分片。子二进制提供程序,state-aware-s3,模板与s3-sharding模板来实现跨多个S3桶的分片。

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


S3-sharding模板

s3-sharding模板使用与Amazon S3官方模板除了UrlPresigning,不支持。

  2    


状态感知- s3二进制提供程序

这个二进制提供程序不是独立的,总是与S3分片一起使用.提供者知道它的底层S3桶是否在工作。我T还可以通过添加checkPeriod字段。

类型
state-aware-s3
checkPeriod

默认值:15000毫秒

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

writeEnabled



默认值:真正的

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

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

S3分片示例

在下面的样例配置中,文件存储由两个S3分片、一个区域和一个冗余实现。

           http://s3.amazonaws.com data1212 yon1220d 我们-east-1 aws-s3 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2number>   http://s3.amazonaws.com test-tomers-bucket yon1220t us-east-1 aws-s3id > <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2Number >  

S3分片示例2

在下面的样例配置中,文件存储由两个S3分片、一个区域和两个冗余实现。

           http://s3.amazonaws.com bucket1 path1 us-east-1 aws-s3 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2number>   http://s3.amazonaws.com bucket2 path2 us-east-1 aws-s3id > <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey true 3600 false 2Number >  

S3分片示例

在下面的样例配置中,文件存储由5个S3分片、2个区域和2个冗余实现。

<?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 /最终/(创建它,如果最终文件夹不存在-它是在最终的二进制提供程序通过人工重启(带有更新的binarstore .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目录


手动文件存储迁移

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

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