本文以solr-5.5.2讲述solr+tomcat的单机分布式的部署
准备工作:
1、JDK1.7
2、zookeeper-3.5.1-alpha.tar.gz
5、CentOS release 6.6
关键字说明:
Collection:在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用的和Shard相关参数。
Core:也就是Solr Core,一个Solr中包含一个或者多个Solr Core,每个Solr Core可以独立提供索引和查询功能,每个Solr Core对应一个索引或者Collection的Shard,Solr Core的提出是为了增加管理灵活性和共用资源。在SolrCloud中有个不同点是它使用的配置是在Zookeeper中的,传统的Solr core的配置文件是在磁盘上的配置目录中。
Leader:赢得选举的Shard replicas。每个Shard有多个Replicas,这几个Replicas需要选举来确定一个Leader。选举可以发生在任何时间,但是通常他们仅在某个Solr实例发生故障时才会触发。当索引documents时,SolrCloud会传递它们到此Shard对应的leader,leader再分发它们到全部Shard的replicas。
Replica:Shard的一个拷贝。每个Replica存在于Solr的一个Core中。一个命名为“test”的collection以numShards=1创建,并且指定replicationFactor设置为2,这会产生2个replicas,也就是对应会有2个Core,每个在不同的机器或者Solr实例。一个会被命名为test_shard1_replica1,另一个命名为test_shard1_replica2。它们中的一个会被选举为Leader。
Shard:Collection的逻辑分片。每个Shard被化成一个或者多个replicas,通过选举确定哪个是Leader。
附图:这是我的目录结构
基于个人虚拟机的原因,全是用root用户操作的,若在开发中遇到不可预测错误,不排除权限问题造成。
Hadoop为zookeeper伪集群目录 详细就参考http://coolxing.iteye.com/blog/1871009、
A. 设置tomcat 复制三份tomcat,分别为tomcat8082、tomcat8083、tomcat8084,修改tomcat/conf/server.xml的各端口
B. 设置solrhome 复制三份solrhome,进入/root/solr/solr-5.5.2/server/solr,将solr复制三份,为了方便区别,命名为solrhome8082,solrhome8083,solrhome8084,并修改各solrhome下的solr.xml
<solr> <solrcloud> <str name="host">192.168.187.129</str>//tomcat的IP地址 <int name="hostPort">8082</int> //对应的tomcat端口 <str name="hostContext">/solr</str> //solr的webapp名字 <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int> <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int> <str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str> <str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str> </solrcloud> <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory"> <int name="socketTimeout">${socketTimeout:600000}</int> <int name="connTimeout">${connTimeout:60000}</int> </shardHandlerFactory> </solr>
C.设置solr webapp
a) 进入/root/solr/solr-5.5.2/server/solr-webapp,将webapp复制三份,分别为solr8082、solr8083、solr8084,修改solr8082/WEB-INF/web.xml
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value> /root/solr/solr-5.5.2/server/solrhome8082</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
solr8083、solr8084的修改大同,注意:默认以上代码是注释的
b) Copy对应的jar包到webapp/WEB-INF/lib下
1. 路径/root/solr/solr-5.5.2/server/lib/ext下的所有包
2. 路径/root/solr/solr-5.5.2/dist下的solr-dataimporthandler-5.5.2.jar,solr-dataimporthandler-extras-5.5.2.jar包,用于数据库导入数据
3. 上传mysql连接包mysql-connector-java-5.1.35.jar
4. 路径/root/solr/solr-5.5.2/dist下的solr-dataimporthandler-5.5.2.jar,solr-dataimporthandler-extras-5.5.2.jar包,用于数据库导入数据
c) 修改tomcat/conf/server.xml 各docBase需修改对应路径
<Context docBase="/root/solr/solr-5.5.2/server/solr-webapp/solr8082" path="/solr" reloadable="false" source="org.eclipse.jst.j2ee.server:solr"/>
D. 设置 JAVA_OPTS 进入tomcat8082/bin下,修改catalina.sh 加下如下参数:
JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/root/solr/solr-5.5.2/server/solrhome8082 -DzkHost=192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183"
solr8083、solr8084的修改大同.
E. 生成collection
a) 进入/root/solr/solr-5.5.2/server/solr/configsets 复制sample_techproducts_configs,命名为core1,修改core1/conf下的schema.xml文件,(默认此文件不存在,新建一个)
<fields> <field name="core1" type="string" indexed="true" stored="false"/> </fields>
这步有点玄乎,开始我建的时候,没有此文件报错,建立此文件后,发现新建的field.core1并没有生效
b) 创建数据导入文件data-config.xml
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://172.20.11.129:3306/zjpedometerdb" user="root" password="root" /> <document> <entity name="solr_test" transformer="DateFormatTransformer" query="select concat('menu.',MENU_ID) id,MENU_NAME subject,URL description from sys_menus where '${dataimporter.request.clean}' != 'false' "> </entity> <entity name="solr_user" query="select concat('user.',user_id) id,user_name subject,user_password description from sys_users where '${dataimporter.request.clean}' != 'false' "> </entity> </document> </dataConfig>
c) 修改core1/conf/solrconfig.xml 在config下加入
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
d) 上传配置至zookeeper
java -classpath .:/root/solr/solr-5.5.2/server/solr-webapp/solr8082/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183 -confdir /root/solr/solr-5.5.2/server/core1/conf -confname core1
注:以上命令也可用于更新配置,如果更新单个文件,用
java -classpath .:/root/solr/solr-5.5.2/server/solr-webapp/solr8082/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183 -cmd putfile /configs/core1/schema.xml /root/solr/solr-5.5.2/server/core1/conf/schema.xml
/configs/core1/schme.xml 是zookeeper文件路径,core1是配置文件路径名
/root/solr/solr-5.5.2/server/core1/conf/schema.xml 本地文件
启动各tomcat.打开任意tomcat.solr
e) 创建一个collection 切换到/root/solr/solr-5.5.2
./bin/solr create_collection -c core1 -d /root/solr/solr-5.5.2/server/core1/conf -shards 3 -replicationFactor 3 -p 8082
f) 关联配置
java -classpath .:/root/solr/solr-5.5.2/server/solr-webapp/solr8082/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection core1 -confname core1 -zkhost 192.168.187.129:12181,192.168.187.129:12182,192.168.187.129:12183
g) 检测collection是否成功创建,在Solr UI中刷新页面,点击Cloud如果成功创建了Collection会显示出Solr的集群拓扑
选中一个core,
选中data-config.xml构建的dataimport
点击Execute
请求2次,分别是两个 entity,导入17条数据
点击左边的query,点击execute query,查询结果如下。
基本塔建已经完成,配上nginx负载均衡,第一次发表文档,有不足之处,请留言。
相关推荐
Solr与Tomcat的组合是常见的一种搜索引擎服务部署方式,其中Solr提供了强大的全文搜索功能,而Tomcat作为流行的Java应用服务器,为Solr提供运行环境。本篇将详细讲解如何进行Solr与Tomcat的简易部署,并结合提供的...
Solr+Tomcat项目整合是将Apache Solr搜索引擎与Apache Tomcat应用服务器结合使用的过程,以便在Web环境中部署和运行Solr服务。Solr是一个基于Lucene的全文搜索服务器,而Tomcat则是一个轻量级Java应用服务器,常用于...
### ZooKeeper实例与Solr(tomcat)集群部署详解 #### 一、部署背景与目的 在大数据处理和搜索引擎技术领域,ZooKeeper与Solr是两个不可或缺的技术组件。ZooKeeper作为分布式协调服务,提供了高可用性以及一致性保证...
在这个集群环境中,Tomcat作为Servlet容器运行Solr,而Zookeeper则作为分布式协调服务,管理整个集群的状态和配置。 一、Solr 4.9 集群的核心概念 1. **Sharding**: Solr集群通过分片技术将大量数据分散到多个节点...
为了实现高可用性和负载均衡,通常会将Solr部署在分布式环境中,这就需要用到Zookeeper进行集群协调。而Tomcat作为Java应用服务器,常被用来运行Solr服务器。本文将详细介绍如何搭建Solr-Zookeeper-Tomcat集群。 一...
**2.1 单机版Tomcat7 + Solr5.2.1部署** 1. 在D盘根目录创建`solrCloud`文件夹,解压`apache-tomcat-7.0.56.zip`至该目录,并重命名为`tomcat7_ser1`。 2. 解压`solr-5.2.1.tgz`,复制`solr-5.2.1\example\...
安装`solr_Tomcat_lib`包到Tomcat的`WEB-INF/lib`目录下,是将Solr部署到Tomcat服务器的关键步骤。这使得Tomcat可以加载所有必要的库文件,以便正确地运行Solr实例。 在部署过程中,确保Tomcat版本与Solr版本兼容,...
Solr 3.5还提供了分布式搜索能力,允许在多台机器上构建大规模的搜索集群,以满足高并发和大数据量的需求。 **Tomcat集成Solr的步骤** 1. **下载和解压**: 首先,你需要从Apache Solr官方网站获取Solr 3.5的发行包...
完成以上步骤后,即可启动`Zookeeper`集群,并进一步配置SolrCloud以利用该集群进行分布式索引和查询处理。 通过以上详细的步骤,您已经完成了SolrCloud 5.2.1 + Tomcat 7 + Zookeeper 3.4.6环境的搭建。这为构建...
1. Apache Tomcat 7.0.56:这是一个开源的Servlet容器,用于部署Java Web应用程序,包括Solr。 - 下载地址:http://tomcat.apache.org/download-70.cgi 2. Zookeeper 3.4.6:它是Apache的一个项目,提供分布式一致...
4. **分布式搜索**: Solr可以部署在多个服务器上,形成一个集群,实现索引和查询的分布式处理。这种架构使得Solr能够处理大规模的数据和高并发的请求。 5. **富文本处理**: Solr支持对文本进行预处理,如去除停用词...
在实际应用中,Solr的部署和使用不仅涉及上述基础步骤,还需要考虑集群配置、性能优化、安全设置等多个方面。例如,通过SolrCloud实现分布式部署,利用Sharding和Replication提高可用性和性能,以及通过设置过滤器、...
Solr集群安装是一个复杂的过程,涉及到多个步骤,包括Zookeeper集群的配置和Solr整合Tomcat的部署。这里我们将详细讲解这些步骤。 首先,我们来理解Zookeeper在Solr集群中的角色。Zookeeper是一个分布式协调服务,...
- **高可用性**: 支持分布式环境下的集群部署,确保高可用性和负载均衡。 #### 二、Solr单机安装与配置 1. **下载Solr压缩包**: - 最新版本为7.7.2,下载地址为: ...
Solr还支持集群部署,通过SolrCloud模式可以实现分布式搜索和数据冗余,从而确保系统的高可用性和扩展性。 总之,结合Solr 6.3.0与Tomcat 8,你能够快速构建一个强大且灵活的全文搜索引擎,适用于各种规模的业务...
此外,Solr 7.x系列还引入了SolrCloud模式,支持集群部署,实现数据的高可用性和容错性。 在描述中提到,这个版本的Solr可以"进行无限的扩展与优化",这意味着用户可以根据需求定制各种插件和配置,以满足特定的...