如何使用TarMK Cold Standby运行AEM

简介

Tar Micro Kernel的冷待机容量允许一个或多个备用AEM实例连接到主实例。 同步过程只表示它只从主实例到备用实例完成。

备用实例的目的是保证主控存储库的Live Data Copy,并确保在主控因任何原因不可用时快速切换而不丢失数据。

内容在主实例和备用实例之间线性同步,无需检查文件或存储库是否损坏。 由于这种设计,备用实例是主实例的精确副本,无法帮助减轻主实例的不一致。

注意

“冷待机”功能用于保护​author​实例上需要高可用性的情况。 如果​使用Tar Micro Kernel的publish​实例需要高可用性,Adobe建议使用发布场。

有关更多可用部署的信息,请参阅建议的部署页。

工作原理

在主AEM实例上,将打开一个TCP端口并侦听传入消息。 目前,从属程序将向主控发送两种类型的消息:

  • 请求当前头的段ID的消息
  • 请求具有指定ID的段数据的消息

备用设备定期请求主设备当前头的段ID。 如果区段在本地未知,则将检索该区段。 如果已存在,则会比较区段,并会根据需要请求引用的区段。

注意

待机实例不接收任何类型的请求,因为它们以仅同步模式运行。 备用实例上唯一可用的部分是Web控制台,以便于捆绑和服务配置。

典型的TarMK冷待机部署:

chlimage_1-86

其他特性

稳健性

数据流设计为自动检测和处理连接和网络相关问题。 所有数据包都与校验和捆绑在一起,一旦连接或损坏的数据包发生问题,将立即触发重试机制。

演出

在主实例上启用TarMK Cold Standby几乎不会对性能产生任何可衡量的影响。 额外的CPU消耗非常低,额外的硬盘和网络IO不应产生和性能问题。

在待机状态下,在同步过程中,您会期望CPU消耗较高。 由于该过程不是多线程的,因此不能通过使用多个内核来加速它。 如果没有数据被更改或传输,将没有可衡量的活动。 连接速度因硬件和网络环境而异,但不取决于存储库的大小或SSL使用。 在估计初始同步所需的时间或在主节点上同时更改了大量数据时,应牢记这一点。

安全

假定所有实例在同一内部网安全区域中运行,则安全违规的风险将大大降低。 但是,您可以通过启用从服务器和主控之间的SSL连接来添加额外的安全层。 这样做会降低数据被中间人破坏的可能性。

此外,您还可以通过限制传入请求的IP地址来指定允许连接的备用实例。 这应有助于确保内部网中的任何人都无法复制存储库。

注意

建议在调度程序和作为Coldy Standby设置一部分的服务器之间添加负载平衡器。 应将负载平衡器配置为仅将用户流量引导到​​实例,以确保一致性,并防止内容通过Cold Standby机制以外的其他方式被复制到备用实例上。

创建AEM TarMK Cold Standby设置

注意

与先前版本相比,AEM 6.3中段节点存储和备用存储服务的PID发生了更改,如下所示:

  • 来自org.apache.jackrabbit.oak。plugins.segment.standby.store.StandbyStoreService到org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService
  • 来自org.apache.jackrabbit.oak。plugins.segment.SegmentNodeStoreService到org.apache.jackrabbit.oak.segment.SegmentNodeStoreService

确保进行必要的配置调整以反映此更改。

要创建TarMK冷备用安装,您首先需要通过执行主安装文件夹的整个文件系统副本到新位置来创建备用实例。 然后,您可以使用将指定其角色(primarystandby)的运行模式开始每个实例。

以下是创建具有一个主控和一个备用实例的设置时需要遵循的过程:

  1. 安装AEM。

  2. 关闭实例,并将其安装文件夹复制到冷备用实例的运行位置。 即使从不同的计算机运行,也应确保为每个文件夹提供一个描述性名称(如​aem-primary​或​aem-standby)以区分不同的实例。

  3. 转到主实例的安装文件夹,并:

    1. 检查并删除您可能在aem-primary/crx-quickstart/install下拥有的任何以前的OSGi配置
    2. aem-primary/crx-quickstart/install下创建名为install.primary的文件夹
    3. aem-primary/crx-quickstart/install/install.primary下为首选节点存储和数据存储创建所需的配置
    4. 在同一位置创建名为org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config的文件,并相应地进行配置。 有关配置选项的详细信息,请参阅配置
    5. 如果将AEM TarMK实例与外部数据存储一起使用,请在aem-primary/crx-quickstart/install下创建一个名为crx3的名为crx3的文件夹
    6. 将数据存储配置文件放入crx3文件夹。

    例如,如果您正在运行具有外部文件数据存储的AEM TarMK实例,则需要以下配置文件:

    • aem-primary/crx-quickstart/install/install.primary/org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
    • aem-primary/crx-quickstart/install/install.primary/org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config
    • aem-primary/crx-quickstart/install/crx3/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config

    在下面,您将找到主实例的示例配置:

    org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config的示例

    org.apache.sling.installer.configuration.persist=B"false"
    customBlobStore=B"true"
    standby=B"false"
    

    org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config的示例

    org.apache.sling.installer.configuration.persist=B"false"
    mode="primary"
    port=I"8023"
    

    org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config的示例

    org.apache.sling.installer.configuration.persist=B"false"
    path="./crx-quickstart/repository/datastore"
    minRecordLength=I"16384"
    
  4. 开始主模式,确保指定主运行模式:

    java -jar quickstart.jar -r primary,crx3,crx3tar
    
  5. 为​org.apache.jackrabbit.oak.segment​包创建新的Apache Sling日志记录器。 将日志级别设置为“调试”,并将其日志输出指向单独的日志文件,如​/logs/tarmk-coldstandby.log。 有关详细信息,请参阅日志记录

  6. 转到​standby​实例的位置,并通过运行jar开始它。

  7. 创建与主日志记录配置相同的日志记录配置。 然后,停止实例。

  8. 接下来,准备待机实例。 通过执行与主实例相同的步骤,可以执行此操作:

    1. 删除可能位于aem-standby/crx-quickstart/install下的所有文件。

    2. aem-standby/crx-quickstart/install下新建一个名为install.standby的文件夹

    3. 创建两个名为:

      • org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
      • org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config
    4. aem-standby/crx-quickstart/install下新建一个名为crx3的文件夹

    5. 创建数据存储配置并将其放在aem-standby/crx-quickstart/install/crx3下。 在本例中,您需要创建的文件为:

      • org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config
    6. 编辑文件并创建必要的配置。

    以下是典型待机实例的示例配置文件:

    org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config的示例

    org.apache.sling.installer.configuration.persist=B"false"
    name="Oak-Tar"
    service.ranking=I"100"
    standby=B"true"
    customBlobStore=B"true"
    

    org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config的示例

    org.apache.sling.installer.configuration.persist=B"false"
    mode="standby"
    primary.host="127.0.0.1"
    port=I"8023"
    secure=B"false"
    interval=I"5"
    standby.autoclean=B"true"
    

    org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config的示例

    org.apache.sling.installer.configuration.persist=B"false"
    path="./crx-quickstart/repository/datastore"
    minRecordLength=I"16384"
    
  9. 使用待机运行模式开始​standby​实例:

    java -jar quickstart.jar -r standby,crx3,crx3tar
    

此服务还可以通过Web控制台进行配置,具体方法如下:

  1. 转到Web控制台:https://serveraddress:serverport/system/console/configMgr
  2. 正在查找名为​Apache Jackrabbit Oak Segment Tar Cold Standby Service​的服务,多次单击它以编辑设置。
  3. 保存设置并重新启动实例,以便新设置生效。
注意

您可以随时检查实例的角色,方法是检查Sling Settings Web控制台中存在的​primary​或​standby​运行模式。

这可以通过转到​http://localhost:4502/system/console/status-slingsettings​并检查​**“运行模式”**​行来完成。

首次同步

在准备完成并首次启动待机时,当待机接近主机时,实例之间将有大量网络流量。 您可以参考日志来观察同步的状态。

在待机​tarmk-coldstandby.log​中,您将看到以下条目:

    *DEBUG* [defaultEventExecutorGroup-2-1] org.apache.jackrabbit.oak.segment.standby.store.StandbyStore trying to read segment ec1f739c-0e3c-41b8-be2e-5417efc05266

    *DEBUG* [nioEventLoopGroup-3-1] org.apache.jackrabbit.oak.segment.standby.codec.SegmentDecoder received type 1 with id ec1f739c-0e3c-41b8-be2e-5417efc05266 and size 262144

    *DEBUG* [defaultEventExecutorGroup-2-1] org.apache.jackrabbit.oak.segment.standby.store.StandbyStore got segment ec1f739c-0e3c-41b8-be2e-5417efc05266 with size 262144

    *DEBUG* [defaultEventExecutorGroup-2-1] org.apache.jackrabbit.oak.segment.file.TarWriter Writing segment ec1f739c-0e3c-41b8-be2e-5417efc05266 to /mnt/crx/author/crx-quickstart/repository/segmentstore/data00016a.tar

在备用的​error.log​中,您应当看到如下条目:

