Solr 8 legacyCloud模式动态核心发现确认及Solr 9变更问询
Solr 8 legacyCloud模式与Solr 9升级相关问题解答
背景场景
当前使用Solr 8.11 SolrCloud环境,在clusterprops.json中配置legacyCloud=true,启动时基于目录结构和core.properties文件动态创建集合与核心;执行zkcli.sh linkconfig命令后,集合状态存储在ZooKeeper的state.json中,计划升级至Solr 9并遇到模式差异问题。
问题1:Solr 8开启legacyCloud=true是否确实支持基于手动目录结构与core.properties注册集合与核心?
是。当legacyCloud=true时,SolrCloud启用遗留云模式,允许通过手动创建核心目录、放置core.properties文件的方式注册核心与集合。Solr启动时会扫描本地核心目录,读取core.properties中的配置(如集合名、分片信息等),自动将核心注册到集群,无需通过Collections API创建。
问题2:是否有Solr源码、Jira工单或官方文档佐证该行为?
- 官方文档:Solr 8.x官方文档明确说明
legacyCloud参数用于兼容旧版SolrCloud的核心管理方式,支持通过本地目录和core.properties进行核心发现;该模式下不会生成clusterstate.json,集群状态通过state.json动态生成。 - Jira工单:SOLR-12418 引入
legacyCloud参数,目的是支持从Solr 6.6之前的旧版本升级时,保留手动核心管理的能力,工单中明确描述了该模式下核心发现的逻辑。 - 源码:Solr 8.11的
CoreContainer类中,当legacyCloud为true时,会启用LegacyCloudCoreDescriptorProvider,该类负责扫描本地核心目录、解析core.properties并同步到ZooKeeper的state.json中。
问题3:Solr 9弃用legacyCloud=true是否强制使用Collections API,导致手动核心发现与ZooKeeper状态同步不可行?
是。Solr 9中legacyCloud模式已被完全弃用,相关核心发现逻辑(如LegacyCloudCoreDescriptorProvider)已被移除。此时所有核心与集合的管理必须通过Collections API完成,手动创建目录和core.properties不会被Solr识别,也无法同步到ZooKeeper的集群状态中;ZooKeeper中的state.json完全由Collections API的操作维护,用户无法手动干预。
问题4:若Solr 9 SolrCloud不再支持手动核心发现,是否只能切换至独立(用户管理模式)环境保留手动创建核心?
- 是,Solr 9的SolrCloud模式已彻底移除手动核心发现的能力,若要保留手动创建核心的方式,只能切换到独立模式(用户管理核心模式)。
- 用户管理模式的Solr完全独立于ZooKeeper,无法使用ZooKeeper的集群相关功能(如分片复制、集群状态同步等)。该模式下Solr仅作为单个实例运行,核心完全由用户通过目录和
core.properties手动管理,不具备分布式集群的特性。
内容的提问来源于stack exchange,提问作者BrTkCa
相关产品推荐
相关产品推荐

