ZooKeeper 搭建 solr 集群

栏目: 服务器 · 发布时间: 6年前

内容简介: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 搭建 solr 集群
  • 启动 zookeeper 使用 zookeeper 目录中 bin 目录下的 zkServer.sh,分别启动三个 zookeeper。 启动: ./zkServer.sh start 停止:./zkServer.sh stop 查看状态 ./zkServer.sh status

    ZooKeeper 搭建 solr 集群

搭建 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 集群
复制代码

然后就可以查看集群上文件

ZooKeeper 搭建 solr 集群
  • 告诉 solr 实例 zookeeper 的位置。需要编辑 tomcat catalina.sh,添加:
JAVA_OPTS="-DzkHost=192.168.126.128:2181,192.168.126.128:2182,192.168.126.128:2183"
复制代码

每个节点都要添加。

  • 分别启动每个 solr 实例

    ZooKeeper 搭建 solr 集群
  • 集群分片 将集群分为两片,每片两个副本。在浏览器地址栏访问:

http://192.168.126.128:8081/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
复制代码

得到如下结果,则分片成功。

ZooKeeper 搭建 solr 集群

刷新 solr cloud 页面。

ZooKeeper 搭建 solr 集群
  • 删除不用的 collection1.
http://192.168.126.128:8081/solr/admin/collections?action=DELETE&name=collection1
复制代码
ZooKeeper 搭建 solr 集群

使用 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 集群》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Letting Go of the Words

Letting Go of the Words

Janice (Ginny) Redish / Morgan Kaufmann / 2007-06-11 / USD 49.95

"Redish has done her homework and created a thorough overview of the issues in writing for the Web. Ironically, I must recommend that you read her every word so that you can find out why your customer......一起来看看 《Letting Go of the Words》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器