`
warm_breeze
  • 浏览: 62547 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Apache SolrCloud介绍及安装

    博客分类:
  • Solr
阅读更多
SolrCloud介绍
在我们应用还很渺小的时候,一台Solr服务器能完全胜任这份工作,随着我们应用慢慢长大,访问也越来越多,一台Solr服务器的弊病也逐渐显现如查询变慢了,机器宕机就无法继续提供服务,于是乎我们引入了Solr集群,通过前端负载均衡和索引Replication来分担一台机器的压力,这样既能提高查询速度,也能避免单机故障问题而且是可伸缩的解决方案,一切看起来很OK,问题也暂时解决了,但是好景不长,随着应用的发展,数据也在与日俱增,需要索引的数据也越来越多,索引文件变得越来越庞大,Replication索引变得越来越低效高成本,每个Solr实例都保存全量大索引数据的方式显然又成了系统性能和可伸缩性的瓶颈,如果能将大索引文件切分,分布在集群中不同机器中且查询的准确性和可用性又不会受到影响该是件多么美好的事情啊,于是SolrCloud出现了...
SolrCloud是基于ZooKeeper和Solr的分布式解决方案,为Solr添加分布式功能,用于建立高可用,高伸缩,自动容错,分布式索引,分布式查询的Solr服务器集群;SolrCloud并非一个新的软件发布包,而是Solr4.0版本新增组件用于跟ZooKeeper配合提供分布式功能,部署时只是修改启动配置;
 
SolrCloud安装
SolrCloud是一个分布式解决方案,安装之前需要我们评估自己应用的数据规模,规划SolrCloud集群如划分多少个Shard,每个Shard需要几分冗余即Replication等;通过下面的例子详细讲解下安装SolrCloud的过程;
1,规划SolrCloud
单一SolrCloud数据集合(Collection):mycollection
ZooKeeper集群(ensemble):5台ZooKeeper服务器
3个SolrCloud实例节点,复制因子为3(即索引冗余数)
3个索引分片(Shard)分布在3个SolrCloud节点(node)上
手动将3个索引分片(Shard)的复本(Replica)分布在3个SolrCloud节点上
 
2,Solr安装
分别在192.168.1.1-3上搭建3个Solr服务器节点,如何在Tomcat容器下安装Solr可参照笔者的另外一篇文章,在此不再赘述;
 
3,ZooKeeper集群(ensemble)安装
3.2,解压zookeeper-3.4.5.tar.gz, tar -xvf zookeeper-3.4.5.tar.gz
3.3,创建ZooKeeper配置文件:将zookeeper_home/conf/zoo_sample.cfg重命名为zoo.cfg
3.4,修改ZooKeeper配置文件zoo.cfg如下:
# The number of milliseconds of each tick 
tickTime=2000
# The number of ticks that the initial synchronization phase can take 
initLimit=10
# The number of ticks that can pass between sending a request and getting an acknowledgement 
syncLimit=5
# the directory where the snapshot is stored. Choose appropriately for your environment 
dataDir=/home/myuser/zookeeper/data/
# the port at which the clients will connect 
clientPort=2181
# the directory where transaction log is stored.  this parameter provides dedicated log device for ZooKeeper dataLogDir=/home/myuser/zookeeper/log/
# ZooKeeper server and its port no. ZooKeeper ensemble should know about every other machine in the ensemble specify server id by creating 'myid' file in the dataDir 
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
server.4=192.168.1.4:2888:3888
server.5=192.168.1.5:2888:3888
为每个ZooKeeper服务器分配合适的id(用于标识ZooKeeper服务器)写入myid文件并将其放入dataDir文件夹中
3.5,启动ZooKeeper服务器
# cd /zookeeper_home/bin/
# ./zkServer.sh start
在192.168.1.2-5机器上重复以上步骤;完成ZooKeeper集群(ensemble)的搭建;
 
4,SolrCloud搭建
4.1,在192.168.1.1(可任选一台机器)上创建SolrCloud配置文件目录:/usr/local/solrcloud/config-files
4.2,在192.168.1.1(可任选一台机器)上创建Solr Zk CLI库文件目录:/usr/local/solrcloud/solr-lib
4.3,将solr example中的配置文件Copy到SolrCloud配置文件目录中:cp solr-4.2.0/example/solr/collection1/conf/* /usr/local/solrcloud/config-files
4.4,将solr.war WEB-INF/lib中的jar文件Copy到Solr Zk CLI库文件目录中:cp solr_home/WEB/lib/* /usr/local/solrcloud/solr-cli-lib
4.5,之所以能分布式是因为引入ZooKeeper来统一保存配置文件,故而需要将SolrCloud的配置文件上传到ZooKeeper中:
将配置文件上传到ZooKeeper中
java -classpath .:/usr/local/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181,192.168.1.4:2181,192.168.1.5:2181 -confdir /usr/local/solrcloud/config-files/ -confname myconf
将上传到ZooKeeper中配置文件与Collection相关联
java -classpath .:/usr/local/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection mycollection -confname myconf -zkhost 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181,192.168.1.4:2181,192.168.1.5:2181
可连上ZooKeeper查看上传的配置信息,5台ZooKeeper服务器可任选一台
cd zookeeper_home/bin
./zkCli.sh -server localhost:2181
执行查询命令: ls /configs/myconf,即可看到上传到ZooKeeper的所有配置信息
4.6,在3个Solr服务器节点(端口都为8080)上进行如下操作:
4.6.1,在solr.home中创建solr.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true" sharedLib="lib">
      <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080" hostContext="solr"></cores>
</solr>
4.6.2,在Tomcat启动时加上如下JVM参数:
"-Dsolr.solr.home=/usr/local/solr -DzkHost=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181,192.168.1.4:2181,192.168.1.5:2181"
4.6.3,启动Tomcat: /usr/local/tomcat/bin/startup.sh
4.6.4,访问solr管理页: http://192.168.1.1:8080/solr,即可见如下界面(因为当前还未创建Collection及Core)
到此SolrCloud已经搭建好啦,不过里面啥也没有,需要配置好才能用;
4.7,在SolrCloud中创建数据集(Collection),分片(Shard(s)),复本(Replicas(s))
4.7.1,创建数据集(Collection)
curl 'http://192.168.1.1:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=3&maxShardsPerNode=3'
name:数据集名称
numShards:分片数
replicationFactor:每个分片的复本数
maxShardsPerNode:每个Solr服务器节点上最大分片数(Solr 4.2新增)
4.7.2,将分片(Shards)复本(Replicas)分布在3个Solr服务器节点上
分片(Shard) 1 Replica's(Shard 1 Replica_1 at 192.168.1.2)
curl 'http://192.168.1.1:8080/solr/admin/cores?action=CREATE&name=mycollection_shard1_replica_2&collection=mycollection&shard=shard1'
curl 'http://192.168.1.3:8080/solr/admin/cores?action=CREATE&name=mycollection_shard1_replica_3&collection=mycollection&shard=shard1'
 
分片(Shard) 2 Replica's(Shard 2 Repkica_1 at 192.168.1.3)
curl 'http://192.168.1.1:8080/solr/admin/cores?action=CREATE&name=mycollection_shard2_replica_2&collection=mycollection&shard=shard2'
curl 'http://192.168.1.2:8080/solr/admin/cores?action=CREATE&name=mycollection_shard2_replica_3&collection=mycollection&shard=shard2'
 
分片(Shard) 3 Replica's(Shard 3 Repkica_1 at 192.168.1.1)
curl 'http://192.168.1.2:8080/solr/admin/cores?action=CREATE&name=mycollection_shard3_replica_2&collection=mycollection&shard=shard3'
curl 'http://192.168.1.3:8080/solr/admin/cores?action=CREATE&name=mycollection_shard3_replica_3&collection=mycollection&shard=shard3'
 
5,为SolrCloud创建索引,在SolrCloud上创建索引跟在单个Solr上创建索引方法一样,只不过SolrCloud会自动进行索引分片(Shard)和复制(Replica);
上篇文章中将MySQL中的数据导入到SolrCloud中
建全量索引,在浏览器中输入:http://i192.168.1.1:8080/solr/dataimport?command=full-import&commit=true
上述创建的全量索引会自动分片(Shard),复制(Replica)到集群中的三个Solr服务器节点上;
 
6,在SolrCloud上进行查询
http://192.168.1.1:8080/solr/mycollection/select?q=*:*
q为查询关键字,修改q参数即可对SolrCloud中的所有索引数据进行查询(可通过监控每台Solr服务器节点的日子看到查询会在各个节点上进行,由此可知SolrCloud会将查询分配到各个节点上进行后将各个节点的查询结果汇总);
 
总结,本文讲述了SolrCloud及其应用场景并通过搭建一个具有3个Solr服务器节点的SolrCloud来讲述如何搭建分布式搜索解决方案;通过参照本文的基本方法相信各位可以搭建任意规模的SolrCloud集群;
9
5
分享到:
评论
7 楼 zhy1990113 2013-08-15  
zhy1990113 写道
你好,我在搭建完成,建索引的时候,发现没有自动负载均衡啊
都建在了第一个shard上
求教


哭了
看 clusterstate.json
发现 我的collection 的
"router":"implicit" 是这个值

删掉重建了下 发现变成
"router":"compositeId"

就可以了
不知道什么原因
6 楼 zhy1990113 2013-08-14  
你好,我在搭建完成,建索引的时候,发现没有自动负载均衡啊
都建在了第一个shard上
求教
5 楼 warm_breeze 2013-07-17  
爱儿1988 写道
亲,你说搭建成功之后为SolrCloud创建索引,solrcloud能够自动将索引分片和复制,是否确定?我搭建成功之后,所有的数据集都插入到一个节点上,为什么呢?

这个是肯定的,如果你的ZooKeeper能正常工作的话,在该SolrCloud的任何一个节点上调用创建索引的命令,都会将整个SolrCloud作为一个整体进行Shard和Replication,SolrCloud支持真正的分布式索引和查询,只不过需要几个Shard,每个Shard的位置及Replication需要人工设定
4 楼 爱儿1988 2013-07-13  
亲,你说搭建成功之后为SolrCloud创建索引,solrcloud能够自动将索引分片和复制,是否确定?我搭建成功之后,所有的数据集都插入到一个节点上,为什么呢?
3 楼 xzcgeorge 2013-06-21  
我就不明白了,那些人干嘛要踩呢?总得给出个理由吧?
2 楼 bewithme 2013-06-17  
果断收藏之
1 楼 xzcgeorge 2013-06-17  
好文章,详细具体!
谢谢! 

相关推荐

    solrcloud6安装配置

    SolrCloud是Apache Solr的一种分布式部署模式,它利用Zookeeper进行集群管理和配置同步,提供高可用性和数据的水平扩展。在本篇中,我们将详细探讨如何安装配置SolrCloud 6。 首先,我们需要下载Solr 6.6.0的安装包...

    solrcloud windows 环境搭建

    SolrCloud是Apache Solr提供的一种分布式搜索解决方案,尤其适用于需要大规模容错、分布式索引和检索能力的应用场景。当索引数量较少时,通常无需启用SolrCloud;但在面对庞大的索引数据量和高并发搜索请求时,...

    solrcloud高可用集群搭建

    cp solr-4.6.0/example/lib/ext/*.jar /solrcloud/apache-tomcat-/lib/ ``` **9) 启动 Tomcat 访问 http://localhost:8080/solr 如图,至此单机版 Solr 配置完成** --- ### 总结 通过上述步骤,我们完成了 ...

    SolrCloud应用

    SolrCloud是Apache Lucene项目下的一个分布式搜索和分析服务,它是Apache Solr的一个扩展,设计用于处理大数据和高可用性场景。SolrCloud模式引入了Zookeeper作为集群协调者,实现了分布式索引、搜索以及配置管理。...

    SolrCloud文档

    SolrCloud作为Apache Solr的一个核心特性,主要应用于大规模、高性能的分布式搜索场景。当系统面临海量数据索引及高并发查询请求时,SolrCloud能够提供一套完整且高效的解决方案。 #### SolrCloud的核心价值 - **...

    solrcloud.rar

    SolrCloud是Apache Solr的一种分布式搜索和索引服务模式,它允许用户在多台服务器上部署和管理Solr实例,形成一个高可用、可扩展的搜索引擎集群。在这个集群中,数据分散存储并被索引,同时提供故障转移和负载均衡...

    SolrCloud集群部署

    SolrCloud是Apache Solr的一项重要特性,为大规模、高容错性和分布式索引与检索提供了强大的解决方案。当面临大量索引数据和高并发搜索请求时,采用SolrCloud能够有效地应对挑战。它基于Solr和Zookeeper构建,通过...

    solrCloud5.2.1 + tomcat7 + zookeeper3.4.6

    在D盘根目录创建`solrCloud`文件夹,解压`apache-tomcat-7.0.56.zip`至该目录,并重命名为`tomcat7_ser1`。 2. 解压`solr-5.2.1.tgz`,复制`solr-5.2.1\example\example-DIH\solr`下的`solr`文件夹和`solr.xml`至`...

    SolrCloud集群搭建和使用步骤

    SolrCloud是Apache Solr的一种分布式搜索和处理解决方案,专门针对大规模、高并发、需要容错和近实时搜索的场景。在传统的Solr基础上,SolrCloud引入了ZooKeeper作为集群的配置信息中心,实现了分布式索引和检索的...

    Tomcat上部署SolrCloud.txt

    2. **Tomcat安装配置**:在每台SolrCloud节点机器上安装并配置好Tomcat服务器,确保其能够正常运行。 3. **Solr软件包获取**:下载Solr的war包(solr.war),用于后续部署到Tomcat中。 #### 三、Zookeeper集群搭建...

    solrcloud分布式集群部署zookeeper集群安装+ClientCRUD实例

    1. 安装Solr:下载Apache Solr的最新版本,解压缩后配置`server/solr-webapp/webapp/WEB-INF/web.xml`,设置Zookeeper地址,如`&lt;solrcloud zookeeper="localhost:2181/solr" /&gt;`。 2. 创建Solr集合(Collection):...

    在远程Linux服务器搭建SolrCloud

    为三台远程Linux服务器搭建SolrCloud 本次目的是在tomcat以及zookeeper的基础上,搭建三台远程服务器的SolrCloud 工具:WinSCP,SecureCRT,apache-tomcat-7.0.62,solr-4.10.4,zookeeper-3.4.6 WARNING: 版本注意 ...

    Tomcat+solrcloud6.2整合Web项目

    《Tomcat+SolrCloud6.2整合Web项目详解》 在现代的互联网环境中,高效、精准的全文搜索引擎已经成为各种Web应用不可或缺的一部分。Solr,作为Apache Lucene的一个子项目,以其强大的搜索功能和易扩展性深受开发者...

    SolrCloud集群搭建教程

    顾名思义zookeeper就是动物园管理员,他是用来管hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员, Apache Hbase和 Apache Solr 的分布式集群都用到了zookeeper;Zookeeper:是一个分布式的、开源的程序协调服务,是...

    solrCloud的集群部署

    - 确保已经安装并配置好Zookeeper集群作为SolrCloud的协调服务。 - 在每台Node上安装Solr软件包。 **3.2 启动Solr集群** - 使用以下命令在各节点上启动Solr实例,并连接到预先设置好的Zookeeper集群: ``` [root...

    SolrCloud4.9.0+tomcat7+zookeeper-3.4.6搭建教程

    SolrCloud4.9.0+Tomcat7+Zookeeper3.4.6搭建...SolrCloud的安装和配置 1. 首先,需要下载SolrCloud、Tomcat和Zookeeper的安装包,下载地址分别是: http://archive.apache.org/dist/lucene/solr/4.9.0/solr-4.9.0.zip ...

    solrcloud_role:安装Apache Solr(云)服务器集群的角色

    这个角色可以在Debian环境中安装SolrCloud服务器。 入门 这些说明将为您提供ansible剧本的角色副本。 一旦启动,它将在Debian系统中安装服务器。 该角色在以下位置进行了测试: 德比安 伸展(Java 8和11) 克星...

Global site tag (gtag.js) - Google Analytics