運維管理利器——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下面的每個副本索引數據


分享到:


相關文章: