Show Menu
主题×

在AEM 6中配置节点存储和数据存储

简介

在Adobe Experience Manager(AEM)中,二进制数据可以独立于内容节点存储。 二进制数据被存储在数据存储器中,而内容节点被存储在节点存储器中。
可以使用OSGi配置配置数据存储和节点存储。 每个OSGi配置都使用永久标识符(PID)进行引用。

配置步骤

要配置节点存储和数据存储,请执行以下步骤:
  1. 将AEM快速启动JAR文件复制到其安装目录。
  2. 在安装目 crx-quickstart/install 录中创建文件夹。
  3. 首先,通过创建一个配置文件来配置节点存储区,该配置文件的名称是您要在目录中使用的节点存储区选 crx-quickstart/install 项。
    例如,文档节点存储(AEM的MongoMK实施的基础)使用该文件 org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
  4. 编辑文件并设置配置选项。
  5. 使用要使用的数据存储的PID创建配置文件。 编辑文件以设置配置选项。
  6. 启动AEM。

节点存储配置

Oak的较新版本为OSGi配置文件采用了新的命名方案和格式。 新的命名方案要求将配置文件命名为 .config ,而新格式要求输入值,并在此处进 行说明
如果您从旧版Oak升级,请确保先备份该文 crx-quickstart/install 件夹。 升级后,将文件夹的内容恢复到升级后的安装,并将配置文件的扩展名从 .cfg 修改 为。config
如果您正在阅读本文以准备从 AEM 5.x安装进行升级 ,请确保先查阅升级 文档

区段节点存储

段节点存储是Adobe在AEM6中实施TarMK的基础。 它使用 org.apache.jackrabbit.oak.segment.SegmentNodeStoreService PID进行配置。
区段节点存储的PID已从AEM 6 org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService in previous versions 更改为AEM 6. org.apache.jackrabbit.oak.segment.SegmentNodeStoreService 3中的PID。确保进行必要的配置调整以反映此更改。
您可以配置以下选项:
  • repository.home :存储存储库相关数据的存储库主目录路径。 默认情况下,段文件存储在目录 crx-quickstart/segmentstore 下。
  • tarmk.size :段的最大大小(MB)。 默认最大为256MB。
  • customBlobStore :指示使用自定义数据存储的布尔值。 对于AEM 6.3及更高版本,默认值为true。 在AEM 6.3之前,默认值为false。
以下是示例文 org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config 件:
#Path to repo
repository.home="crx-quickstart/repository"

#Max segment size
tarmk.size=I"256"

#Custom data store
customBlobStore=B"true"

文档节点存储

文档节点存储是AEM的MongoMK实施的基础。 它使用 org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService * *PID。 以下配置选项可用:
  • mongouri :连 接到Mongo数据库 所需的MongoURI。 默认为 mongodb://localhost:27017
  • db :Mongo数据库的名称。 缺省值为 Oak . However, new AEM 6 installations use **aem-author** 作为缺省数据库名。
  • cache :缓存大小(以MB为单位)。 它分布在DocumentNodeStore中使用的各种高速缓存中。 默认为 256
  • changesSize :Mongo中用于缓存差异输出的已封闭集合的大小(MB)。 默认为 256
  • customBlobStore :指示将使用自定义数据存储的布尔值。 默认为 false .
以下是示例文 org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config 件:
#Mongo server details
mongouri="mongodb://localhost:27017"

#Name of Mongo database to use
db="aem-author"

#Store binaries in custom BlobStore
customBlobStore=B"false"

数据存储配置

在处理大量二进制文件时,建议使用外部数据存储而不是默认节点存储,以便最大化性能。
例如,如果您的项目需要大量的媒体资源,则将它们存储在File或S3 Data Store下比直接存储在MongoDB中更快地访问它们。
与MongoDB相比,文件数据存储提供了更好的性能,并且Mongo备份和恢复操作在大量资源的情况下也更慢。
有关不同数据存储和配置的详细信息,请参见下文。
为了启用自定义数据存储,您需要确保在相应的节 customBlobStore 点存储配置文件(段节点存储 true 或文档节 点存储)中将其设置为 文档节点存储

文件数据存储

这是Jackrabbit 2中 的FileDataStore 的实现。 它提供了一种将二进制数据作为普通文件存储在文件系统中的方法。 它使用 org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore PID。
以下配置选项可用:
  • repository.home :存储各种存储库相关数据的存储库主目录路径。 默认情况下,二进制文件将存储在目 crx-quickstart/repository/datastore 录下
  • path :存储文件的目录路径。 如果指定,则优先于值 repository.home
  • minRecordLength :数据存储中存储的文件的最小大小(以字节为单位)。 小于此值的二进制内容将嵌入。
使用NAS存储共享文件数据存储时,请确保仅使用高性能设备以避免性能问题。

Amazon S3 Data Store

可以将AEM配置为在Amazon的Simple Storage Service(S3)中存储数据。 它使用 org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config PID进行配置。
为了启用S3数据存储功能,需要下载并安装包含S3数据存储连接器的功能包。 转到 Adobe Repository ,并从1.10.x版的功能包下载最新版本(例如,com.adobe.granite.oak.s3connector-1.10.0.zip)。 此外,您还需要下载并安装AEM 6.5发行说明页面中列出的 最新AEM Service Pack
将AEM与TarMK一起使用时,二进制文件将默认存储在 FileDataStore 中。 要将TarMK与S3数据存储库一起使用,您需要使用运行 crx3tar-nofds 模式启动AEM,例如:
java -jar <aem-jar-file>.jar -r crx3tar-nofds

下载后,您可以按如下方式安装和配置S3 Connector:
  1. 将功能包zip文件的内容解压缩到临时文件夹。
  2. 转到临时文件夹,然后导航到以下位置:
    jcr_root/libs/system/install
    
    
    将上述位置的所有内容复制到 <aem-install>/crx-quickstart/install.
  3. 如果AEM已配置为使用Tar或MongoDB存储,请在继续操作之前,从​ <aem-install>***/ crx-quickstart / install 文件夹删除任何现有配置文件。 需要删除的文件包括:
    • For MongoMK: org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
    • For TarMK: org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
  4. 返回到提取功能包的临时位置,并复制以下文件夹的内容:
    • jcr_root/libs/system/config
    • <aem-install>/crx-quickstart/install
    确保仅复制当前配置所需的配置文件。 对于专用数据存储和共享数据存储设置,都复制文 org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config 件。
    在群集设置中,逐个对群集的所有节点执行上述步骤。 另外,请确保对所有节点使用相同的S3设置。
  5. 编辑文件并添加设置所需的配置选项。
  6. 启动AEM。

升级到1.8.x S3 Connector的新版本

如果您需要升级到1.8.x S3连接器的新版本(例如,从1.8.0升级到1.8.1),请执行以下步骤:
  1. 停止AEM实例。
  2. 导航到 <aem-install>/crx-quickstart/install/15 AEM安装文件夹中,并备份其内容。
  3. 备份后,通过删除文件夹中的所有jar文件,删除旧版S3 Connector及其依赖关系, <aem-install>/crx-quickstart/install/15 例如:
    • oak-blob-cloud-1.6.1.jar
    • aws-java-sdk-osgi-1.10.76.jar
    上述文件名仅用于说明用途,且不是明确的。
  4. 将内容解压缩到单独的文件夹,然后导航到 jcr_root/libs/system/install/15
  5. 将jar文件复制到AEM安 装文件夹中的 <aem-install>/crx-quickstart/install/15。
  6. 启动AEM并检查连接器功能。
您可以使用以下选项来使用配置文件:
  • accessKey:AWS访问密钥。
  • secretKey:AWS秘密访问密钥。 ​注意:或者, IAM角色 ,也可用于身份验证。 如果您使用的是IAM角色,则无需再指定和 accessKey 名称 secretKey
  • s3Bucket:存储段名称。
  • s3地区:桶区域。
  • 路径:数据存储的路径。 默认值为 <AEM安装文件夹>/repository/datastore
  • minRecordLength:应存储在数据存储中的对象的最小大小。 最小/默认为 16KB。
  • maxCachedBinarySize:大小小于或等于此大小的二进制文件将存储在内存缓存中。 大小以字节为单位。 默认值是​ 17408 (17 KB)。
  • cacheSize:缓存的大小。 该值以字节为单位指定。 默认为 64GB
  • 机密:仅在对共享数据存储设置使用无二进制复制时使用。
  • stagingSplitPercentage:配置为用于暂存异步上传的缓存大小的百分比。 The default value is 10 .
  • uploadThreads:用于异步上传的上传线程数。 The default value is 10 .
  • stagingPurgeInterval:从暂存缓存中清除已完成上载的间隔(以秒为单位)。 默认值是 300秒 (5分钟)。
  • stagingRetryInterval:失败上载的重试间隔(以秒为单位)。 默认值是 600秒 (10分钟)。

