• SolrCloud阶段总结


    SolrCloud阶段总结

    开发类型

    全文检索相关开发

    Solr版本

    4.2

    文件内容

    本文介绍SolrCloud的功能使用及相关注意事项

    在代码文本框中如有显示不全的,请在文本框中按Ctrl+A再复制.

    版本

    作者/修改人

    日期

    V1.0

    gzk

    2013-06-04

             SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是Solr4.X的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。

                           

           基本可以用上面这幅图来概述,这是一个拥有4个Solr节点的集群,索引分布在两个Shard里面,每个Shard包含两个Solr节点,一个是Leader节点,一个是Replica节点,此外集群中有一个负责维护集群状态信息的Overseer节点,它是一个总控制器。集群的所有状态信息都放在Zookeeper集群中统一维护。从图中还可以看到,任何一个节点都可以接收索引更新的请求,然后再将这个请求转发到文档所应该属于的那个Shard的Leader节点,Leader节点更新同时把文档转发给同属于一个Shard的所有replicas节点。

    SolrCloud有几个特色功能:

    1)集中配置

    2)自动容错

    3)负载均衡 。

    SolrCloud的配置过程

    这里为了方便建了4个bat文件并分别命名为对应的角色,先说一下配置的参数:

    参数名

    说明

    -Dbootstrap_confdir

    是上传本地的配置文件上传到zookeeper中去,作为整个集群共用的配置文件

    -Dcollection.configName

    是上传的Solr配置在集群中的名了,如不指定默认为collection1

    -DzkRun

    启动一个嵌入式的Zookeeper服务器,它会作为solr服务器的一部分

    -DnumShards

    指定了集群的逻辑分组数目

    -DzkHost

    是指明了Zookeeper集群所在位置

    1. SolrCloudServer-Master-Zookeeper-Host.bat    
             
       
       

    java     -Dbootstrap_confdir=./solr/skyCore/conf -Dcollection.configName=myconf     -DzkRun -DzkHost=localhost:9983,localhost:8574,localhost:9900 -DnumShards=2     -jar start.jar

       
       

           上面的意思是启动一个主SolrCloud服务同时启动内嵌的Zookeeper服务,并上传本地的Solr配置文件到Zookeeper集群中,其中还配置了3个Zookeeper服务器组成一个集群,确保Solr集群信息的高可用性和容错性。当Zookeeper服务为3个以上时,能够更好的实现容灾问题,当为3个Zookeeper服务时挂掉其中一个Zookeeper集群服务还会正常运行,当为5个Zookeeper服务时挂掉两个还是可以正常运行,就像盘阵的Raid机制一样.只有当所有配置的Zookeeper服务都启动后整个服务才会继续运行下去.

    1. SolrCloudServer-Slave-Zookeeper-Host-7574.bat

       

             
       
       

    java -Djetty.port=7574 -DzkRun     -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar

       
       

             上面的意思是启动一个主SolrCloud服务同时启动内嵌的Zookeeper服务,其中还配置了3个Zookeeper服务器地址.

    1. SolrCloudServer-Slave-Zookeeper-Host-8900.bat

       

             
       
       

    java -Djetty.port=8900 -DzkRun     -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar

       
       

               上面的意思是启动一个主SolrCloud服务同时启动内嵌的Zookeeper服务,其中还配置了3个Zookeeper服务器地址.

    1. SolrCloudServer.bat

       

             
       
       

    java -Djetty.port=7500     -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar

       
       

             上面的意思是启动一个主SolrCloud服务.并配置了Zookeeper服务器所在.       当服务启动成功后可以在管理界面中SolrCloud情况,通过Cloud->Tree可以查看当前详细的服务情况,如图:

     

           通过上面的图我们可以看到当前有两个shard,每个shard下面有两个节点,还可以看到刚才配置中指定的myconf名称,点开后就可以看到上传的配置文件了,点击下面第一个节点都可以看到

     

    集群状态json:

       

             
       
       

    {"skyCore":{

       

            "shards":{

       

              "shard1":{

       

                "range":"80000000-ffffffff",

       

                "state":"active",

       

                "replicas":{

       

                  "10.0.4.84:8983_solr_skyCore":{

       

                    "shard":"shard1",

       

                    "state":"active",

       

                    "core":"skyCore",

       

                    "collection":"skyCore",

       

                    "node_name":"10.0.4.84:8983_solr",

       

                    "base_url":"http://10.0.4.84:8983/solr"},

       

                  "10.0.4.84:7500_solr_skyCore":{

       

                "shard":"shard1",

       

                    "state":"active",

       

                    "core":"skyCore",

       

                    "collection":"skyCore",

       

                    "node_name":"10.0.4.84:7500_solr",

       

                    "base_url":"http://10.0.4.84:7500/solr",

       

                    "leader":"true"}}},

       

              "shard2":{

       

                "range":"0-7fffffff",

       

                "state":"active",

       

                "replicas":{

       

                  "10.0.4.84:7574_solr_skyCore":{

       

                    "shard":"shard2",

       

                    "state":"active",

       

                    "core":"skyCore",

       

                    "collection":"skyCore",

       

                "node_name":"10.0.4.84:7574_solr",

       

                    "base_url":"http://10.0.4.84:7574/solr"},

       

                  "10.0.4.84:8900_solr_skyCore":{

       

                    "shard":"shard2",

       

                    "state":"active",

       

                    "core":"skyCore",

       

                    "collection":"skyCore",

       

                    "node_name":"10.0.4.84:8900_solr",

       

                    "base_url":"http://10.0.4.84:8900/solr",

       

                    "leader":"true"}}}},

       

            "router":"compositeId"}}

       
       

    SolrCloud集中式的配置信息

             SolrCloud集群的所有的配置存储在ZooKeeper. 一旦SolrCloud节点启动时配置了Dbootstrap_confdir参数, 该节点的配置信息将发送到ZooKeeper上存储. 基它节点启动时会应用ZooKeeper上的配置信息,这样当我们改动配置时就不用一个个机子去更改了.

    SolrCloud容灾备份

           Shard Replica除了作为容灾备份存在, 另外一个作用就是分散查询请求, 提高整个集群对查询的负载能力.

    SolrCloud索引处理

           索引文档的更新在Shard和Replica之间是自动和实时的.把一个doc可以发送到任何一个SolrCloud, 然后由SolrCloud完成剩下的事情. SolrCloud会自动选择一个Shard进行分发任务,当一个Shard的leader收到文档后同时也会把doc分发给当前Shard所有的副本.

    SolrCloud检索方式

    有三种不同的检索方式:

    1. 在所有Shared上进行检索一个Core的数据

       

             
       
       

    http://localhost:8983/solr/skyCore/select?q=*%3A*

       
       
    1. 在指定的Shared上进行检索一个Core的数据

       

             
       
       

    http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=shard1,shard2

       
       
    1. 也可以使用shard的地址作为参数

       

             
       
       

    http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=     localhost:8983/solr,localhost:7574/solr

       
       
    1. 在指定地址的Shared上进行检索,并支持负载一个Core的数据

       

             
       
       

    http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=localhost:8983/solr|localhost:8900/solr,localhost:7574/solr|localhost:7500/solr

       
       
    1. 在所有Shared上进行检索指定的Core,并合并结果

       

             
       
       

    http://localhost:8983/solr/skyCore/select?q=*%3A*&collection=TestCore,skyCore

       
       
    1. 当有shard没有启动时查询是会报错的.为了让查询能正常进行,在查询时加入参数shards.tolerant=true就可以正常查询了.

       

             
       
       

    http://localhost:8983/solr/skyCore/select?q=*%3A*&shards.tolerant=true

       
       

    SolrCloud的集合(SolrCores)管理API

    1. 添加集合

       

             
       
       

    http://localhost:8983/solr/admin/collections?action=CREATE&name=mycollection&numShards=1&replicationFactor=4

       
       

    参数名

    说明

    Name

    要创建的集合名称

    numShards

    指定集合Shard的数量

    replicationFactor

    指定每个Shard副本数量

    maxShardsPerNode

    每个Solr服务器节点上最大Shard数量

    createNodeSet

    还不明白什么用

    collection.configName

    配置的名称(必须已存储在ZooKeeper)使用这个新的集合。如果没有提供创建操作将默认配置名称的集合名称。

    1. 删除集合

       

             
       
       

    http://localhost:8983/solr/admin/collections?action=DELETE&name=mycollection

       
       
    1. 重新加载

       

             
       
       

    http://localhost:8983/solr/admin/collections?action=RELOAD&name=mycollection

       
       

    动态添加SolrCore示例

    在服务运行时新添加的MyCore分布在3个Shared上面每个两个节点

       

             
       
       

    http://localhost:8983/solr/admin/collections?action=CREATE&name=MyCore&numShards=3&replicationFactor=2

       
       
  • 相关阅读:
    智能Office同步器Alpha 1(界面预览)
    SQLite系列免费/开源数据库组件/应用
    软件推荐:智能PE资源提取器
    怎样编写MS Office安全插件
    博客园Logo创意之我的朋友弄的
    DNN(DotNetNuke)研究手札系列1-资源
    VB5/6反编译器(半)
    关于Peer Review、代码评审和测试驱动等
    [转载]关于怎样优化HTML以加快下载速度的10个方法
    完全优化MySQL数据库性能的八大巧方法
  • 原文地址:https://www.cnblogs.com/guozk/p/3498844.html
Copyright © 2020-2023  润新知