Solr很早就支持数据的同步复制(Replication),同步复制的好处就是可以实现读写分离,一个Master只供用于写入数据创建索引,一个或多个Slave用于检索查询,多个Slave还可以通过一个Nginx反向代理来实现负载均衡。
不过如何在Sunspot中无缝使用Master/Slave架构的Solr集群呢?以前我们的配置里面,Sunspot只支持一个Solr服务器的配置。翻遍了Sunspot的源代码以及Google,终于找到了解决方案:
原来的sunspot.yml配置是这样的:
production:
solr:
hostname: solr-server
port: 8983
log_level: WARNING
现在可以修改为:
production:
solr:
hostname: slave-solr-server
port: 8983
master_hostname: master-solr-server
master_port: 8983
log_level: WARNING
master_solr:
hostname: master-solr-server
port: 8983
log_level: WARNING
最后记得master是write only,而salve是read only!
从这篇文章里面挖掘出来的:
http://tekwalk.blogspot.jp/2011/11/rubyrails-utilizing-solr-in-masterslave.html