節點角色
Solr 中的節點通常能夠執行各種類型的操作,例如託管副本、執行索引和查詢、集合管理任務等等。為了建立一個叢集,將這些功能隔離到某些專用節點,我們可以使用節點角色的概念。
角色
為了指定節點的角色,需要使用以下參數啟動 Solr 節點。
參數 | 值 | 是否必要? | 預設值 |
---|---|---|---|
solr.node.roles |
此節點的角色 (格式為: |
否 |
|
如果節點啟動時沒有 |
角色 | 模式 |
---|---|
|
on, off |
|
allowed, preferred, disallowed |
|
on, off |
overseer
角色
具有此角色的節點可以執行監督者節點的職責 (除非模式為 disallowed
)。當一個或多個節點的監督者角色處於 preferred
模式時,將從這些節點中選出監督者領導者。如果沒有節點被指定為首選監督者,或沒有此類節點處於作用中,則將從監督者角色處於 allowed
模式的節點中選出監督者領導者。如果所有被指定為監督者角色的節點 (允許或首選) 都已關閉,則叢集將沒有監督者。
使用範例
有時,當叢集中的節點處於大量查詢或索引負載時,監管者領導節點可能無法有效執行集合管理職責。擁有專用節點作為監管者可能是合理的。可以透過以下方式達到這種效果:
-
叢集中的大多數節點(資料節點)啟動時使用
-Dsolr.node.roles=data:on,overseer:allowed
(或者不使用任何參數,因為solr.node.roles
的預設值相同)。 -
一個或多個節點(專用監管者節點)可以啟動時使用
-Dsolr.node.roles=overseer:preferred
(或-Dsolr.node.roles=overseer:preferred,data:off
)。 -
一個或多個專用協調器節點可以啟動時使用
-Dsolr.node.roles=coordinator:on,data:off
。
在此配置中,可以在硬體資源(如 CPU、記憶體或磁碟空間)較少的硬體上佈建這些專用節點(因為它們是無狀態節點),但叢集仍將以最佳方式運作。如果專用監管者節點由於某些原因而關閉,則將從其中一個資料節點選出監管者領導者(因為它們的監管者模式為「允許」),並且一旦其中一個專用監管者節點重新啟動,它將再次被選為監管者領導者。
專用 coordinator
節點可以配置足夠的記憶體,但儲存空間非常少。它們也可以根據需求啟動和停止,因為它們是無狀態的。
角色 API
GET /api/cluster/node-roles/supported
擷取此叢集支援的角色及其支援模式的列表。
輸入
curl https://127.0.0.1:8983/api/cluster/node-roles/supported
輸出
{
"supported-roles":{
"data":{
"modes":["off",
"on"]
},
"overseer":{
"modes":["disallowed",
"allowed",
"preferred"]
}
}
}
GET /api/cluster/node-roles
擷取叢集中所有節點的目前節點角色指派。
輸入
curl https://127.0.0.1:8983/api/cluster/node-roles
輸出
{
"node-roles":{
"data":{
"off":["solr2:8983_solr"],
"on":["solr1:8983_solr"]
},
"overseer":{
"allowed":["solr1:8983_solr"],
"disallowed":[],
"preferred":["solr2:8983_solr"]
}
}
}
GET /api/cluster/node-roles/role/{role}
擷取指定角色的目前節點角色指派。
輸入
https://127.0.0.1:8983/api/cluster/node-roles/role/data
輸出
{
"node-roles":{
"data":{
"off":["solr2:8983_solr"],
"on":["solr1:8983_solr"]
}
}
}
輸入
https://127.0.0.1:8983/api/cluster/node-roles/role/data/off
輸出
{
"node-roles":{
"data":{
"off":["solr2:8983_solr"]
}
}
}