CDCR配置
CDCR配置
源和目标配置在数据中心处于不同集群的情况下有所不同。这里的“集群”是指单独的ZooKeeper集合控制不相交的Solr实例。这些数据中心是否在物理上是分开的,对于这个讨论来说并不重要。
源配置
下面是一个源代码配置文件的例子,在solrconfig.xml部分。<replica>部分的存在导致CDCR将此群集用作源,并且不应出现在目标集合中。有关每个设置的详细信息,请见以下两个示例:
<requestHandler name="/cdcr" class="solr.CdcrRequestHandler">
<lst name="replica">
<str name="zkHost">10.240.18.211:2181,10.240.18.212:2181</str>
<!--
If you have chrooted your Solr information at the target you must include the chroot, for example:
<str name="zkHost">10.240.18.211:2181,10.240.18.212:2181/solr</str>
-->
<str name="source">collection1</str>
<str name="target">collection1</str>
</lst>
<lst name="replicator">
<str name="threadPoolSize">8</str>
<str name="schedule">1000</str>
<str name="batchSize">128</str>
</lst>
<lst name="updateLogSynchronizer">
<str name="schedule">1000</str>
</lst>
</requestHandler>
<!-- Modify the <updateLog> section of your existing <updateHandler>
in your config as below -->
<updateHandler class="solr.DirectUpdateHandler2">
<updateLog class="solr.CdcrUpdateLog">
<str name="dir">${solr.ulog.dir:}</str>
<!--Any parameters from the original <updateLog> section -->
</updateLog>
</updateHandler>
目标配置
下面是一个典型的目标配置。
目标实例必须配置特定于CDCR的更新处理器链。更新处理器链必须包含CdcrUpdateProcessorFactory。此处理器的任务是确保附加到来自CDCR源SolrCloud的更新请求的版本号被重用,并且不被目标覆盖。正确配置的目标配置与此类似。
<requestHandler name="/cdcr" class="solr.CdcrRequestHandler">
<lst name="buffer">
<str name="defaultState">disabled</str>
</lst>
</requestHandler>
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">cdcr-processor-chain</str>
</lst>
</requestHandler>
<updateRequestProcessorChain name="cdcr-processor-chain">
<processor class="solr.CdcrUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>
<!-- Modify the <updateLog> section of your existing <updateHandler> in your
config as below -->
<updateHandler class="solr.DirectUpdateHandler2">
<updateLog class="solr.CdcrUpdateLog">
<str name="dir">${solr.ulog.dir:}</str>
<!--Any parameters from the original <updateLog> section -->
</updateLog>
</updateHandler>
配置详情
配置细节,默认和选项如下:
副本元素
可以将CDCR配置为将更新请求转发到一个或多个目标集合。目标集合是通过“副本”列表定义的,如下所示:
- zkHost
目标SolrCloud的ZooKeeper的主机地址。通常这是Target ZooKeeper集合中每个节点的逗号分隔列表。该参数是必需的。
- Source
要复制的源SolrCloud上集合的名称。该参数是必需的。
- Target
要将更新转发到的Target SolrCloud上的集合的名称。该参数是必需的。
Replicator元素
CDC Replicator是负责将更新转发到副本的组件。Replicator将监视Source集合的更新日志,并将任何新的更新转发到Target集合。
Replicator使用固定的线程池并行地将更新转发到多个副本。如果配置了多个副本,则一个线程将以循环方式每次从一个副本转发一批更新。Replicator可以使用“复制器”列表进行配置,如下所示:
- threadPoolSize
用于转发更新的线程数。建议每个副本一个线程。默认是
2
。 - schedule
监视更新日志的延迟时间(以毫秒为单位)。默认是
10
。 - batchSize
在一个批处理中发送的更新数。最佳大小取决于文档的大小。大批量的大文件可能会显着增加您的内存使用量。默认是
128
。
updateLogSynchronizer元素
Expert:非leader节点需要不时地将其更新日志与其leader节点同步,以清除弃用的事务日志文件。默认情况下,每分钟执行一次这样的同步过程。可以使用“updateLogSynchronizer”列表修改同步计划,如下所示:
- schedule
同步更新日志的延迟时间(以毫秒为单位)。默认是
60000
。
Buffer元素
缓冲更新时,更新日志将无限期地存储所有更新。建议在正常操作期间禁用源和目标群集上的缓冲,因为启用缓冲时,更新日志将无限制地增长。保持启用缓冲用于特殊维护期间。启动时可以使用“缓冲区”列表和参数“defaultState”禁用缓冲区,如下所示:
- defaultState
启动时缓冲区的状态。默认是
enabled
。
缓冲仅适用于维护窗口
缓冲旨在增加维护窗口。应该牢记以下几点:
-
启用缓冲时,更新日志将无限制地增长; 他们将永远不会被清除。
-
在正常操作期间,如果目标数据中心不可用,则更新日志将在源数据中心自动生成;没有必要为CDCR启用缓冲来处理常规的网络中断。
-
因此,建议在源数据中心监视磁盘使用情况,作为目标数据中心正在接收更新的额外检查。
-
-
不应在目标数据中心启用缓冲, 因为更新日志将不受限制地累积。
-
如果启用了缓冲功能,那么禁用更新日志时,将更新日志的内容发送到目标数据中心。这个过程可能需要一些时间。
-
在将新的更新发送到源数据中心之前,不会触发更新日志清理。
-
更多建议: