前言

  随着用户的增多,空间和并发量越来越多,会导致一台solr服务器干不过了。这时候,就需要将solr集群以下。

集群架构   

 

由多台服务器共同完成索引和搜索任务

实现的思路是将索引数据进行shard(分片) 拆分,每个分片由多台的服务器共同完成。

当一个索引或搜索请求过来时会分别从不同的shard的服务器中操作索引。

solrCloud需要 solr基于zookeeper部署,zookeeper是一个集群管理软件,solrCloud需要由多台服务器组成。由zookeeper来进行协调管理 ,多个分片相加起来才是一个完成的索引库

zookeeper的集群:

  见 zookeeper集群

Solr集群搭建

一. 拷贝tomcat和solrhome

新建文件夹 solr-cloud。将之前solr单机版中的tomcat,solrhome拷贝到solr-cloud文件夹中。

二. tomcat修改

1.端口修改

在solr-cloud文件夹中, 执行以下命令:

vim ./tomcat1/conf/server.xml

查询并修改其中的三个port:

1).

2).

3).

其他的tomcat分别修改port的第二个数值为相应数值即可,

如:8280/8209/8205,8380/8309/8305,8480/8409/8405。

2. web.xml 修改

分别修改 webapps/solr/WEB-INF/web.xml文件 - 将solrhome和solr关联起来

<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/java/solr-cloud/solrhome1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

tomcat2 -> /usr/java/solr-cloud/solrhome2

tomcat3 -> /usr/java/solr-cloud/solrhome3

tomcat4 -> /usr/java/solr-cloud/solrhome4

3. catalina.sh修改

通过修改这里的JAVA_OPTS将tomcat和zookeeper关联起来。

分别修改tomcat/bin/catalina.sh文件

加入:

JAVA_OPTS="-DzkHost=192.168.0.102:2181,192.168.0.102:2182,192.168.0.102:2183"

三. solrhome修改

1. solrhome1下面的solr.xml文件修改

host为对应tomcat1部署的电脑ip,hostport为tomcat1修改后的端口号。

solrhome2(192.168.0.102, 8280)

solrhome3(192.168.0.102, 8380)

solrhome4(192.168.0.102, 8480)

2. 上传solrhome/core1/conf目录

将conf目录上传到zookeeper中,由zookeeper统一管理配置文件。只需要上传任意一个solrhome中的配置就可以了。

切换到之前solr解压的目录中:/usr/java/solr/solr-6.6.2/server/scripts/cloud-scripts

执行以下命令:

./zkcli.sh -zkhost 192.168.0.102:2181,192.168.0.102:2182,192.168.0.102:2183 -cmd upconfig -confdir /usr/java/solr-cloud/solrhome1/core1/conf -confname myconf

执行完此命令后,可以进入zookeeper目录中验证一下是否成功。

在zookeeper1/bin目录下执行 ./zkCli.sh 命令查看zookeeper上的配置文件信息

四. 启动tomcat

新建一个文件,来一键启动tomcat。

vim start-tomcat.sh

修改文件权限

chmod u+x start-tomcat.sh

然后执行 ./start-tomcat.sh 命令。

从这里并不能直观看到是否真的起来了。可以通过查看日志的方式,或者通过访问的方式。

tail -f /usr/java/solr-cloud/tomcat1/logs/catalina.out

OK, 到这里,终于能看到页面了。在浏览器中打开:http://localhost:8180/solr/index.html#/

菜单上多出来了一个cloud目录。

五.分片

http://127.0.0.1:8180/solr/admin/collections?action=CREATE&name=core2&numShards=2&replicationFactor=2

在浏览器中直接访问以上地址.

如果报 org.apache.solr.handler.dataimport.DataImportHandler 错误, 则将 dataimport的jar包拷贝一份到tomcat/webapps/solr/WEB-INF/lib 中去.

这时候, 再刷新solr/index.html页面看看

你会发现,在core1下面,又多出一个core, 且是分片的. 以前只有一个主solr, 现在有两个主solr了.

core1现在我们不需要了, 可以删除掉. 那怎么删呢?

http://127.0.0.1:8180/solr/admin/collections?action=DELETE&name=core1

也是通过浏览器直接访问的方式.

再来看看index.html页面

core1被删除了.

