使用最新版本?
JFrog平台用户指南
JFrog Artifactoryx文档
要获得最新版本,请访问JFrog统一平台
配置分片二进制提供程序
分片二进制提供程序是中所描述的二进制提供程序配置文件存储.基本分片配置用于为Artifactory Pro的实例配置分片二进制提供程序。
Sharding基本配置
sharding基本配置有以下参数:
lenientLimit |
默认值:1(从版本5.4开始。注意,对于配置了自定义链且不使用内置模板的文件存储,的默认值为 的最低成功写这个的数量必须维护什么才能成功上传.下一个平衡周期(由GC机制触发)将最终将二进制文件传输到足够多的节点,以保留冗余承诺。 例如,如果 当前活动节点的数量必须总是大于或等于配置的lenientLimit。如果设置为0,则必须保留冗余值。 |
readBehavior |
此参数指定从组成分片文件存储的挂载中读取二进制文件的策略。 可能取值为: 设置轮流捡取(默认):使用轮询策略从每个挂载读取二进制文件。 |
writeBehavior |
此参数指定将二进制文件写入组成分片文件存储的挂载的策略。可能取值为: 设置轮流捡取(默认):二进制文件使用循环策略写入每个挂载。 空闲空间:二进制文件被写入具有最大可用空闲空间绝对容量的挂载。 percentageFreeSpace:二进制文件以可用的空闲空间百分比写入挂载。 |
冗余 |
默认值:r = 1 应该为文件存储中的每个二进制文件存储的副本数。注意,冗余必须小于或等于系统中的挂载数量,Artifactory才能使用此配置。 |
concurrentStreamWaitTimeout |
默认值:30,000 ms 为了支持指定的冗余,在缓冲区中累积写流,并使用“r”个线程(根据指定的冗余)写入正在写入的二进制文件的每个冗余副本。二进制文件只有在所有冗余线程完成写入操作后才能被认为已写入。由于所有线程都在竞争写流缓冲区,因此每个线程都将在不同的时间完成写操作。此参数指定任何线程等待所有其他线程完成写操作的时间(毫秒)。 如果写操作失败,可以尝试增加该参数的值。 |
concurrentStreamBufferKb |
默认值:32kb 如果写操作失败,可以尝试增加该参数的值。 |
maxBalancingRunTime |
默认值:3,600,000 ms(1小时)
为了在挂载失败后更快地将系统恢复为完全冗余,可以增加该参数的值。如果您发现这会导致整体系统性能的不可接受的下降,您可以考虑降低该参数的值,但这意味着Artifactory恢复完全冗余所花费的总体时间将更长。
|
freeSpaceSampleInterval |
默认值:3,600,000 ms(1小时) 为了实现它的写行为,Artifactory需要定期查询分片文件存储中的挂载,以检查空闲空间。由于此检查可能是一个资源密集型操作,您可以使用此参数来控制空闲空间检查之间的时间间隔。
如果您预计会有一段时间要密集上传大量二进制文件,那么可以考虑降低这个参数的值,以减少系统中挂载之间的暂时不平衡。
|
minSpareUploaderExecutor |
默认值:2 Artifactory维护一个线程池,用于对每个冗余存储单元执行写操作。根据写活动的强度,最终,一些线程可能会变成空闲的,然后可能会被杀死。然而,Artifactory确实需要在写活动重新开始时维持一些线程的活动。此参数指定应保持活动的最小线程数,以提供冗余存储单元。 |
uploaderCleanupIdleTime |
默认值:120,000 ms(2分钟) 线程在成为被杀死的候选线程之前可以保持空闲的最大时间。 |
示例1
下面的代码片段是以下设置的示例配置:
- 缓存的分片二进制提供程序,具有三个挂载和2的冗余.
- 每个挂载“X”都写入一个名为/的目录filestoreX。
- 提供程序的读取策略为设置轮流捡取.
- 提供程序的写策略为percentageFreeSpace.
//为分片二进制provider指定读写策略和冗余度 <子提供商id="shard1" type="state-aware"/> //对于每个子provider (mount),指定文件存储位置 roundRobin percentageFreeSpace 2 filestore1 filestore2 filestore3
示例2
下面的代码片段显示了“double-shards”模板,该模板可用于二进制存储配置。
分片-fs-1 分片-fs-2
双碎片模板使用一个缓存的提供程序,该提供程序具有两个挂载和1的冗余,即每个工件只存储一个副本。
1
要修改模板的参数,您可以更改模板定义中元素的值。例如,将配置的冗余增加到2,只需修改> <冗余
标签如下所示。
2
跨分区分片配置
在HA Artifactory集群中跨多个区域进行分片,允许您创建分片数据的区域或区域,以便在某个区域不可用时提供额外的冗余。您可以确定在两个区域之间写入数据的顺序,也可以设置在向相邻区域中的挂载写入数据时建立空闲空间的方法。
中的跨分区分片配置可使用以下参数binarystore.xml文件:
readBehavior |
此参数指定从构成跨区域分片文件存储的挂载中读取二进制文件的策略。 区:根据分区设置从每个挂载中读取二进制文件。 |
writeBehavior |
该参数指定了将二进制文件写入跨区域分片挂载的策略: 可能取值为: zonePercentageFreeSpace:二进制文件被写入可用空闲空间百分比最高的相关区域的挂载。 zoneFreeSpace:B二进制数被写入可用空闲空间绝对容量最大的区域中的挂载。 |
添加到ha-node。属性文件
中的跨分区分片配置可使用以下参数ha-node.properties文件:
node.id |
此服务器的唯一描述性名称。 独特性 确保每个节点都有一个在整个网络中惟一的id。 |
cross.zone.order |
此参数设置数据写入挂载的区域顺序。在下面的例子中, “cross.zone.order = " us-east1us-east2”,分片将写入US-EAST-1区,然后写入US-EAST-2区。 |
可以使用ha-node向现有分片集群动态添加节点。属性文件。要做到这一点,您需要您的集群已经配置了分片,并通过添加' cross.zone.order=us-east-1,us-east-2”财产,新节点将能够写入现有的集群节点,而无需更改binarstore .xml文件。
例子:
本例展示了一个跨区域分片场景,其中Artifactory集群配置了2个冗余,包括以下步骤:
- 开发人员首先将包部署到最近的Artifactory节点。
- 然后,包自动部署到“US-EAST-1”区域,部署到“S1”碎片中空闲空间百分比最高的碎片(空闲空间为51%)。
- 该包使用与“S3”碎片相同的方法进行部署,该碎片在“US-EAST-2”区域中也具有最高百分比的空闲空间。
下面的代码片段是跨区域设置的示例配置:
- 1人工集群横跨2个区域:“us-east-1”和“us-east-2”。
- 4个HA节点,每个分区2个。
- 4个坐骑(碎片),每个区域2个坐骑。
- 提供程序的写策略为zonePercentageFreeSpace.
例如:ha-node.properties中的跨分区分片配置
node.id=west-node-1 cross.zone.order=”us-east-1,us-east-2”
例如:binarstore .xml文件中的跨分区分片配置
2 zone zonePercentageFreeSpace mount1 filesoredir > us-east-1 mount2 us-east-1 mount3 us-east-2 mount4 zone>us-east-2 - 1人工集群横跨2个区域:“us-east-1”和“us-east-2”。
使用平衡从挂载失败中恢复
在挂载失败的情况下,系统中的实际冗余将相应减少。与此同时,二进制文件继续被写入剩余的活动挂载。一旦恢复了发生故障的挂载,系统需要重新平衡写入剩余活动挂载的二进制文件,以完全恢复(即平衡)系统中配置的冗余。根据失败的挂载处于非活动状态的时间长短,这可能涉及到现在需要将大量二进制文件写入恢复的挂载,这可能会花费大量时间。由于恢复完全冗余是一个资源密集型操作,因此平衡操作在一系列不同的会话中运行,直到完成。之后自动调用垃圾收集系统中存在已运行的进程。
恢复不平衡的冗余存储单元平衡
在自愿操作导致系统冗余不平衡的情况下,例如在执行文件存储迁移时,您可以使用优化系统存储REST API端点。应用此端点会引发一个标志,以便Artifactory在下一次垃圾收集之后运行重新平衡。注意,为了加快重新平衡,您可以从Artifactory UI手动调用垃圾收集。
优化系统存储
Artifactory REST API提供了一个端点,该端点允许您提出一个标志,以指示Artifactory应该在下一次垃圾收集之后调用分片文件存储的冗余存储单元之间的平衡。详情请参阅优化系统存储.