节点角色
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、内存或磁盘空间)比其他数据节点少的硬件上配置此类专用节点(因为它们是无状态节点),但集群仍将以最佳方式运行。如果专用监管者节点由于某种原因宕机,则将从数据节点中选出监管者领导者(因为它们具有“allowed”模式的监管者),并且一旦其中一个专用监管者节点重新启动,它将再次被选为监管者领导者。
专用 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"]
}
}
}