内容简介:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。然后就可以查看集群上文件每个节点都要添加。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。
ZooKeeper 功能
-
集群管理 主从的管理、负载均衡、高可用的管理。集群的入口。Zookeeper必须是集群才能保证高可用。Zookeeper有选举和投票的机制。集群中至少应该有三个节点。
-
配置文件集中管理 搭建solr集群时,需要把Solr的配置文件上传zookeeper,让zookeeper统一管理。每个节点都到zookeeper上取配置文件。
集群配置
- zookeeper 3 台
- solr 4 台
集群搭建
搭建 zookeeper 集群
-
下载ZooKeeper
-
上传 ZooKeeper 到服务器(sftp 或 lrzsz 工具)
-
将 ZooKeeper 解压
-
把 zookeeper 向 /usr/local/solr-cloud 下复制三份,分别命名为 zookeeper01、zookeeper02、zookeeper03。
-
配置 zookeeper。
-
在 zookeeper01 目录下创建一个 data 文件夹
-
在 data 目录下创建一个 myid 文件
-
myid 的内容 为 1。(02 对应 “2”,03 对应 “3”)。
-
zookeeper02、03 以此类推。
-
进入 conf ,将 zoo_sample.cfg 更名为 zoo.cfg。
-
修改 zoo.cfg
- 将 dataDir= 指定为刚创建的文件夹。
- clientPort 指定为不冲突的端口号(01:2181,02:2182,03:2183)
- 添加如下内容:
server.1=192.168.126.128: 2881:3881 server.2=192.168.126.128: 2882:3882 server.3=192.168.126.128: 2883:3883 复制代码
-
-
启动 zookeeper 使用 zookeeper 目录中 bin 目录下的 zkServer.sh,分别启动三个 zookeeper。 启动: ./zkServer.sh start 停止:./zkServer.sh stop 查看状态 ./zkServer.sh status
搭建 solr 集群
-
安装4个 tomcat,编辑 server.xml,修改端口 8081-8084。
-
向 tomcat 部署 solr。(细节可参考之前的博客)
-
为每一个 solr 实例创建 solrhome。
-
编辑 web.xml ,将每个 solr 实例和对应的 solrhome 关联
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
复制代码
- 编辑每个 solrhome 下 solr.xml,指定对应 host 和 port
<solrcloud>
<str name="host">${host:192.168.126.128}</str>
<int name="hostPort">${jetty.port:8081}</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
复制代码
- 上传配置文件到 zookeeper. 需要使用/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh命令上传配置文件。(其他 solrhome 的配置文件也可以。)
./zkcli.sh -zkhost 192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome1/collection1/conf -confname myconf 复制代码
- 查看是否上传成功 使用 zookeeper bin 目录下的 zkCli.sh 命令。
./zkCli.sh #即可连接上 zookeeper 集群 复制代码
然后就可以查看集群上文件
- 告诉 solr 实例 zookeeper 的位置。需要编辑 tomcat catalina.sh,添加:
JAVA_OPTS="-DzkHost=192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183" 复制代码
每个节点都要添加。
-
分别启动每个 solr 实例
-
集群分片 将集群分为两片,每片两个副本。在浏览器地址栏访问:
http://192.168.126.128:8081/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2 复制代码
得到如下结果,则分片成功。
刷新 solr cloud 页面。
- 删除不用的 collection1.
http://192.168.126.128:8081/solr/admin/collections?action=DELETE&name=collection1 复制代码
使用 Solrj 连接集群
@Test
public void testSolrClout() throws Exception {
//创建一个SolrServer对象
CloudSolrServer solrServer = new CloudSolrServer("192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183");
//设置默认的collection
solrServer.setDefaultCollection("collection2");
//创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "test01");
document.addField("item_title", "title1");
//添加文档
solrServer.add(document);
//提交
solrServer.commit();
}
复制代码
Spring 中切换到集群
<bean id ="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer"> <constructor-arg name="zkHost" value="192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183"/> <property name="defaultCollection" value="collection2"/> </bean> 复制代码
以上所述就是小编给大家介绍的《ZooKeeper 搭建 solr 集群》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Introduction to Programming in Java
Robert Sedgewick、Kevin Wayne / Addison-Wesley / 2007-7-27 / USD 89.00
By emphasizing the application of computer programming not only in success stories in the software industry but also in familiar scenarios in physical and biological science, engineering, and appli......一起来看看 《Introduction to Programming in Java》 这本书的介绍吧!