SolrCloud只是作为Solr的一个突出特性,这个特殊的特性能够实现分布式功能。利用这个功能,你能建立高效、容错的Solr服务器群。这对于访问量规模巨大的企业级应用来说,使用SolrCloud能实现高有效性、容错性、分布式索引和搜索功能。
1了解SolrCloud
千呼万唤,始出来。期待已久,Solr4.1的版本终于发布了。Solr4包含的突出特性SolrCloud, 真的让人眼前一亮。下面,让就来探究一下SolrCloud。
1.1 了解SolrCores 与集合(Collections)
在一个简单的实例中,Solr有一些东西被称作一个SolrCore,其本质上视由于它就是一个单一的索引(Singlle Index)。当你想要多个索引(multiple indexes),你就不等不创建多个SolrCores。使用SolrCloud,一个简单的索引能够跨越多个Solr索引实例。我们称所有这些在逻辑上的索引(Index)的SolrCores为一个集合( A Collection),而一个集合( a collection)本质上是一个单一的索引,区别在于它能够跨越多个SolrCore‘s(Solr实例),而二者都是针对索引的缩放比例,也包括索引的冗余。比如说,你想将4个SolrCore的Solr移动到SolrCloud上去,你将会有4个集合(4
collections),而每一个集合是由多个独特的SolrCores组成。这就意味着,一个单一的索引(Single Index)能够由在不同机器上的多个SolrCores组成。
1.2 准备工作
下载最新的Solr稳定版本包(最新的是Solr 4.1,下载地址http://lucene.apache.org/solr/downloads.html)。为了便于演示,笔者采用实用cygwin (更多的信息,请参考http://cygwin.com/ )工具来执行脚本命令。
2 熟悉Solr Cloud
如果你对Solr还不太熟悉,建议先到Solr官网上查看一下具体的简单介绍(Simple Tutorial)。在对于Solr有一定了解后,删除Sample目录下的你测试产生的相关数据。这样能避免产生意外的错误,保证Demo能顺利进行。
对于分布式配置和协调,Solr嵌入和使用了Zookeeper(更详细的信息,请参考文档http://zookeeper.apache.org/)作为一个仓库--考虑到Zookepper能够包含所有Solr服务器的信息的分布式文件系统。
2.1 简单两个片集群(ShardCluster)
这个例子简单地创建了由两个Solr服务器组成的集群,Solr服务器实现了一个集合(A Collection)的两个不同片(shard).下面,展示了有关的实现步骤。
需要两台Solr服务器,可以复制一下已有example(下载的Solr4.2包,可以查看到这个目录)。进入解压后的目录后,在cygwin窗口执行命令。
cp -r example example01
下面这个命令将会启动Solr服务器以及启动一个新的Solr集群。
java -Djetty.port=8800 -Dbootstrap_confdir=./solr/collection1/conf
-Dcollection.configName=myconf-DzkRun -DnumShards=2 -jar start.jar
·-DzkRun触发嵌入在Solr服务器中的Zookeeper运行。
·-Dbootstrap_confdir=./solr/collection1/conf既然我们还没在Zookeeper中进行配置,这个参数引起本地的配置目录./solr/上传并且作为“myconfig”配置。这个名字“myconfig”是来自"collection.configName"得参数值。
·-Dcollection.configName=myconfsetsthe config to use for the new collection. Omitting this param will cause theconfig name to default to "configuration1". 设置新的集合(Collection)的配置去使用,忽略这个配置将会引起配置名默认为"configuration1"。
·-DnumShards=2我们计划分离索引到几个逻辑分区,这个指定了对应数量。
·-Djetty.port=8800设置Jetty服务器运行的端口,默认是8983。
浏览http://localhost:8800/solr/#/~cloud?view=rgraph,可以看到集群的状态。点击Tree,会发现我们的配置文件目录已经上传上去了,对应的config目录也生产了。
现在,然我们启动第二个Solr服务器。它将会自动地赋给shard2,原因是我们没有具体指定这个shard id值。
java-Djetty.port=7800 -DzkHost=localhost:9983 -jar start.jar
当我们指定-DzkHost=localhost:9800,是更具shard的Zookeeper的值来指定的。在没
有指定Zookeeper端口的情况,嵌入在Solr中的Zookeeper默认为Sorl端口+1000,所以这里的Zookeeper的端口应该是9800。
接下来,建立一些索引文件。为了匆忙地完成,我们才采用CloudSolrServer实现。
cd exampledocs
java-Durl=http://localhost:8800/solr/collection1/update -jar post.jar *.xml
在浏览器中输入:http://localhost:8800/solr/collection1/select?q=*:*&wt=xml,可以得到以下结果。
2.2 简单带有片重复(shard replicas)的两个片集群
这个例子将会通过复制shard1和shard2来构建先前的例子,额外的备份的shard被用做来实现高有效性和容错性,或是简单地提升分布式查询能力。
首先,保持先前的例子处于运行中。使用命令,复制这两个实例。
cp -r example01example01_replica
cp -r example02example02_replica
在每个彼此的窗口中开启这两个新的不同端口的服务器。
java -Djetty.port=8801-DzkHost=localhost:9800 -jar start.jar
java -Djetty.port=7801-DzkHost=localhost:9800 -jar start.jar
浏览Zookeeper窗口http://localhost:8800/solr/#/~cloud,发现有效shard上图所示。此刻,窗口的查询日子和有关节点信息如下图。
你可以尝试去关闭一个节点,看看查询是否失效。一旦一个服务器中断了,发送请求将会发送到剩余启动的服务器。这时,你会继续看到整个一样的结果。如果我们停掉某个几点的所有服务器,这个请求对于这些服务器将会得到503错误。在shards中,返回仅仅这些存在于有效剩余有效shards的文档,添加跟随的查询参数便可以生效。
shards.tolerant=true
SolrCloud使用的是实施细节的领导(Leader)和监督者。这意味着,一些nodes/replicas能够扮演特殊的角色。你没有必要担心是否这个失效的服务器是领导者还是分布式的监督者—如果你碰巧是他们中的一个失效,他们自动透明地选择新的领导者或者新的监督者来回复使用者以及能无缝地负责他们各自的工作。任何Solr实例都能提升作为他们对于角色之一。
(Note:从Word文档中复制过来的,可以有些排版不太美观,请谅解。)
分享到:
相关推荐
- **应用模式**:Solr5.x支持两种应用模式——独立模式(Standalone)和云模式(SolrCloud)。独立模式适用于较小规模的部署场景,而云模式适合需要高可用性和横向扩展性的大型应用场景。 - **索引管理**:在不同的...
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时...
3. **Solr云(SolrCloud)**: 如果你打算在分布式环境中使用Solr,那么`solrcloud`相关的jar包,如`solr-zookeeper.jar`和`zookeeper-*.jar`,将用于管理集群状态和协调数据分片。 4. **JDBC连接器**: 如果你...
1. **SolrCloud模式**:SolrCloud是Solr的一种分布式部署模式,引入了Zookeeper进行集群管理和配置协调。在Solr-4.10.3中,这一特性已经相当成熟,支持自动分片、故障转移和负载均衡,使得Solr可以处理大规模的数据...
- **云支持**:对于运行在分布式环境中的SolrCloud,可能增加了更好的管理和容错机制。 使用Solr-8.11.1时,你需要配置Solr实例,定义你的索引字段,创建和管理索引,然后通过HTTP请求进行查询。同时,你可以利用...
1. **SolrCloud**:从4.0版本开始,Solr引入了分布式搜索和处理能力,称为SolrCloud。它允许Solr实例在Hadoop的Zookeeper协调下形成集群,实现数据的分布存储和处理,支持自动故障转移和负载均衡。 2. **索引与查询...
solrcloud5结合zookeeper搭建、使用详解,是一部难得的好教程
SolrCloud是Apache Solr的一种分布式部署模式,它利用Zookeeper进行集群管理和配置同步,提供高可用性和数据的水平扩展。在本篇中,我们将详细探讨如何安装配置SolrCloud 6。 首先,我们需要下载Solr 6.6.0的安装包...
- "Solr 云" 描述了如何在 AWS EC2 等云平台上部署和运行 SolrCloud,这是构建可扩展搜索解决方案的关键技术。 - "升级 Solr 集群" 提供了升级 Solr 集群时的注意事项和步骤,确保在升级过程中数据安全和系统稳定性...
3. **分布式搜索**:SOLR云(SolrCloud)提供了分布式部署和自动复制,以实现高可用性和水平扩展。 4. **实时搜索**:SOLR的实时索引功能允许在不重启服务的情况下更新索引,提高用户体验。 5. **优化索引**:定期...
3. **Solr云(SolrCloud)**: - SolrCloud模式下,Solr支持分布式存储和检索,提供ZooKeeper协调集群状态。 - 数据Sharding允许索引分散在多个节点上,提高处理能力和可用性。 4. **请求处理与查询**: - Solr...
- 配置Solr云(SolrCloud)模式,支持分布式搜索和处理大规模数据。 3. **请求处理器(Request Handlers)**: - Solr通过请求处理器来处理HTTP请求,例如查询请求和索引请求。默认的搜索请求处理器是`/select`,...
2. 配置Solr服务器:进入解压后的目录,如`cd solr-8.11.0`,然后运行`bin/solr start -e cloud`启动示例云配置。这将创建一个简单的SolrCloud集群,包括Zookeeper和多个Solr实例。 3. 创建和配置索引:通过Solr的...
1. **配置**:根据你的需求修改配置文件,如`solr/solr.xml`,以设置Solr云或者单节点实例。 2. **启动**:使用Java运行时环境(JRE)启动Solr。在Solr的bin目录下,有启动和停止脚本,如`start.sh`和`stop.sh`。 3....
11. **云存储与Zookeeper**:Solr 5.5依赖Zookeeper进行集群管理和协调,Zookeeper负责存储配置信息,监控节点状态,并处理分布式一致性问题。 12. **性能优化**:Solr 5.5在性能方面做了很多优化,例如更快的启动...
5. **Cloud模式**:在ZooKeeper的协调下,Solr支持云部署,实现动态集群管理和数据路由。 二、Solr配置 Solr的配置主要通过`solrconfig.xml`和`schema.xml`两个文件进行。`solrconfig.xml`定义了Solr的行为,如请求...
5. **云支持**:SolrCloud模式是Solr的一个分布式实现,此版本可能会对集群管理和故障恢复有进一步的改进,以提供更强大的高可用性和可扩展性。 6. **API更新**:可能更新了 REST API,以适应现代开发需求,提供更...
3. **云部署**: 自Solr 4.0起引入了SolrCloud模式,6.6.2版本中也包含此功能,允许用户在Zookeeper的协调下创建分布式Solr集群,提供了容错和自动恢复能力。 4. **实时索引**: Solr支持实时索引,即新增或更新文档...
11. **云备份与恢复**:SolrCloud可以进行集群级别的备份和恢复,确保数据的安全性。 12. **Schema设计**:Solr的Schema.xml文件定义了索引结构,包括字段、类型和分析器,是构建索引和执行查询的基础。 13. **...