时段区域选项

美国标准 us-standard
美国西部 us-west-2
美国西部(北加州) us-west-1
欧盟(爱尔兰) EU
亚太地区(新加坡) ap-southeast-1
亚太地区(悉尼) ap-southeast-2
亚太地区(东京) ap-northeast-1
南美(圣保罗) sa-east-1
DataStore缓存
DataStore实现,并支 S3DataStore 持本 CachingFileDataStore AzureDataStore 文件系统缓存。 当DataStore CachingFileDataStore 位于NFS(网络文件系统)上时,该实现很有用。
从旧缓存实现(Oak 1.6之前)升级时,本地文件系统缓存目录的结构会有所不同。 在旧缓存结构中,下载的文件和上传的文件都直接放在缓存路径下。 该新结构将下载和上传分离,并将它们存储在两个名为和缓存路径 upload 下的 download 目录中。 升级过程应是无缝的,任何挂起的上传应安排在上传时间内,并且在初始化时,缓存中之前下载的任何文件都将放入缓存中。
您还可以使用oak-run命令脱机 datastorecacheupgrade 升级缓存。 有关如何执行该命令的详细信息,请查 oak-run模块的自述文件。
缓存有大小限制,可使用cacheSize参数配置缓存。
下载
在从DataStore访问所请求的文件/blob之前,将检查本地缓存是否有记录。 当缓存在向缓存中添加文件时超出配置的限制(请参 cacheSize 阅参数)时,将逐出一些文件以回收空间。
异步上传
缓存支持异步上传到DataStore。 文件将在本地暂存在缓存中(在文件系统上),并且异步作业开始上传文件。 异步上传的数量受暂存缓存大小的限制。 升级缓存的大小是使用该参数配置的 stagingSplitPercentage 。 此参数定义用于暂存缓存的缓存大小百分比。 此外,可下载的缓存百分比计算 为(100 - stagingSplitPercentage )* cacheSize
异步上传是多线程的,并且线程数是使用该参数来配置 uploadThreads 的。
上载完成后,文件将移至主下载缓存。 当暂存缓存大小超过其限制时,文件将同步上传到DataStore,直到以前的异步上传完成,并且暂存缓存中的空间再次可用。 上传的文件通过周期作业从暂存区域删除,该作业的间隔由参数配置 stagingPurgeInterval
失败的上传(例如,由于网络中断)被置于重试队列中并定期重试。 重试间隔是使用配置的 stagingRetryInterval parameter

使用Amazon S3配置无二进制复制

要使用S3配置无二进制复制,需要执行以下步骤:
  1. 安装作者实例和发布实例,并确保它们正确启动。
  2. 通过打开页面到https://localhost:4502/etc/replication/agents.author/publish.html,转到复制代理设
  3. 按“设 ”部分中的“编 ”按钮。
  4. 将“序列 化类型 ”选项更改 为“无二进制”
  5. 在传输URI中添 binaryless 加参 true 数“=”。 更改后,uri的外观应类似于:
    https://localhost:4503/bin/receive?sling:authRequestLogin=1&binaryless=true
  6. 重新启动所有作者实例和发布实例,以使更改生效。