solr(六): 集群的更多相关文章

  1. Solr主从集群配置简要说明

    关于solr的集群主要分为主从和SolrCloud两种.主从,比较适合以读为主的场景.SolrCloud适合数据量大,时不时会有更新的情形.那么solr的主从配置很简单.在solrconfig.xml ...

  2. Solr的集群搭建(索引库)

    Solr的集群的搭建 Solr集群原理 SolrCloud概念以及结构 概念: SolrCloud(Solr云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用Solr ...

  3. 分享知识-快乐自己:solr 伪集群搭建

    前言:在你搭建集群之前先去搭建一个单机版的 跳转 Solr 集群构建图: 1):部署(4个)Tomcat 下载 更改每一个 tomcat 启动端口号: [root@VMSolr tomcat_clus ...

  4. Centos7:solr伪集群(SolrCloud)搭建

    JDK,tocmat环境搭建 zookeeper集群安装 解压缩zookeeper的压缩包 创建data目录 复制zoo_sample.cfg为zoo.cfg 修改confg/zoo.cfg中 dat ...

  5. redis学习六 集群的原理(转载)

    转载自 http://shift-alt-ctrl.iteye.com/blog/2285470 一.Redis Cluster主要特性和设计     集群目标 1)高性能和线性扩展,最大可以支撑到1 ...

  6. 二十六. 集群及LVS简介 LVS-NAT集群 LVS-DR集群

    方案:安装ipvsadm软件包,关于ipvsadm的用法可以参考man ipvsadm资料. 常用ipvsadm命令语法格式如表-1及表-2所示. 1.ipvsadm命令用法(proxy) 1.1 创 ...

  7. Solr配置集群

    1.主机SolrConfig.xml <requestHandler name="/replication" class="solr.ReplicationHand ...

  8. solr+zookeeper集群配置

    将solr配置文件交给zookeeper进行管理 ./zkcli.sh -zkhost node01:2181,node02:2181,node03:2181 -cmd upconfig -confd ...

  9. Solr集群、KI分词、项目实战

    Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善 ...

随机推荐

  1. 高速上手C++11 14 笔记2

    lambda表达式和std function bind 两者配合构成了函数新的使用方法. 智能指针 sharedptr, uniqueptr, weak_ptr auto pointer = std: ...

  2. Java平台

    Java的平台无关性 不同的网络环境,操作系统 支持嵌入式设备 减少开发部署时间 Java自身的平台和语言 编译成class文件 可在Java虚拟机中运行,与外部环境无关(对虚拟机的依赖) 通过外部A ...

  3. 关于Idea里设置Terminal为Git/bin/bash.exe中文乱码的问题的终极解决方案

    1.这里如果设置为Git/git-bash.exe确实不会乱码,但是每次点Idea里的Terminal都会弹出一个单独的terminal窗口而非在idea子窗口里出现: 2.因此需要设置为Git/bi ...

  4. Solaris:你好奇的十件事

    想想你周围的人,看看他们正在使用的操作系统.绝大部分人的电脑都在用主流操作系统:Windows,MacOS,甚至是Ubuntu.当说到Solaris,Unix和BSD的时候,其他人还以为你说鸟语呢.除 ...

  5. 初学者必看的文章:在VM12中安装 RedHat RHEL7.2  系统的详细步骤:看我如何操纵RHEL系统

    一.开始安装 1)新建虚拟机 RHEL7.2 2)成功引导系统--开机出现此画面 Install Red Hat EnterpriseLinux 7.2  安装RHLE7.2 操作系统 Test th ...

  6. 《DevOps软件架构师行动指南》读后感

    从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...

  7. ASCII、Unicode、UTF-8以及Python3编码问题

    编码问题,其实的确是个很烦人的问题,一开始觉得不需要看,到后来出现问题,真的是抓狂, 而像我们这些刚刚涉及到这些问题的小白来说,更是无从下手,所以查阅资料,总结理解下各个概念以及Python3的编码问 ...

  8. 基于fpga的vga学习(3)

    本次学习如何通过vga发送数字.文字.字母, 首先利用建模软件,将想要发送的数据通过数学建模转换,这里我用的软件是PCtoLCD,具体效果如下 这里可以看出,建模将数据装换成0和1,一个字母用16x8 ...

  9. 关于oracle数据库的小知识

    --查询语句:select 列名/通配符/列别名/表达式 from 表名 (修饰/限制语句)select * from tab;select tname from tab;--指定的列select t ...

  10. day_5字符串和列表的各种操作方法

    字符串类型: 字符串的定义是可以有多种引号嵌套 定义字符串是以开头的引号然后匹配和第一个引号相同的引号,所以当字符串中间出现和第一个引号相同的引号就会出错,这个时候就可以选择别的引号进行创建字符串,或 ...