*INFO* [FelixStartLevel] org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService started standby sync with 10.20.30.40:8023 at 5 sec.

在以上日志片段中,10.20.30.40​是主IP地址。

在​primary tarmk-coldstandby.log​中,您将看到以下条目:

    *DEBUG* [nioEventLoopGroup-3-2] org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver got message ‘s.d45f53e4-0c33-4d4d-b3d0-7c552c8e3bbd’ from client c7a7ce9b-1e16-488a-976e-627100ddd8cd

    *DEBUG* [nioEventLoopGroup-3-2] org.apache.jackrabbit.oak.segment.standby.server.StandbyServerHandler request segment id d45f53e4-0c33-4d4d-b3d0-7c552c8e3bbd

    *DEBUG* [nioEventLoopGroup-3-2] org.apache.jackrabbit.oak.segment.standby.server.StandbyServerHandler sending segment d45f53e4-0c33-4d4d-b3d0-7c552c8e3bbd to /10.20.30.40:34998

    *DEBUG* [nioEventLoopGroup-3-2] org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver did send segment with 262144 bytes to client c7a7ce9b-1e16-488a-976e-627100ddd8cd

在这种情况下,日志中提到的“客户端”是​standby​实例。

一旦这些条目停止显示在日志中,您可以安全地假定同步过程已完成。

尽管以上条目显示轮询机制正常工作,但通常有必要了解在轮询发生时是否同步了任何数据。 为此,请查找如下条目:

*DEBUG* [defaultEventExecutorGroup-156-1] org.apache.jackrabbit.oak.segment.file.TarWriter Writing segment 3a03fafc-d1f9-4a8f-a67a-d0849d5a36d5 to /<<CQROOTDIRECTORY>>/crx-quickstart/repository/segmentstore/data00014a.tar

此外,当使用非共享FileDataStore运行时,以下消息将确认二进制文件正在正确传输:

*DEBUG* [nioEventLoopGroup-228-1] org.apache.jackrabbit.oak.segment.standby.codec.ReplyDecoder received blob with id eb26faeaca7f6f5b636f0ececc592f1fd97ea1a9#169102 and size 169102

配置

以下OSGi设置可用于Cold Standby服务:

  • 保留配 置:如果启用,则此配置将存储在存储库中,而不是传统的OSGi配置文件。建议在生产系统上禁用此设置,以使主配置不会由备用设备调用。

  • 模式(mode): 这将选择实例的运行模式。

  • 端口(端口): 用于通信的端口。默认为 8023.

  • 主主机(primary.host): -主实例的主机。此设置仅适用于待机。

  • 同步间隔(interval): —— 此设置确定同步请求之间的间隔,并且仅适用于待机实例。

  • 允许的IP范围(primary.allowed-client-ip-ranges): -主要允许连接的IP范围。

  • 安全(secure):启 用SSL加密。要利用此设置,必须在所有实例上启用它。

  • 待机读取超时(standby.readtimeout):从 待机实例发出的请求超时(以毫秒为单位)。建议的超时设置为43200000。通常建议您将超时值设置为至少12小时。

  • 备用自动清standby.autoclean理(): 如果存储的大小在同步周期上增加,请调用清除方法。

注意

强烈建议主和备用存储库ID不同,以使它们对于卸载等服务可单独识别。

确保覆盖此问题的最佳方法是在备用设备上删除​sling.id​文件,然后重新启动实例。

故障转移过程

如果主实例因任何原因失败,您可以通过更改开始运行模式来设置其中一个备用实例以充当主实例的角色,具体如下所述:

注意

还需要修改配置文件,使其与用于主实例的设置相匹配。

  1. 转到安装备用实例的位置,然后停止它。

  2. 如果您已配置了负载平衡器,则可以在此时从负载平衡器的配置中删除主平衡器。

  3. 从备用安装文件夹备份crx-quickstart文件夹。 在设置新待机时,它可用作起点。

  4. 使用primary运行模式重新启动实例:

    java -jar quickstart.jar -r primary,crx3,crx3tar
    
  5. 向负载平衡器添加新的主映像。

  6. 创建并开始新的备用实例。 有关详细信息,请参阅上面的创建AEM TarMK冷备用设置](/docs/experience-manager-64/deploying/deploying/tarmk-cold-standby.html?lang=zh-Hans#creating-an-aem-tarmk-cold-standby-setup)的过程。[

将修补程序应用于冷待机设置

建议将修补程序应用到冷备份设置的方法是将它们安装到主实例,然后将其克隆到安装了修补程序的新冷备份实例中。

您可以按照以下步骤操作:

  1. 转到JMX控制台并使用​org.apache.jackrabbit.oak停止冷备用实例上的同步过程:状态(“待机”) bean。 有关如何执行此操作的详细信息,请参见监视一节。
  2. 停止冷待机实例。
  3. 在主实例上安装修补程序。 有关如何安装修补程序的详细信息,请参阅如何使用软件包
  4. 在安装后测试实例以查找问题。
  5. 通过删除其安装文件夹删除冷备用实例。
  6. 通过将主实例的整个安装文件夹执行文件系统副本到冷备份位置,停止并克隆它。
  7. 重新配置新创建的克隆以充当冷备用实例。 有关其他详细信息,请参阅创建AEM TarMK冷备用设置。
  8. 开始主实例和冷备用实例。

监测

该功能使用JMX或MBean公开信息。 这样,您就可以使用JMX控制台检查备用和主控的当前状态。 可以在名为Statustype org.apache.jackrabbit.oak:type="Standby"的MBean中找到该信息。

待机

观察待机实例时,您将显示一个节点。 ID通常是通用UUID。

此节点有五个只读属性:

  • Running: 指示同步进程是否正在运行的布尔值。
  • Mode: 客户端:后跟用于标识实例的UUID。请注意,每次更新配置时,此UUID都会更改。
  • Status: 当前状态的文本表示( runningstopped或)。
  • FailedRequests:连续错误的数量。
  • SecondsSinceLastSuccess: 上次成功与服务器通信后的秒数。如果未成功通信,它将显示-1

还有三种可调用的方法:

  • start(): 开始同步过程。
  • stop(): 停止同步进程。
  • cleanup(): 在待机设备上运行清除操作。

主要

观察主服务会通过MBean公开一些一般信息,其ID值是TarMK备用服务使用的端口号(默认为8023)。 大多数方法和属性与待机方法和属性相同,但有些方法和属性不同:

  • Mode: 将始终显示值 primary

此外,可检索与主控连接的多达10个客户机(备用实例)的信息。 MBean ID是实例的UUID。 这些MBean没有可调用的方法,但有一些非常有用的只读属性:

  • Name: 客户端的ID。
  • LastSeenTimestamp: 文本表示形式中最后一个请求的时间戳。
  • LastRequest: 客户端的最后一个请求。
  • RemoteAddress: 客户端的IP地址。
  • RemotePort: 客户端用于最后一个请求的端口。
  • TransferredSegments: 转让给此客户端的区段总数。
  • TransferredSegmentBytes:传输到此客户端的字节总数。

冷备用存储库维护

修订版清理

注意

请勿在待机状态上运行脱机修订清理。 它不需要,而且不会减小分段存储的大小。

注意

如果在主实例上运行联机修订清理,则不需要下面介绍的手动过程。 此外,如果您使用“在线修订清理”,则将自动执行备用实例的cleanup ()操作。

Adobe建议定期运行维护,以防止随着时间的推移存储库出现过度增长。 要手动执行冷备用存储库维护,请执行以下步骤:

  1. 转到JMX控制台并使用​org.apache.jackrabbit.oak停止待机实例上的待机进程:状态(“待机”) bean。 有关如何执行此操作的详细信息,请参阅上面关于监视的一节。

  2. 停止主AEM实例。

  3. 在主实例上运行橡木压实工具。 有关详细信息,请参阅维护存储库

  4. 开始主实例。

  5. 开始备用实例上的备用进程,如第一步所述,使用相同的JMXbean。

  6. 观看日志并等待同步完成。 此时,备用资料库可能出现大幅增长。

  7. 使用第一步中所述的相同JMX Bean对待机实例运行cleanup()操作。

备用实例完成与主实例的同步可能比通常花费的时间长,因为脱机压缩会有效地重写存储库历史记录,因此计算存储库中的更改需要更多时间。 还应注意,此过程完成后,待机存储库的大小将与主存储库的大小大致相同。

作为替代方法,在主存储库上运行压缩后,可以手动将主存储库复制到备用库,实际上是在每次压缩运行时重建备用库。

数据存储垃圾收集

对文件数据存储实例不时运行垃圾收集很重要,否则,已删除的二进制文件将保留在文件系统中,最终填满驱动器。 要运行垃圾收集,请按照以下过程操作:

  1. 按照以上](/docs/experience-manager-64/sites-deploying/tarmk-cold-standby.html?lang=zh-Hans#cold-standby-repository-maintenance)部分[所述运行冷备用存储库维护。

  2. 维护过程完成并重新启动实例后:

    注意

    如果您未使用共享数据存储,垃圾收集首先必须在主数据库上运行,然后在备用数据库上运行。

在此页面上

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free