设置Artifactory以使用S3
第一次安装或升级
如果您正在升级Artifactory的上下文中将您的文件存储移动到S3,或者第一次安装,我们建议您首先使用默认设置进行Artifactory的标准安装,或者使用当前设置进行标准升级。
要将Artifactory文件存储移动到云中,您需要执行以下步骤:
- Artifactory关闭。
- 设置你的许可
- 配置Artifactory以使用S3对象存储提供程序
- 你的文件迁移手动或自动到云
- 启动Artifactory
设置您的许可
要使用S3对象存储,您的Artifactory安装需要用适当的JFrog许可证激活。
要做到这一点,请确保您的JFROG_HOME美元/ artifactory / var / etc / artifactory / artifactory.lic
文件包含支持S3的license。
S3权限
您必须为Artifactory提供对S3桶的完全访问权限,并应用amazons3fullaccess
政策。
配置Artifactory使用S3
方法配置Artifactory的文件存储binarystore.xml
文件。T他binarystore.xml
配置文件位于$ JFROG_HOME / artifactory / var / etc / artifactory
文件夹中。
直接(无最终)和最终上传机制
从最终版本迁移到直接版本?
如果要从任何最终机制迁移到直接上传机制,请确保最终目录为空,否则可能会丢失数据。
默认的S3链模板依赖于最终的上传机制,通过这种机制,当完整的二进制文件被上传到Artifactory时,来自客户机的上传就被认为是成功的。从Artifactory 7.9.0,直接上传机制作为一种替代机制,通过这种机制,上传直到到达S3才被视为成功。这两种方法都有优点,我们将在下面介绍。
直接上传机制(推荐)
直接上传机制使您可以在不需要为最终目录维护持久存储的情况下进行上传。这种机制还允许更快的上传,因为磁盘IO的争用较少,特别是当Artifactory驻留在AWS上时。
直接上传(即无终端上传)可用于AWS和Azure,但不能用于谷歌云平台(GCP)。
可直接下载AWS和GCP,但不是Azure。
- 客户端将工件上传到Artifactory。
- Artifactory接收并同时上传到S3。
- Artifactory将二进制文件上传至S3
- Artifactory将201成功返回给客户端。
- 为工件创建一个数据库条目。
最终上传机制
如果您在S3上传速度较慢的系统上进行上传(例如,当Artifactory托管在prem上时),您可能需要使用最终上传机制。最终上传机制还允许您在何时上传S3关闭或出现网络问题。
- 客户端将工件上传到Artifactory。
- Artifactory收到完整的上传。
- Artifactory向客户端返回一条201成功消息。
- 为工件创建一个数据库条目。
- 二进制文件存储在本地磁盘的最终目录中。
- Artifactory将二进制文件上传到S3。
- 二进制文件将从最终目录中删除。
Amazon S3官方SDK模板
Artifactory提供了s3-storage-v3
使用官方的Amazon SDK配置S3云存储。
高可用性集群需要为S3提供程序使用共享挂载
使用Amazon S3官方SDK模板需要集群的共享挂载。这是因为任意节点将处理对象存储交互,而所有节点将能够向共享挂载添加文件最终目录中。
身份验证机制
支持以下认证方式:
- 基本凭据——这些是下表中的标识和凭据参数
- 默认的Amazon提供者链凭证—这些是默认的Amazon Provider链搜索凭据,顺序如下:
-
- 基于系统属性的凭据
- 凭证档案文件.
- 通过Amazon ECS容器服务交付的凭据.
实例配置文件凭据通过Amazon ECS元数据服务交付。
“Amazon S3官方版Amazon SDK”模板用于配置S3云存储和支持下面的一组参数。
类型 |
s3-storage-v3 |
testConnection |
默认值:真正的 当设置为true时,二进制提供程序将在Artifactory启动时上传和下载一个文件,以验证与云存储提供程序的连接是否完全正常。 |
身份 |
您的云存储提供商身份。 |
凭证 |
您的云存储提供者身份验证凭据。 |
港口 |
云存储提供商端口。 |
地区 |
您希望与之合作的云存储提供商提供的区域。 |
bucketName |
您的全局惟一桶名。 |
路径 |
默认值:filestore |
rootFoldersNameLength |
默认值:2 对象校验和中应用于命名存储中的文件夹的初始字符数。它可以取0到5.0之间的任何值,这意味着校验和文件将存储在对象存储桶的根目录下。 例如,如果对象的校验和是8c335149…而且 |
proxyIdentity |
当您通过代理服务器访问云存储提供商时,需要输入相应的参数。 |
proxyCredential |
|
proxyPort |
|
proxyHost |
|
端点 |
云存储提供商的URL。 Amazon端点:支持JFrog订阅 只有正式的AWS端点,例如 |
useHttp |
默认值:假 定义连接模式。当设置为true时,可以设置一个不安全的HTTP连接。 |
kmsClientSideEncryptionKeyId(命名为kmsServerSideEncryptionKeyId之前Artifactory版本7.31.10) |
默认是N / A。 使用KMS加密客户端,提供KMS加密密钥ID或别名。 这个名字, |
server-side-encryption-aws-kms |
默认是N / A。 |
kmsCryptoMode |
默认值:EncryptionOnly。仅适用于“s3-storage-v3”模板。 使用KMS加密与以下加密策略之一:
有关更多信息,请参见https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-crypto-kms.html. |
useInstanceCredentials |
默认值:false。 设置为true以使用AWS S3作为您的默认提供者链身份验证机制. |
usePresigning |
|
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 usepresign >600 provider>
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 usepresign >600 provider>
模板中有什么?
虽然您不需要在binarystore.xml中配置任何其他内容,但这就是s3-storage-v3模板在底层的样子。
100000000000 3 2 10 1000 15000 300000 local 15000 5000 5000200 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 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey http://s3.amazonaws.com data1212 us- east1 aws-s3 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 <单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey http://s3.amazonaws.com bucket1 path1 us- east1 aws-s3 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