Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

使用健康管理器管理分片集群健康状况

在此页面上

  • 概述
  • 活动故障持续时间
  • 进度监视器
  • 举例

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

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

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

分面
健康观察器检查的内容
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"} ] }'

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

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"} ] }'

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

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

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

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}'

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

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

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

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

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

请参阅 progressMonitor 了解详细信息。

← 禁用透明大页 (THP)