运维管理利器——Solr

简介

Solr运维管理,主要有Collection、Core、Shard、Replica的创建删除与更新,以及后续会添加一些应急处理方案。

Collection

创建Collection

注意:一定要将collection配置文件上传到zookeeper

删除Collection

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

删除collection后,数据目录和zookeeper中的/solr/configs/newCollection目录不会被删除,建议手动删除。

重新加载配置

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

修改配置文件后,可以重新上传至zookeeper中,并执行upload。

修改参数项

http://localhost:8983/solr/admin/collections?action=MODIFYCOLLECTION&name=newCollection&maxShardsPerNode=2

可以修改的属性有:

maxShardsPerNode

replicationFactor

autoAddReplicas

rule

snitch

有关这些属性的详细信息,参见创建部分。

注意:此API只更新collection中的配置属性。

Core

增加Core

RestFul API创建Core

执行命令

http://hynamet01:8983/solr/admin/cores?action=CREATE&name=collection1_shard3_replica1&instanceDir=collection1_shard3_replica1&dataDir=data&collection=collection1&shard=shard3'

参数描述

collection:collection名称

name:core名称,不能和已有的core名称冲突

shard:shard名称,不能和已有的shard名称冲突

instanceDir:本地配置目录,一般与name保持一致

dataDir:存储目录,相对路径,默认data即可

上面命令会创建一个新的(Shard/Core)

运维管理利器——Solr

创建好Core后,会默认在solr.solr.home目录下创建与name相同的目录,目录下会生成一个core.properties:

#Written by CorePropertiesLocator

#Thu Jun 23 15:06:13 CST 2016

name=collection1_shard3_replica1

config=solrconfig.xml

schema=schema.xml

shard=shard3

dataDir=data

collection=collection1

coreNodeName=core_node3

solr.solr.home目录指定:

运维管理利器——Solr

命令行创建

创建目录

#在solr.solr.home目录下创建目录

mkdir /var/lib/solr/collection1_shard3_replica1

创建core.properties文件,写入示例文件中的内容

#Written by CorePropertiesLocator

#Thu Jun 23 15:06:13 CST 2016

name=collection1_shard3_replica1

config=solrconfig.xml

schema=schema.xml

shard=shard3

dataDir=data

collection=collection1

coreNodeName=core_node3

创建core

./bin/solr create_core -c collection1_shard3_replica1 -d /var/lib/solr/collection1_shard3_replica1

填写参数见"RestFul API创建Core"步骤。

界面创建

运维管理利器——Solr

填写参数见"RestFul API创建Core"步骤。

注意

1、url中指定哪台solr服务器,就会在那台机器上创建该Core

2、建议使用Restful API或者前台界面创建

删除Core

http://hynamet01:8983/solr/admin/cores?action=UNLOAD&core=collection1_shard3_repl

Core删除后数据文件会删除,但是数据目录不会删除,建议手动删除。

Replication

Shard的一个拷贝。每个Replica存在于Solr的一个Core中。一个命名为"test"的collection以numShards=1创建,并且指定replicationFactor设置为2,这会产生2个replicas,也就是对应会有2个Core,每个在不同的机器或者Solr实例。一个会被命名为test_shard1_replica1,另一个命名为test_shard1_replica2。它们中的一个会被选举为Leader。

添加Replication

http://hynamet02:8983/solr/admin/collections?action=ADDREPLICA&collection=collection1&shard=shard2&node=hynamet01:8983_solr

参数说明

collection:collection名称

shard:要添加副本的shard名称,在Cloud界面上可以查看

node:在哪台机器上添加该副本,下面会说如何查看nodes

async:异步添加

property.coreNodeName:

界面查看zk live_nodes目录:

运维管理利器——Solr

查看添加结果:

运维管理利器——Solr

副本添加成功后会立即复制数据到新增的副本中。

删除Replication

http://hynamet02:8983/solr/admin/collections?action=DELETEREPLICA&collection=collection1&shard=shard2&replica=core_node3

参数说明:

collection:collection名称

shard:副本所属shardpro

replica:副本所属的node名称

界面查看zk /clusterstate.json文件来查找replica的值:

运维管理利器——Solr

通过所属collection、shard、副本core名称来查找node名称。

Shard Split

SolrCloud不支持自动分片,但是支持手动分片,而且手动分片后得到的新的分片所包含的Document数量有一定的差异(还不清楚SolrCloud是否支持手动分片后大致均分一个分片)。

在执行Split的时候,该Shard就不能执行写入操作。

http://hynamet01:8983/solr/admin/collections?action=SPLITSHARD&collection=collection1&shard=shard1&async=1000

参数说明:

collection:collection名称

shard:要删除的shard1

async:由于删除操作时间可能会比较长,建议使用异步操作

可选参数

ranges:一个逗号分隔的列表的哈希范围进制例如范围= 0-1f4,1f5-3e8,3e9-5dc

split.key:拆分的建

此时已经将shard1分成了两个子分片:shard1_0和shard1_1,此时,在hynamet01节点上有3个分片处于"Active"状态。实际上,到目前为止,子分片shard1_0和shard1_1已经完全接管了shard1分片,只是没有从图中自动离线退出,这个就需要我们在管理页面你上手动"unload"掉不需要的shard。

这时,新得到的两个子分片,并没有处理之前shard1的两个副本,他们也需要进行分片(实际上是重新复制新分片的副本),这个过程,如图所示:

运维管理利器——Solr

通过API删除shard(也可以通过界面手动删除shard对应的所有core):

http://hynamet01:8983/solr/admin/collections?action=DELETESHARD&collection=collection1&shard=shard1&async=1000

参数说明:

collection:collection名称

shard:要删除的shard1

async:由于删除操作时间可能会比较长,建议使用异步操作

可选参数

deleteInstanceDir:是否删除实例目录

deleteDataDir:是否删除数据目录

deleteIndex:默认会删除shard下面的每个副本索引数据


分享到:


相關文章: