Solr-cloud
来源:互联网 发布:软件app如何推广 编辑:程序博客网 时间:2024/06/17 09:19
简介
SolrCloud是Solr提供的分布式搜索方案。当需要大规模,容错,分布式索引和检索能力时们需要使用SolrColud。索引量十分大的时候,才需要使用到它。
基于Solr和Zookeeper的分布式搜索方案。由Zookeeper管理Solr集群,作为Solr的集群配置中心。
特色功能
- 集中式的配置信息
- 自动容错
- 近实时搜索
- 查询时自动均衡负载
架构
物理架构
多个Solr实例(每个实例构成多个Core,或者说成多个Collection索引库),构成一个SolrColud。
逻辑架构
索引集合中包括多个Shard(例如shard1和shard2),shard1由多个Core构成,其中一个Leader,多个Replication,Leader,是由Zookeepr选举产生,Zookeepr控制每个shard与多个Core的索引数据一致,解决高可用问题。
用户发气索引请求也从shard1和shard2中获取,解决高并发问题。
Solr的分片中的Core(索引库)由Zookeepr进行投票选举,决定谁为Leader,谁为Replication,通过半数投票,所以Zookeepr集群最好为奇数个集群,如果为偶数,有可能会地投票成一半对一半,则需要进行第二次投票,直至投出结果为止。所以建议Zookeepr集群最低为3个或者以上。
安装
zookeeper集群
cp zookeeper-3.4.6 /zookeeper_solrcloud/solr-cloud/zookeeper1 -rcp zookeeper-3.4.6 /zookeeper_solrcloud/solr-cloud/zookeeper2 -rcp zookeeper-3.4.6 /zookeeper_solrcloud/solr-cloud/zookeeper3 -rcd /zookeeper_solrcloud/solr-cloud/zookeeper1cd data/touch myid // 创建一个空文件.这个文件写的值为1,2,3。。。代表当前的节点的编号vim myid1:wqcat myid //预览编辑后的文件cd ..cd confcp zoo_sample.cfg zoo.cfg //复制一份配置文件vim zoo.cfgdataDir=/zookeeper_solrclound/solr-cloud/zookeeper1/data/ //修改地址server.1=192.168.25.135:2881:3881 //2881 : zookeeper节电之间通信的端口, 3881 : 节点之间选取的端口server.2=192.168.25.135:2882:3882server.3=192.168.25.135:2883:3883cd zookeeper2mkdir dataecho 2 >data/myid //创建myid文件 值为2cd conf/cp zoo_sample.cfg zoo.cfg //复制一份配置文件vim zoo.cfgdataDir=/zookeeper_solrclound/solr-cloud/zookeeper2/data/clientPort=2182 server.1=192.168.25.135:2881:3881server.2=192.168.25.135:2882:3882server.3=192.168.25.135:2883:3883cd zookeeper3mkdir dataecho 2 >data/myid //创建myid文件 值为2cd conf/cp zoo_sample.cfg zoo.cfg //复制一份配置文件vim zoo.cfgdataDir=/zookeeper_solrclound/solr-cloud/zookeeper3/data/clientPort=2183 server.1=192.168.25.135:2881:3881server.2=192.168.25.135:2882:3882server.3=192.168.25.135:2883:3883//编写批处理启动文件cd zookeeper1/bin/./zkServer.sh startcd ..cd ..cd zookeeper2/bin/./zkServer.sh startcd ..cd ..cd zookeeper3/bin/./zkServer.sh startcd ..
./zkServer.sh statusJMX enabled by defaultUsing config: /zookeeper_solrclound/solr-cloud/zookeeper1/bin/../conf/zoo.cfgMode: leader //Leader 领导者cd zookeeper2[root@localhost zookeeper2]# cd bin/[root@localhost bin]# ./zkServer.sh statusJMX enabled by defaultUsing config: /zookeeper_solrclound/solr-cloud/zookeeper2/bin/../conf/zoo.cfgMode: follower //从集cd zookeeper3/b-bash: cd: zookeeper3/b: No such file or directory[root@localhost solr-cloud]# cd zookeeper3/bin/[root@localhost bin]# ./zkServer.sh statusJMX enabled by defaultUsing config: /zookeeper_solrclound/solr-cloud/zookeeper3/bin/../conf/zoo.cfgMode: follower //从集 //查看主从关系
solr-cloud集群
cp apache-tomcat-7.0.47 /zookeeper_solrclound/solr-cloud/tomcat1 -rcp apache-tomcat-7.0.47 /zookeeper_solrclound/solr-cloud/tomcat2 -rcp apache-tomcat-7.0.47 /zookeeper_solrclound/solr-cloud/tomcat3 -rcp apache-tomcat-7.0.47 /zookeeper_solrclound/solr-cloud/tomcat4 -r//把以前创建号的solr单机版复制过去,因为不用配置了,关于配置已经发出来了cp solr/ /zookeeper_solrclound/solr-cloud/tomcat1/webapps/ -r cp solr/ /zookeeper_solrclound/solr-cloud/tomcat2/webapps/ -rcp solr/ /zookeeper_solrclound/solr-cloud/tomcat3/webapps/ -rcp solr/ /zookeeper_solrclound/solr-cloud/tomcat4/webapps/ -r //修改每个tomcat的端口号 <Server port="8105"<Connector port="8180" <Connector port="8109"....依次类似//复制solrhome cp solrhome/ /zookeeper_solrclond/solr-cloud/solrhome01 -rcp solrhome/ /zookeeper_solrclond/solr-cloud/solrhome02 -rcp solrhome/ /zookeeper_solrclond/solr-cloud/solrhome03 -rcp solrhome/ /zookeeper_solrclond/solr-cloud/solrhome04 -r//修改每个复制的tomcat的solrhome目录vim tomcat1/webapps/solr/WEB-INF/web.xml <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/zookeeper_solrclound/solr-cloud/solrhome01/</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>。。。 依次设置//修改每个solrhome的solr.xml文件vim solrhome01/solr.xml <solrcloud> <str name="host">192.168.25.135</str> //修改ip地址 <int name="hostPort">8180</int> //修改为刚才设置端口号 <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud>.....**依次设置**## 设置Solr和Zookeepr关联关系cd tomcat1/bin/vim catalina.sh // JAVA_OPTS : 配置运行时的环境变量,告诉zookeeper在哪里,才能连接zookeeper//加入JAVA_OPTS="-DzkHost=192.168.25.135:2181,192.168.25.135:2182,192.168.25.135:2183" //每个tomcat都需要依次配置//有zookeeper管理每个solr节点对应的配置文件cd solr-4.10.3/example/scripts/cloud-scripts/./zkcli.sh -zkhost 192.168.25.135:2181,192.168.25.135:2182,192.168.25.135:2183 -cmd upconfig -confdir /zookeeper_solrclound/solr-cloud/solrhome01/collection1/conf -confname myconf //上传<!-- 查看是否上传成功-->cd /zookeeper_solrclound/solr-cloud/zookeeper1/bin/./zkCli.sh -server 192.168.25.135:2182ls /configs/myconf //查看文件是否存在,有就代表上传成功<!--设置一个批处理文件,启动tomcat -->vim start-tomcat.shtomcat1/bin/startup.sh tomcat2/bin/startup.sh tomcat3/bin/startup.sh tomcat4/bin/startup.sh <!-- 查看日志,是否每个tomcat启动成功--> tail -f tomcat3/logs/catalina.out
新增Collection
http://192.168.25.135:8280/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
删除Collection
http://192.168.25.135:8280/solr/admin/collections?action=DELETE&name=collection1
代码测试
@Test public void sorlCloudAdd() throws SolrServerException, IOException{ CloudSolrServer cloudSolrServer = new CloudSolrServer ("192.168.25.135:2181,192.168.25.135:2182,192.168.25.135:2183"); cloudSolrServer.setDefaultCollection("collection2"); // SolrServer solrServer = cloudSolrServer.getLbServer(); SolrInputDocument document = new SolrInputDocument(); document.setField("id", "Hello moto"); document.setField("item_title", "我的标题"); cloudSolrServer.add(document); cloudSolrServer.commit(); }
XML配置
<!-- 单机版Solr --> <!-- <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer"> <constructor-arg index="0" value="http://192.168.25.135:8080/solr/collection1"></constructor-arg> </bean> --> <!-- 集群版Solr --> <bean id="cloudServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer"> <constructor-arg index="0" value="192.168.25.135:2181,192.168.25.135:2182,192.168.25.135:2183" /> <property name="defaultCollection" value="collection2"></property> </bean>
阅读全文
0 0
- Solr-cloud
- solr cloud log
- solr cloud 集群搭建
- solr进阶六:单机版Solr Cloud
- Solr-3-Solr Cloud分布式安装
- 分布式solr-cloud之solr部署
- solr cloud异常与处理
- solr cloud系列-集群搭建
- solr cloud重新设置schema
- 分布式solr-cloud之zookeeper部署
- 数据索引---Solr Cloud(Solr5) with ZooKeeper
- solr cloud 5.4.0安装,,使用
- solr cloud系列-web页面介绍
- solr cloud系列-manage-schema介绍
- HBase + Solr Cloud实现HBase二级索引
- 20161218-solr cloud 定时刷新数据 先开个坑已填
- solr cloud系列-IK中文分词器
- HBase + Solr Cloud实现HBase二级索引
- CopyOnWriteArrayList图解--转载
- post multipart/form-data 类型表单如何获取File外其他参数
- Android 开发 17 年 5 月份面试问题总结(二)
- 号数、点数制对照表
- 读书
- Solr-cloud
- vmware系统与本地系统共享文件
- 简单介绍google protobuf rpc框架使用方法
- 共享文件夹内编译报”Value too large for defined data type”错误的解决办法
- Scala基础—再谈控制语句
- HashMap图解--转载
- 推荐13个.Net开源的网络爬虫
- JavaScript网页中动态显示时间
- win8常用快捷键