Solr4.4主从模式配置

Apache Solr 是一个高性能的全文搜索引擎服务器。它是一个独立的企业级搜索应用,使用Java开发,基于Lucene的全文搜索服务。Solr提供了比Lucene更丰富的查询语言,并且实现了强大的全文检索功能。在实际应用中,为了提高系统的可用性和数据的一致性,通常会采用主从模式进行部署。

本文将详细介绍如何在Solr 4.4版本中配置主从模式,以实现数据的同步和高可用。

环境准备

  • 操作系统:Linux (CentOS 7)
  • Java版本:1.8
  • Solr版本:4.4
  • 主节点:192.168.1.100
  • 从节点:192.168.1.101, 192.168.1.102

安装Solr

首先,在所有节点上安装Solr 4.4。这里假设你已经下载了Solr 4.4的压缩包并解压到指定目录。

解压Solr

tar -zxvf solr-4.4.0.tgz -C /opt/

配置环境变量

编辑~/.bashrc文件,添加Solr的环境变量:

export SOLR_HOME=/opt/solr-4.4.0
export PATH=$PATH:$SOLR_HOME/bin

使配置生效:

source ~/.bashrc

启动Solr

启动Solr服务:

cd $SOLR_HOME/example
java -jar start.jar

主节点配置

创建核心

在主节点上创建一个核心(core),例如名为mycore

cd $SOLR_HOME/example/solr
mkdir mycore
cp -r collection1/conf mycore/

修改solrconfig.xml

编辑mycore/conf/solrconfig.xml,添加或修改以下内容来启用主节点的功能:

<requestHandler name="/replication" class="solr.ReplicationHandler" ><lst name="master"><str name="replicateAfter">commit</str><str name="replicateAfter">startup</str></lst>
</requestHandler>

重启Solr

重启Solr以使配置生效:

cd $SOLR_HOME/example
java -jar start.jar

从节点配置

创建核心

在每个从节点上创建与主节点相同的核心:

cd $SOLR_HOME/example/solr
mkdir mycore
cp -r collection1/conf mycore/

修改solrconfig.xml

编辑mycore/conf/solrconfig.xml,添加或修改以下内容来配置从节点:

<requestHandler name="/replication" class="solr.ReplicationHandler" ><lst name="slave"><str name="masterUrl">http://192.168.1.100:8983/solr/mycore/replication</str><str name="pollInterval">00:00:60</str></lst>
</requestHandler>

重启Solr

重启每个从节点上的Solr服务:

cd $SOLR_HOME/example
java -jar start.jar

测试主从同步

  1. 在主节点上索引一些文档。
  2. 访问从节点的管理界面,检查是否成功同步了主节点的数据。

这种配置不仅提高了系统的可用性,还确保了数据的一致性。对于生产环境中的大规模应用,可以考虑进一步优化和扩展,如增加更多的从节点、配置负载均衡等。Apache Solr 是一个高性能的全文搜索引擎服务器,支持分布式搜索和索引复制等功能。在 Solr 4.4 版本中,主从(Master-Slave)模式是一种常见的部署方式,用于实现数据的高可用性和负载均衡。在这种模式下,主节点负责处理所有的更新请求,而从节点则定期从主节点拉取最新的索引数据,并处理查询请求。

下面是一个基于 Solr 4.4 的主从模式配置的示例:

1. 环境准备

假设你有三台机器:

  • 主节点:192.168.1.100
  • 从节点1:192.168.1.101
  • 从节点2:192.168.1.102

每台机器上都安装了 Solr 4.4,并且 Solr 已经启动并运行在默认端口 8983

2. 配置主节点

编辑主节点的 solrconfig.xml 文件,通常位于 solr/collection1/conf/solrconfig.xml

<requestHandler name="/replication" class="solr.ReplicationHandler"><lst name="master"><str name="replicateAfter">commit</str><str name="replicateAfter">startup</str><str name="confFiles">schema.xml,solrconfig.xml</str></lst>
</requestHandler>


3. 配置从节点

编辑从节点的 solrconfig.xml 文件,同样位于 solr/collection1/conf/solrconfig.xml