使用S3和MongoDB创建群集

  1. 使用以下命令解压缩CQ快速启动:
    java -jar cq-quickstart.jar -unpack
  2. 在解压缩AEM后,在安装目录crx-quickstart /install中创建一个 ​文件夹​**。
  3. 在文件夹内创建以下两个 crx-quickstart 文件:
    • org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService config
    • org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore . config
    创建文件后,根据需要添加配置选项。
  4. 按照上述说明安装S3数据存储所需的两个包。
  5. 确保已安装MongoDB,且某个实例正 mongod 在运行。
  6. 使用以下命令启动AEM:
    java -Xmx1024m -XX:MaxPermSize=256M -jar cq-quickstart.jar -r crx3,crx3mongo
  7. 对第二个AEM实例重复步骤1到4。
  8. 启动第二个AEM实例。

配置共享数据存储

  1. 首先,在共享数据存储所需的每个实例上创建数据存储配置文件:
    • 如果您使用的是名 FileDataStore 为的文件,请创建一 org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config 个名为的文件并将其放在文 <aem-install>/crx-quickstart/install 件夹中。
    • 如果使用S3作为数据存储,请如上所述在文件夹中创 rg.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config 建名 <aem-install>/crx-quickstart/install 为o的文件。
  2. 修改每个实例上的数据存储配置文件以指向同一数据存储。 有关详细信息,请参 阅此文章
  3. 如果已从现有服务器克隆该实例,则需要在存储库处于脱机状态时使用最 clusterId 新的oak-run工具删除新实例。 您需要运行的命令是:
    java -jar oak-run.jar resetclusterid < repository path | Mongo URI >
    
    
    如果已配置区段节点存储区,则需要指定存储库路径。 默认情况下,路径为“ <aem-install-folder>/crx-quickstart/repository/segmentstore. 如果配置了文档节点存储区,则可以使用 Mongo连接字符串URI ”。
    Oak-run工具可从以下位置下载:
    请注意,需要根据您在AEM安装中使用的Oak版本使用不同版本的工具。 在使用该工具之前,请检查以下版本要求列表:
    • 对于Oak版 本1.2.x ,请使用Oak-run 1.2.12或更高版本
    • 对于比上述版 本更新的Oak版本 ,请使用与AEM安装的Oak核心相匹配的Oak-run版本。
  4. 最后,验证配置。 为此,您需要查找每个共享数据存储库添加到数据存储的唯一文件。 文件的格式为,其 repository-[UUID] 中UUID是每个独立存储库的唯一标识符。
    因此,适当的配置应具有与共享数据存储的存储库相同的唯一文件。
    文件的存储方式不同,具体取决于数据存储:
    • 对于文 FileDataStore 件,将在数据存储文件夹的根路径下创建文件。
    • 对于文 S3DataStore 件,在文件夹下配置的S3存储桶中创建 META 文件。

Azure 数据存储

AEM可配置为在Microsoft的Azure存储服务中存储数据。 它使用 org.apache.jackrabbit.oak.plugins.blob.datastore.AzureDataStore.config PID进行配置。
要启用Azure数据存储功能,需要下载并安装包含Azure连接器的功能包。 转到 Adobe Repository ,并从1.6.x版的功能包下载最新版本(例如,com.adobe.granite.oak.azureblobconnector-1.6.3.zip)。
将AEM与TarMK一起使用时,二进制文件默认存储在FileDataStore中。 要将TarMK与Azure dataStore一起使用,您需要使用运行模式启 crx3tar-nofds 动AEM,例如:
java -jar <aem-jar-file>.jar -r crx3tar-nofds

下载后,您可以按如下方式安装和配置Azure连接器:
  1. 将功能包zip文件的内容解压缩到临时文件夹。
  2. 转到临时文件夹,并将其内容复制 jcr_root/libs/system/install 到该文 <aem-install>crx-quickstart/install 件夹。
  3. 如果AEM已配置为使用Tar或MongoDB存储,请在继续操作之前,从文件夹中删除任何现 /crx-quickstart/install 有配置文件。 需要删除的文件包括:
    ForMongoMK:
    org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
    对于TarMK:
    org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
  4. 返回到提取了功能包的临时位置,并将其内容复制到 jcr_root/libs/system/config 该文件 <aem-install>/crx-quickstart/install 夹。
  5. 编辑配置文件并添加安装程序所需的配置选项。
  6. 启动AEM。
您可以使用以下选项来使用配置文件:
  • azureSas="":在连接器版本1.6.3中,增加了Azure共享访问签名(SAS)支持。 如果配置文件中同时存在SAS和存储凭据,则SAS具有优先级。 有关SAS的更多信息,请参阅 官方文档 。 确保“=”字符以“\=”的形式转义。
  • azureBlobEndpoint="":Azure Blob端点。 例如,https://<storage-account>.blob.core.windows.net。
  • accessKey="":存储帐户名称。 有关Microsoft Azure身份验证凭据的更多详细信息,请参阅 官方文档
  • secretKey="":存储访问密钥。 确保“=”字符以“\=”的形式转义。
  • container="":Microsoft azure的blob存储容器名称。 该容器是一组块的组。 有关更多详细信息,请阅读 官方文档
  • maxConnections="":每个操作并发请求数。 默认值为 1。
  • maxErrorRetry="":每个请求的重试次数。 默认值为 3。
  • socketTimeout="":用于请求的超时间隔(以毫秒为单位)。 默认值是5分钟。
除了上述设置之外,还可以配置以下设置:
  • 路径:数据存储的路径。 默认为 <aem-install>/repository/datastore.
  • RecordLength:应存储在数据存储中的对象的最小大小。 默认值为16KB。
  • maxCachedBinarySize:大小小于或等于此大小的二进制文件将存储在内存缓存中。 大小以字节为单位。 默认值为17408(17 KB)。
  • cacheSize:缓存的大小。 该值以字节为单位指定。 默认为64GB。
  • 机密:仅在对共享数据存储设置使用无二进制复制时使用。
  • stagingSplitPercentage:配置为用于暂存异步上传的缓存大小的百分比。 默认值为 10。
  • uploadThreads:用于异步上传的上传线程数。 默认值为 10。
  • stagingPurgeInterval:从暂存缓存中清除已完成上载的间隔(以秒为单位)。 默认值是300秒(5分钟)。
  • stagingRetryInterval:失败上载的重试间隔(以秒为单位)。 默认值是600秒(10分钟)。
所有设置都应放在引号之间,例如:
accessKey="ASDASDERFAERAER"
secretKey="28932hfjlkwdo8fufsdfas\=\="

Data store garbage collection

数据存储垃圾收集过程用于删除数据存储中任何未使用的文件,从而释放该过程中有价值的磁盘空间。
您可以通过以下方式运行数据存储垃圾收集:
  1. 转到位于https://<serveraddress: port>/system/console/jmx的JMX控制台
  2. 搜索 RepositoryManagement。 找到存储库管理器MBean后,单击它以显示可用选项。
  3. 滚动到页面末尾,单击 startDataStoreGC(boolean markOnly)链接
  4. 在以下对话框中,输 false 入该参 markOnly 数,然后单击 调用 :
    markOnly 数表示垃圾收集的扫描阶段是否将运行。

共享数据存储的数据存储垃圾收集

在群集或共享数据存储设置中执行垃圾收集时(使用Mongo或区段Tar),日志可能显示有关无法删除某些blob ID的警告。 这是因为在以前的垃圾收集中删除的blob ID被其他没有ID删除信息的群集或共享节点再次错误地引用。 因此,当执行垃圾收集时,它会在尝试删除在上次运行中已删除的ID时记录一条警告消息。 此行为不影响性能或功能。
在AEM的较新版本中,还可以在多个存储库共享的数据存储上运行数据存储垃圾收集。 要能够在共享数据存储上运行数据存储垃圾收集,请执行以下步骤:
  1. 确保为数据存储垃圾收集配置的所有维护任务在共享数据存储的所有存储库实例上都处于禁用状态。
  2. 在共享数据存储的所 有存储库实例上 ,分别运 ​行二进制垃圾收集中提到的步骤。 但是,请务必在单击“调 true 用”按 markOnly 钮之前输入参数:
  3. 在所有实例上完成上述过程后,再次从任何实例运行数据存储垃圾 收集 :
    1. 转到JMX控制台并选择Repository Manager Mbean。
    2. 单击“ Click startDataStoreGC(boolean markOnly)”链接
    3. 在以下对话框中,再 false 次输入该 markOnly 参数。
    这将整理使用之前使用的标记阶段找到的所有文件,并从数据存储中删除其余未使用的文件。