设为首页 收藏本站
查看: 736|回复: 0

[经验分享] Solr4.0升级参考

[复制链接]

尚未签到

发表于 2017-3-1 07:44:10 | 显示全部楼层 |阅读模式
  转载: http://wiki.fnil.net/index.php?title=Solr4.0%E5%8D%87%E7%BA%A7%E5%8F%82%E8%80%83

声明


  • 本Wiki上的任何文字信息均在GNU自由文档许可证1.3或更高版本下发布,如果用于任何商业用途都需经本人同意。任何转载都请注明出处。
  • 本Wiki上的内容来自本人的学习笔记,来源可能包括原创、书籍、网页、链接等,如果侵犯了您的知识产权,请与本人联系,我将及时删除。
  • 我的联系方式 killme2008@gmail.com

介绍
  最近负责solr集群的升级,从solr 3.x的一个shard集群升级到solr 4.0的cloud集群。

Why
  Solr 4.0引入了SolrCloud功能,利用zookeeper做到全自动的分区、负载均衡,无需再人工做痛苦的shard切分,也不需要利用Haproxy或者Nginx做前端的负载均衡。索引添加和更新,会自动路由到正确的shard master做更新,并分布式同步到shard slave。查询会自动地从各个shard(shard内的master/slave也会做负载均衡)做查询并汇集结果。这是我们升级的主要动力。Solr 4.0还有一个NRT,近实时搜索的特性也是我们比较关注的。
DSC0000.jpg

  整个升级主要参考SolrCloud这篇文档。

配置变更

schema.xml
  schema.xml 必须加入_version_字段:

   <field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>

solrconfig.xml


  • indexDefaults和mainIndex合并成indexConfig
  • 加入

   <luceneMatchVersion>LUCENE_CURRENT</luceneMatchVersion>

  选择你使用的lucene版本号。


  • 找到updateHandler,并加入updateLog,用于生成事务日志

     <updateLog>
<str name="dir">${solr.data.dir:}</str>
</updateLog>


  • 原来用于复制的replicationHandler可以简化成:

     <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />


  • 添加/get handler:

     <requestHandler name="/get" class="solr.RealTimeGetHandler">
<lst name="defaults">
<str name="omitHeader">true</str>
</lst>
</requestHandler>


  • 如果没有添加admin handler,必须添加:

     <requestHandler name="/admin/" class="solr.admin.AdminHandlers" />

  solr.xml保持默认:

      <cores adminPath="/admin/cores"


  • DistributedUpdateProcessor会自动添加到update链里,但是你也可以手动添加:

   <updateRequestProcessorChain name="sample">
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="my.package.UpdateFactory"/>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>


  • solr.DisMaxRequestHandler相关handler需要删除。
  • solr.AnalysisRequestHandler相关handler需要删除。

启动
  1. 在第一次创建cloud集群的时候,第一个节点的启动必须特殊处理,启动参数类似(以多个core为例):

   #Startup the first node.
export BASE_DIR=.
export JVM_ARGS="-Xmx16G -Xms16G"
export ZK_SERVERS="localhost:2181"
export ZK_TIMEOUT=20000
export SHARDS=2
java $JVM_ARGS -Dbootstrap_conf=true -DzkHost=$ZK_SERVERS -DzkClientTimeout=$ZK_TIMEOUT -DnumShards=$SHARDS  -Dsolr.solr.home=$BASE_DIR -jar $BASE_DIR/start.jar 2>&1 >> $BASE_DIR/logs/solr.log &

  
重要参数说明如下:


  • bootstrap_conf If you pass -Dbootstrap_conf=true on startup, each SolrCore you have configured will have it's configuration files automatically uploaded and linked to the collection that SolrCore is part of
  • zkHost 用到zookeeper集群服务器列表,逗号隔开
  • zkClientTimeout zookeeper client timeout
  • numShards 多少个分片,例如上面设置为两个分片
  • solr.solr.home solr目录,该目录下需有solr.xml,设定core(现在称为collection)列表,例如:

   <solr sharedLib="lib" persistent="true">
<cores adminPath="/admin/cores" defaultCoreName="test1" host="${host:}" hostPort="${jetty.port:}" >
<core default="true" instanceDir="test1" name="test1"></core>
<core default="false" instanceDir="test2" name="test2"></core>
</cores>
</solr>

  设定了两个collection: test1和test2,他们的配置分别在$solr.solr.home/test1和$solr.solr.home/test2目录下。
  2. 当第一次创建集群的时候,第一个节点启动后会等待其他节点启动,因为要组成一个shard集群,必须至少有numShards个节点启动。
  3. 其他节点启动无需传入-Dbootstrap_conf=true和-DnumShards:

   java $JVM_ARGS -DzkHost=$ZK_SERVERS -DzkClientTimeout=$ZK_TIMEOUT -Dsolr.solr.home=$BASE_DIR -jar $BASE_DIR/start.jar 2>&1 >>$BASE_DIR/logs/solr.log &

  只需zookeeper相关参数就够了。
  4. 更健壮的启动脚本应该将solr作为daemon service开机启动。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348519-1-1.html 上篇帖子: HTML5 WebSocket之HelloWorld 下篇帖子: 2012年末工作中遇到的问题总结及感悟
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表