如何使用TarMK冷备用运行AEM how-to-run-aem-with-tarmk-cold-standby
简介 introduction
Tar微内核的冷备用容量允许一个或多个备用AEM实例连接到主实例。 同步过程只意味着它只从主实例到备用实例完成。
备用实例的目的是保证主控存储库的Live Data Copy,并确保在主控因任何原因不可用时快速切换,而不会丢失数据。
内容在主实例和备用实例之间线性同步,而无需进行任何完整性检查文件或存储库损坏。 由于这种设计,备用实例是主实例的精确副本,无法帮助缓解主实例上的不一致问题。
- OSGI Web控制台
工作原理 how-it-works
在主AEM实例上,打开一个TCP端口,该端口正在侦听传入消息。 目前,奴隶将向主控发送两种类型的消息:
- 请求当前头的分段ID的消息
- 请求具有指定ID的区段数据的消息
备用设备定期请求主设备当前头的段ID。 如果区段在本地未知,则将检索该区段。 如果已存在,则会比较区段,并在必要时也会请求引用的区段。
典型的TarMK冷备用部署:
其他特征 other-characteristics
稳健性 robustness
数据流设计用于自动检测和处理连接和网络相关问题。 所有数据包都与校验和捆绑在一起,一旦连接或损坏数据包发生重试机制问题,就会立即触发。
性能 performance
在主实例上启用TarMK冷备用对性能几乎没有可衡量的影响。 额外的CPU消耗非常低,额外的硬盘和网络IO不应产生和性能问题。
在待机状态下,在同步过程中,CPU消耗可能会很高。 由于该过程不是多线程的,因此无法通过使用多个内核来加速。 如果没有数据发生更改或传输,则将没有可衡量的活动。 连接速度将因硬件和网络环境而异,但不取决于存储库的大小或SSL的使用情况。 在估算初始同步所需的时间或在主节点上同时更改了大量数据时,应牢记这一点。
安全性 security
假设所有实例都在同一内部网安全区域中运行,则安全违规的风险大大降低。 但是,您可以通过启用从服务器与主控之间的SSL连接来添加额外的安全层。 这样做可以降低中间人对数据造成损害的可能性。
此外,您还可以通过限制传入请求的IP地址来指定允许连接的备用实例。 这应有助于确保内联网中的任何人都无法复制存储库。
创建AEM TarMK冷备用设置 creating-an-aem-tarmk-cold-standby-setup
- 来自org.apache.jackrabbit.oak。plugins.segment.standby.store.StandbyStoreService到org.apache.jackrabbit.oak.segment.standby.StandbyStoreService
- 来自org.apache.jackrabbit.oak。plugins.segment.SegmentNodeStoreService到org.apache.jackrabbit.oak.segment.SegmentNodeStoreService
要创建TarMK冷备用安装,首先需要通过执行主安装文件夹的整个文件系统副本到新位置来创建备用实例。 然后,您可以使用将指定其角色的运行模式启动每个实例( primary
或 standby
)。
以下是创建具有一个主控实例和一个备用实例的设置时需要遵循的过程:
-
安装AEM。
-
关闭实例,并将其安装文件夹复制到冷备用实例将从的位置。 即使从不同的计算机运行,也应确保为每个文件夹提供一个描述性名称(如 aem-primary 或 aem-standby)来区分实例。
-
转到主实例的安装文件夹,然后:
- 检查并删除您可能在
aem-primary/crx-quickstart/install
- 创建名为
install.primary
在aem-primary/crx-quickstart/install
- 为下的首选节点存储和数据存储创建所需的配置
aem-primary/crx-quickstart/install/install.primary
- 创建一个名为
org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config
并相应地对其进行配置。 有关配置选项的更多信息,请参阅 配置. - 如果您将AEM TarMK实例与外部数据存储一起使用,请创建一个名为
crx3
在aem-primary/crx-quickstart/install
已命名crx3
- 将数据存储配置文件放置在
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的示例
code language-xml org.apache.sling.installer.configuration.persist=B"false" customBlobStore=B"true" standby=B"false"
org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config的示例
code language-xml org.apache.sling.installer.configuration.persist=B"false" mode="primary" port=I"8023"
org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config的示例
code language-xml org.apache.sling.installer.configuration.persist=B"false" path="./crx-quickstart/repository/datastore" minRecordLength=I"16384"
- 检查并删除您可能在
-
启动主运行模式,确保指定主运行模式:
code language-shell java -jar quickstart.jar -r primary,crx3,crx3tar
-
为 org.apache.jackrabbit.oak.segment 包。 将日志级别设置为“Debug”,并将其日志输出指向单独的日志文件,如 /logs/tarmk-coldstandby.log. 有关更多信息,请参阅 记录.
-
转到 待机 实例,然后通过运行jar启动它。
-
创建与主日志记录配置相同的日志记录配置。 然后,停止实例。
-
接下来,准备备用实例。 为此,您可以执行与主实例相同的步骤:
-
删除您可能在下拥有的任何文件
aem-standby/crx-quickstart/install
. -
创建一个名为
install.standby
在aem-standby/crx-quickstart/install
-
创建两个名为的配置文件:
org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.config
-
创建一个名为
crx3
在aem-standby/crx-quickstart/install
-
创建数据存储配置,并将其放在
aem-standby/crx-quickstart/install/crx3
. 在本例中,您需要创建的文件是:- org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config
-
编辑文件并创建必要的配置。
以下是典型备用实例的示例配置文件:
org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config的示例
code language-xml 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的示例
code language-xml 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的示例
code language-xml org.apache.sling.installer.configuration.persist=B"false" path="./crx-quickstart/repository/datastore" minRecordLength=I"16384"
-
-
启动 待机 使用备用运行模式进行实例:
code language-xml java -jar quickstart.jar -r standby,crx3,crx3tar
该服务也可以通过以下方式通过Web控制台进行配置:
- 转到Web控制台:
https://serveraddress:serverport/system/console/configMgr
- 正在查找名为 Apache Jackrabbit Oak区段Tar冷备用服务 并双击该页面以编辑设置。
- 保存设置并重新启动实例,以便新设置生效。
首次同步 first-time-synchronization
准备完成并首次启动备用后,当备用赶上主备用时,实例之间将会有大量网络流量。 您可以查阅日志来观察同步的状态。
待机 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地址。
在 主要 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
在这种情况下,日志中提到的“客户”是 待机 实例。
在这些条目停止在日志中显示后,您可以安全地假定同步过程已完成。
虽然上述条目显示轮询机制运行正常,但在发生轮询时了解是否有任何数据正在同步通常非常有用。 为此,请查找如下条目:
*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
配置 configuration
以下OSGi设置可用于冷备用服务:
-
保留配置: 如果启用,则会将配置存储在存储库中,而不是传统的OSGi配置文件中。 建议在生产系统上禁用此设置,以便备用系统不会拉取主配置。
-
模式(
mode
): 这将选择实例的运行模式。 -
端口(端口): 用于通信的端口。 默认为
8023
。 -
主主机(
primary.host
): — 主实例的主机。 此设置仅适用于备用设备。 -
同步间隔(
interval
): — 此设置确定同步请求之间的间隔,并且仅适用于备用实例。 -
允许的IP范围(
primary.allowed-client-ip-ranges
): — 主要允许连接的IP范围。 -
安全(
secure
): 启用SSL加密。 要使用此设置,必须在所有实例上启用此设置。 -
备用读取超时(
standby.readtimeout
): 从备用实例发出的请求超时(以毫秒为单位)。 使用的默认值为60000(一分钟)。 -
备用自动清理(
standby.autoclean
): 如果存储的大小在同步周期中增加,请调用cleanup方法。
故障转移过程 failover-procedures
如果主实例因任何原因而失败,您可以设置其中一个备用实例,通过更改启动运行模式来承担主实例的角色,如下所述:
-
转到安装备用实例的位置,然后停止该实例。
-
如果已使用设置配置了负载平衡器,则可以在此时从负载平衡器的配置中删除主。
-
备份
crx-quickstart
文件夹。 在设置新待机时,可以将其用作起点。 -
使用
primary
运行模式:code language-shell java -jar quickstart.jar -r primary,crx3,crx3tar
-
向负载平衡器中添加新的主。
-
创建并启动新的备用实例。 有关更多信息,请参阅 创建AEM TarMK冷备用设置.
对冷备用设置应用修补程序 applying-hotfixes-to-a-cold-standby-setup
将修补程序应用到冷备用安装程序的推荐方法是:将它们安装到主实例,然后将其克隆到新的冷备用实例,并安装修补程序。
您可以按照以下步骤操作:
- 通过转到JMX控制台并使用 org.apache.jackrabbit.oak:状态(“备用”) 豆子。 有关如何执行此操作的更多信息,请参阅 监控.
- 停止冷备用实例。
- 在主实例上安装修补程序。 有关如何安装修补程序的更多详细信息,请参阅 如何使用包.
- 在安装后测试实例以了解问题。
- 通过删除其安装文件夹来删除冷备用实例。
- 停止主实例并克隆该实例,方法是将其整个安装文件夹的文件系统副本复制到冷备用位置。
- 重新配置新创建的克隆以充当冷备用实例。 有关更多详细信息,请参阅 创建AEM TarMK冷备用设置。
- 启动主实例和冷备用实例。
监测 monitoring
该功能使用JMX或MBean公开信息。 这样,您就可以使用 JMX控制台. 该信息可在的MBean中找到 type org.apache.jackrabbit.oak:type="Standby"
已命名 Status
.
备用
观察备用实例时,您将公开一个节点。 ID通常是通用UUID。
此节点具有五个只读属性:
Running:
布尔值,指示同步进程是否正在运行。Mode:
客户:后跟用于标识实例的UUID。 请注意,每次更新配置时,此UUID都会发生更改。Status:
当前状态的文本表示(如running
或stopped
)。FailedRequests:
连续错误的数量。SecondsSinceLastSuccess:
自上次与服务器成功通信后经过的秒数。 将显示-1
如果尚未成功通信,则为。
还有三种可调用的方法:
start():
启动同步过程。stop():
停止同步过程。cleanup():
在待机上运行清理操作。
主要
观察主设备会通过ID值为TarMK备用服务所使用的端口号的MBean公开一些常规信息(默认为8023)。 大多数方法和属性与备用方法相同,但有些方法和属性不同:
Mode:
将始终显示值primary
.
此外,可检索与主控连接的多达10个客户端(备用实例)的信息。 MBean ID是实例的UUID。 这些MBean没有可调用的方法,但有一些非常有用的只读属性:
Name:
客户端的ID。LastSeenTimestamp:
文本表示形式中最后一个请求的时间戳。LastRequest:
客户端的最后一个请求。RemoteAddress:
客户端的IP地址。RemotePort:
客户端用于最后一个请求的端口。TransferredSegments:
传输到此客户端的区段总数。TransferredSegmentBytes:
传输到此客户端的总字节数。
冷备用存储库维护 cold-standby-repository-maintenance
修订版清理 revision-clean
cleanup ()
将自动对备用实例执行操作。Adobe建议定期运行维护,以防止存储库随时间的推移而过度增长。 要手动执行冷备用存储库维护,请执行以下步骤:
备用实例完成与主实例的同步可能比通常花费的时间长,因为离线压缩会有效地重写存储库历史记录,从而使计算存储库中的更改需要更长时间。 还应指出,此过程完成后,备用存储库的大小将与主存储库上的存储库的大小大致相同。
作为替代方法,在主存储库上运行压缩后,可以手动将主存储库复制到备用存储库,实际上每次压缩运行时都会重建备用存储库。
数据存储垃圾收集 data-store-garbage-collection
对文件数据存储实例不时运行垃圾收集很重要,否则,已删除的二进制文件将保留在文件系统上,最终填满驱动器。 要运行垃圾收集,请按照以下步骤操作: