设置Artifactory以使用S3
首次安装或升级
如果您要在升级Artifactory或首次安装时将文件存储库移动到S3,我们建议您首先使用默认设置执行Artifactory的标准安装,或者使用当前设置执行标准升级。
要将Artifactory文件存储库移动到云中,需要执行以下步骤:
- 关闭Artifactory。
- 设置许可证
- 配置Artifactory以使用S3对象存储提供程序
- 迁移文件手动或自动到云端
- 启动装置
设置License
要使用S3对象存储,您的Artifactory安装需要使用适当的JFrog许可证来激活。
要做到这一点,确保你的JFROG_HOME美元/ artifactory / var / etc / artifactory / artifactory.lic
文件中包含支持S3的许可证。
S3权限
您必须为Artifactory提供对S3桶的完全访问权限,并应用amazons3fullaccess
政策。
配置Artifactory使用S3
Artifactory的文件存储库通过binarystore.xml
文件。T他binarystore.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。
- 客户端将工件上传到Artifactory。
- Artifactory接收并同时上传到S3。
- Artifactory完成将二进制文件上传到S3
- Artifactory将201成功返回给客户端。
- 为工件创建一个数据库条目。
最终上传机制
如果要在S3上传速度较慢的系统上进行上传(例如,当Artifactory托管在本地时),则可能需要使用最终上传机制。最终上传机制还允许您上传何时S3宕机或遇到网络问题。
- 客户端将工件上传到Artifactory。
- Artifactory接收完整的上传。
- Artifactory向客户端返回一条201成功消息。
- 为工件创建一个数据库条目。
- 二进制文件存储在本地磁盘的最终目录中。
- Artifactory将二进制文件上传到S3。
- 二进制文件将从最终目录中删除。
Amazon S3官方SDK模板
Artifactory提供s3-storage-v3
使用Amazon官方SDK配置S3云存储的模板。
高可用性集群需要为S3提供程序使用共享挂载
使用Amazon S3官方SDK模板需要集群共享挂载。这是因为任意节点将处理对象存储交互,而所有节点都能够向共享挂载添加文件最终目录中。
身份验证机制
支持以下认证方式:
- 基本凭据——这些是下表中的身份和凭据参数
- 默认的Amazon提供商链凭证-这些是默认的Amazon提供者链搜索凭据,顺序如下:
-
- 基于系统属性的凭证
- 凭据配置文件。
- 通过Amazon ECS容器服务交付的凭据。
通过Amazon ECS元数据服务交付的实例概要凭证。
Amazon S3官方SDK模板用于S3 Cloud的配置存储和支持下面的一组参数。
类型 |
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(在Artifactory版本7.31.10之前命名为kmsServerSideEncryptionKeyId) |
默认为N/A。 使用给定KMS加密密钥ID或别名的KMS加密客户端。 这个名字, |
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 |
默认值: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-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 direct(或evental -less)模板允许直接上传到S3,绕过最终上传机制。有关更多信息,请参见直接(无最终)vs最终上传机制。
s3.amazonaws.com bucketName pathPrefix s3Region yourIdentity yourCredentials provider>
而您不需要在binarystore.xml,这是什么s3-storage-v3
模板可能看起来像在引擎盖下。
本例使用您的凭证设置S3,对对象操作使用预签名,并将预签名的URL设置为10分钟(600秒)。d的默认设置maxConnections
,connectionTimeout
,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 300000 zone>local15000 connectionTimeout> 5000 15000 200 2 remote s3.amazonaws.com [ENTER identity HERE] [ENTER path HERE] [输入桶名
S3分片
您可以使用多个S3桶实现分片。的s3-sharding
Artifactory提供了一个模板,用于配置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分片、一个区域和一个冗余实现。
<单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey http://s3.amazonaws.com data1212 yon1220d 我们-east-1 aws-s3 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分片、一个区域和两个冗余实现。
<单位> AK党……身份-accessKeyId < / > < >凭证ePE……-secretAccessKey http://s3.amazonaws.com bucket1 path1 us-east-1 aws-s3 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以在中使用S3
binarystore.xml
存档于$ JFROG_HOME / artifactory / var / etc / artifactory
文件夹中。 - 开始Artifactory