Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

使用健康管理器配置自管理分片集群的健康状况

在此页面上

  • Overview
  • 主动故障持续时间
  • 进度监视器
  • 示例

本文档介绍如何使用健康管理器来监控和管理分片集群的健康问题。

健康经理器以指定的 强度级别 对 健康管理器组件 器组件运行健康状况检查。健康经理检查按指定时间间隔运行。 可以将健康经理配置为自动将出现故障的mongos从集群中移出。 进度监视器可确保健康经理检查不会卡住或无响应。

下表显示了可用的健康经理组件:

Facet
健康观察器检查的内容

configServer

与配置服务器连接相关的集群运行状况问题。

dns

与 DNS 可用性和功能性相关的集群运行状况问题。

ldap

与 LDAP 可用性和功能性相关的集群运行状况问题。

下表列出了可用的健康管理器强度等级:

强度等级
说明

critical

该组件上的健康管理器已启用,并且能够在发生错误时将出现故障的 mongos 从集群中移出。健康管理器会等待 activeFaultDurationSecs 指定的时间,然后自动停止并从集群中移出 mongos

non-critical

该组件上的健康管理器已启用并记录错误,但如果出现错误,Mongo 仍保留在集群中。

off

该组件上的健康管理器已禁用。mongos 不会对该组件执行任何健康状况检查。这是默认强度级别。

当检测到故障且健康管理器强度等级设置为 critical 时,健康管理器会等待 activeFaultDurationSecs 指定的时间,然后自动停止 mongos 并将其移出群集。

进度监视器运行测试以确保运行状况管理器的检查不会卡住或无响应。进度监视器按照 interval 指定的时间间隔来运行这些测试。如果健康检查开始但未在 deadline 指定的超时时间内完成,则进度监视器会停止 mongos 并将其从集群中删除。

字段
说明
单位

interval

确保健康管理器不会卡住或无响应的频率。

毫秒

deadline

如果健康管理器检查没有取得进展,则在 Mongo 自动失败之前超时。

秒数

以下示例展示了如何配置健康管理器。 有关健康经理参数的信息,请参阅健康经理参数。

例如,要设置 dns 运行状况管理器组件为 critical 强度级别,则在启动时执行以下命令:

mongos --setParameter 'healthMonitoringIntensities={ values:[ { type:"dns", intensity: "critical"} ] }'

或者,如果在连接至正在运行的 mongosmongosh 会话中使用 setParameter 命令:

db.adminCommand(
{
setParameter: 1,
healthMonitoringIntensities: { values: [ { type: "dns", intensity: "critical" } ] } } )
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 healthMonitoringIntensities,如以下示例所示:

setParameter:
healthMonitoringIntensities: "{ values:[ { type:\"dns\", intensity: \"critical\"} ] }"

healthMonitoringIntensities 接受一个文档数组,valuesvalues 中的每个文档都有两个字段:

  • type,运行状况管理器组件

  • intensity,强度等级

请参阅 healthMonitoringIntensities 了解详细信息。

例如,若要将 ldap 运行状况管理器组件设置为每 30 秒进行一次健康检查,则请在启动时执行以下命令:

mongos --setParameter 'healthMonitoringIntervals={ values:[ { type:"ldap", interval: "30000"} ] }'

或者,如果在连接至正在运行的 mongosmongosh 会话中使用 setParameter 命令:

db.adminCommand(
{
setParameter: 1,
healthMonitoringIntervals: { values: [ { type: "ldap", interval: "30000" } ] } } )
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 healthMonitoringIntervals,如以下示例所示:

setParameter:
healthMonitoringIntervals: "{ values: [{type: \"ldap\", interval: 200}] }"

healthMonitoringIntervals 接受一个文档数组,valuesvalues 中的每个文档都有两个字段:

  • type,运行状况管理器组件

  • interval,运行的时间间隔,以毫秒为单位

请参阅 healthMonitoringIntervals 了解详细信息。

例如,要将故障到崩溃的持续时间设置为五分钟,则在启动时发出以下命令:

mongos --setParameter activeFaultDurationSecs=300

或者,如果在连接至正在运行的 mongosmongosh 会话中使用 setParameter 命令:

db.adminCommand(
{
setParameter: 1,
activeFaultDurationSecs: 300
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 activeFaultDurationSecs,如以下示例所示:

setParameter:
activeFaultDurationSecs: 300

请参阅 activeFaultDurationSecs 了解详细信息。

进度监视器运行测试以确保运行状况管理器的检查不会卡住或无响应。进度监视器按照 interval 指定的时间间隔来运行这些测试。如果健康检查开始但未在 deadline 指定的超时时间内完成,则进度监视器会停止 mongos 并将其从集群中删除。

要将 intervaldeadline 分别设置为 1000 毫秒和 300 秒,则在启动时发出以下命令:

mongos --setParameter 'progressMonitor={"interval": 1000, "deadline": 300}'

或者,如果在连接至正在运行的 mongosmongosh 会话中使用 setParameter 命令:

db.adminCommand(
{
setParameter: 1,
progressMonitor: { interval: 1000, deadline: 300 } )
}
)

使用 setParameter 设置的参数在重启后不会持续存在。有关详细信息,请参阅 setParameter 页面

要使该设置持续有效,使用 setParameter 选项在您的 mongos 配置文件设置 progressMonitor,如以下示例所示:

setParameter:
progressMonitor: "{ interval: 1000, deadline: 300 }"

请参阅 progressMonitor 了解详细信息。

后退

禁用透明大页。