从节点1配置
<requestHandler name="/replication" class="solr.ReplicationHandler"><lst name="slave"><str name="masterUrl">http://192.168.1.100:8983/solr/collection1/replication</str><str name="pollInterval">00:00:60</str> <!-- 每60秒检查一次更新 --></lst>
</requestHandler>
从节点2配置
<requestHandler name="/replication" class="solr.ReplicationHandler"><lst name="slave"><str name="masterUrl">http://192.168.1.100:8983/solr/collection1/replication</str><str name="pollInterval">00:00:60</str> <!-- 每60秒检查一次更新 --></lst>
</requestHandler>

4. 启动 Solr 实例

确保所有节点上的 Solr 实例都已启动。你可以使用以下命令启动 Solr:

bin/solr start -p 8983

5. 测试主从同步

  1. 在主节点上执行一些索引操作,例如添加文档:
curl "http://192.168.1.100:8983/solr/collection1/update?commit=true" -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">1</field><field name="title">Test Document</field></doc></add>'
  1. 等待一段时间(例如60秒),然后在从节点上查询文档:
curl "http://192.168.1.101:8983/solr/collection1/select?q=id:1"

如果配置正确,你应该能够看到从节点上已经同步了主节点的数据。

6. 监控和维护

你可以通过 Solr 的管理界面或 API 来监控主从同步的状态。例如,访问主节点的 /replication 路径可以查看同步状态:

curl "http://192.168.1.100:8983/solr/collection1/replication?command=details"

Solr 支持主从(Master-Slave)复制模式,这种模式下,主节点负责处理所有的写操作(如添加、删除和更新文档),而从节点则定期从主节点同步数据,以提供读取服务。

在 Solr 4.4 版本中,配置主从模式主要涉及以下几个步骤:

1. 配置主节点

a. 修改 solrconfig.xml

在主节点的 solrconfig.xml 文件中,需要开启复制功能,并指定一些必要的参数。以下是一些关键配置示例:

<requestHandler name="/replication" class="solr.ReplicationHandler" ><lst name="master"><str name="replicateAfter">commit</str><str name="replicateAfter">startup</str><str name="confFiles">schema.xml,solrconfig.xml</str></lst>
</requestHandler>
  • replicateAfter: 指定在哪些情况下触发复制,可以是 commit(提交后)、startup(启动时)等。
  • confFiles: 指定需要复制的配置文件列表。
b. 启动主节点

启动主节点时,确保它能够正常运行并监听网络请求。

2. 配置从节点

a. 修改 solrconfig.xml

在从节点的 solrconfig.xml 文件中,同样需要配置 /replication 请求处理器,但这次是为了配置从节点的行为。示例如下:

<requestHandler name="/replication" class="solr.ReplicationHandler" ><lst name="slave"><str name="masterUrl">http://master-node:8983/solr/your-core-name</str><str name="pollInterval">00:00:60</str></lst>
</requestHandler>
  • masterUrl: 主节点的 URL 地址。
  • pollInterval: 从节点定期检查主节点是否有新数据的时间间隔,格式为 HH:mm:ss
b. 启动从节点

启动从节点时,确保它能够访问到主节点,并且能够正常接收和处理复制的数据。

3. 测试主从复制

a. 在主节点上进行索引操作

在主节点上添加或更新一些文档,然后执行提交操作:

curl 'http://master-node:8983/solr/your-core-name/update?commit=true' -H 'Content-Type: text/xml' --data-binary '<add><doc><field name="id">1</field><field name="name">Test Document</field></doc></add>'
b. 检查从节点

等待一段时间(根据 pollInterval 的设置),然后在从节点上查询刚刚添加的文档,验证是否已经成功复制:

curl 'http://slave-node:8983/solr/your-core-name/select?q=id:1'

如果一切配置正确,从节点应该能够返回与主节点相同的文档。

注意事项

  • 确保主节点和从节点之间的网络连接畅通。
  • 考虑使用负载均衡器来分发读请求,提高系统的可用性和性能。
  • 监控主从复制的状态,确保数据的一致性。

通过以上步骤,你可以在 Solr 4.4 中成功配置主从复制模式。这将有助于提高系统的可靠性和扩展性。