注:欢迎你们转载,非商业用途请在醒目位置注明本文连接和做者名dijia478,商业用途请联系本人dijia478@163.com。html
注意,在搭建solr集群前,建议最好有一个solr服务是已经搭建好的,能够简化大量重复的配置操做。web
单机solr服务搭建过程参看个人这篇文章:shell
这个单机solr服务在solr集群搭建第二步和第三步里须要,搭建好一个solr服务后,就能够进行集群搭建了。tomcat
上传解压步骤省略,这是我解压好的服务器
复制tomcat到以前搭建zookeeper集群第四步时,建立的/usr/local/solr-cloud目录里,复制4个并发
去solr-cloud目录,发现已经复制好了4个tomcat目录高并发
在tomcat目录下的conf里的server.xml,修改每一个tomcat的端口号,这里只演示第一个目录的,另外三个都要改,端口要互不冲突post
用/port命令搜索port字符串,按n搜索下一个,有三个地方要改,依次更改成性能
其余三个tomcat目录里的server.xml配置的端口按照234的顺序全改了啊,具体过程这里我就不截图了。ui
一共要改四个文件,每一个文件里改三个地方,这12个端口号要互不冲突
在搭建好的单机solr服务里(这里是另外一篇教程,上面说过了),复制solr工程到第一步的4个tomcat目录里,一共是复制4份
同样在以前搭建的单机solr服务里,把solrhome复制4份出来到solr-cloud目录里
如今solr-cloud目录里是有这些目录,检查一下有没有复制错地方的:
以前搭建单机版solr服务的时候没有动过solrhome里的这个文件,如今搭建集群了,须要进行修改
须要修改4个solr.xml,我这里仍是只演示第一个,另外三个目录里的类比着改,同样的,就是1234的顺序
找到这个地方,第一个红框表明当前节点的ip地址,就是你部署这个solrhome01,tomcat01集群节点的服务器ip,实际工做中就是会部署4个服务器,一个服务器是一个节点,部署一个solr服务
第二个红框表明当前solr服务实例的端口号,就是所在的tomcat的端口号,就是第一步在tomcat01的server.xml里配置的8180
个人配置完后是这样的
其余三个照着改啊,因为我是在一台虚拟机搭建的四个实例,因此确定四个实例的ip是同样的,但端口分别是8180,8280,8380,8480
修改这个文件,和以前单机版的solr配置是同样的
要注意的是,tomcat01这里的solr服务,是上面第二步复制过来的对吧,是我以前用solr7搭建的单机solr服务,里面的配置和solr4不太同样,具体仍是去文章最上面看我提供的单机solr服务搭建教程连接
找到这个,这里是我以前搭建单机solr服务时,配置的solrhome路径
如今改为集群的solrhome01目录,使他们关联起来
其余三个tomcat里的web.xml都对应着一改,solrhome02,03,04
如今咱们每个solr都有了本身的solrhome,如今咱们要让每个solr实例的配置文件都同样,这个配置文件须要集中管理,这个时候咱们使用zookeeper来统一管理配置文件。因此要将配置文件上传到zookeeper中。那么上传哪些配置文件呢?
这里注意下managed-schema文件,网上有不少低版本solr,会提到一个collection1/conf下的schema.xml,可是并无找到。好像是从5.0版本开始不使用schema.xml的,这俩其实内容都同样,搞不懂为啥要换个名字,并且内容格式是xml,可是文件名却没有.xml的后辍,这里直接上传整个conf目录就行。
知道了要上传什么,那么怎么上传呢?打开最先solr解压出来的原始文件(若是删了那就从新上传解压吧)
在这个目录下有个脚本文件,执行这个脚本就能够将配置文件上传到zookeeper了,有点难找,我是用find命令给搜出来的。不过我这里给出了pwd路径
要注意,在执行脚本上传配置文件前,必须先去启动zookeeper集群
而后回来执行脚本
这里脚本的执行命令有点长,主要是参数多,建议复制出来改好后再粘贴上去
./zkcli.sh -zkhost 192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/configsets/sample_techproducts_configs/conf -confname myconf
我解释下各个参数的含义:
红色框表明zookeeper集群的ip和端口号列表(搭建zookeeper集群的时候配置过的)
绿色框表明要执行的是上传配置文件操做
黄色框表明的是要上传的配置文件目录(低版本不太同样,具体以那两个主要的配置文件所在目录为准,不知到在哪就find命令搜吧)
紫色框表明的是你给上传的配置起的名字,能够改
如今上传完了,那么咱们怎么肯定是否上传成功呢?去zookeeper集群的一个目录找到bin里zookeeper的客户端脚本
运行后,里面会出现一大堆内容,若是你不指定参数,他会默认访问localhost:2181
在最下面执行这个命令,查看在根目录下有什么,发现一个configs
再看它里面有什么?哈!
这就是咱们刚才上传的配置了,名字同样的,表明上传成功了
而后用quit命令退出
若是你须要修改配置的话,只用在刚才那个conf目录里改好,改好后再上传一次就好了,就会覆盖原来的配置文件
如今上传好配置文件了,但是solr和zookeeper尚未创建任何关系,他们也不知道对方在哪里,这个时候须要修改4个tomcat的配置文件,这里只演示tomcat01,其余三个彻底相同照着改
打开catalina.sh文件,加一个JAVA_OPTS这个参数,初始化这个值完了会传给solr,注意不是在这个截图这里修改啊
用/JAVA_OPTS搜索红色框框里的这句话(由于低版本加的位置长的不太同样,但这句话的例子是不变的),在这句话下面的位置加(注意位置啊,不要弄错了):
加上JAVA_OPTS的值(zookeeper集群的ip列表):
JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"
而后把其余三个tomcat也一改,改的位置和内容是同样的,不用变
这样每一个solr实例就经过这个参数和zookeeper集群创建了联系,solr会将本身的状态发送给zookeeper,好比ip地址啊,端口号啊,zookeeper就能够链接到solr了,创建了通讯关系
如今须要启动每一个tomcat,固然了,这个和启动zookeeper集群同样,要一个一个进去启动,太麻烦了,仍是写个批处理脚原本运行
/usr/local/solr-cloud/tomcat01/bin/startup.sh
/usr/local/solr-cloud/tomcat02/bin/startup.sh /usr/local/solr-cloud/tomcat03/bin/startup.sh /usr/local/solr-cloud/tomcat04/bin/startup.sh
保存,退出
发现没有运行权限,添加权限
而后运行脚本,等等啊,tomcat集群启动比较慢
若是你想看启动起来没,能够复制一个会话窗口(我用的xshell5),去看看tomcat的日志信息(至关于看控制台打印信息)
用这个命令查看,我这就查看一个,应该已经启动好了
这里说个小知识点,tomcat8开始,默认启动的是NIO模式,7默认启动的是BIO模式,还能够经过配置设置APR模式启动,至于APR,NIO和BIO的区别,是和tomcat并发性能有关的,高并发的系统应该将tomcat的模式设置成APR模式,会大幅度的提升服务器的处理和响应性能。感兴趣的能够本身百度下。固然这个不用在乎,跟本文集群搭建没啥关系,就是想到了说一下。
而后用本身的电脑访问下我们的集群吧,以前单机版是没有红框框出来的两个东西的,出现这个就是OK了
我这里还没建立collections,因此啥都没有:
注意下访问地址的输入,要写全。访问地址写成这样会404
点击页面的Collections按钮,而后就能添加了(高版本的solr才有,低版本的须要经过地址栏传递参数去设置,比较麻烦)
我这里选择的是名字叫mycollection1,用本身上传的myconf配置文件,有2片shard,每一个shard有2个备份节点一主一备
而后回去看下,这样solr集群就搭建ok了!
删除collection,点这里,而后输入你要删除的collection名称就行
删除core在右边,完了若是要添加下面有add replica(若是工做中你的哪一个备份机挂了,就这样删掉挂的服务器,再添加一个好的就行,固然了,在这里添加前,确定是须要在服务器上部署好solr服务,而后链接zookeeper集群才行的)