ヘルスマネージャーによる自己管理型シャーディングされたクラスターのヘルス構成
このドキュメントでは、ヘルスマネージャーを使用してシャーディングされたクラスターの健全性の問題を監視および管理する方法について説明します。
Overview
ヘルスマネージャーは、指定された 強度レベル で ヘルスマネージャーファセット に対してヘルスチェックを実行します。ヘルスマネージャーのチェックは指定された時間間隔で実行されます。 ヘルスマネージャーは、障害のあるmongosをクラスターから自動的に移動するように構成できます。 プログレス モニターは 、ヘルスマネージャーのチェックが停止したり、応答しなくなったりしないよう確認します。
ヘルスマネージャーファセット
次の表には、使用可能なヘルスマネージャーファセットが示されています。
Facet | ヘルス オブザーバーがチェックする内容 |
---|---|
configServer | コンフィギュレーションサーバーに対する接続に関連するクラスターの健全性の問題。 |
dns | DNS の可用性と機能に関連するクラスターの健全性の問題。 |
ldap | LDAP の可用性と機能に関するクラスターの健全性の問題。 |
ヘルスマネージャー強度レベル
次の表には、利用可能なヘルスマネージャー強度レベルが示されています。
強度レベル | 説明 |
---|---|
critical | このファセットのヘルスマネージャーは有効になっており、エラーが発生した場合に障害のあるmongosをクラスターから移動する機能があります。 ヘルスマネージャーは、 activeFaultDurationSecs で指定された時間待機してから、 mongosを自動的に停止してクラスターから移動します。 |
non-critical | このファセットのヘルスマネージャーは有効になっており、エラーをログに記録しますが、エラーが発生した場合、mongos はクラスター内に残ります。 |
off | このファセットのヘルスマネージャーは無効です。mongos は、このファセットでヘルスチェックを実行しません。これは、デフォルトの強度レベルです。 |
アクティブなフォールト期間
障害が検出され、ヘルスマネージャー強度レベルがcritical
に設定されている場合、ヘルスマネージャーはactiveFaultDurationSecs
で指定された時間だけ待機してから、 mongosを自動的に停止してクラスターから移動します。
プログレス モニター
プログレス モニターは 、ヘルスマネージャーのチェックが停止したり、応答しなくなったりしないよう確認するためのテストを実行します。 プログレス モニターは、 interval
で指定された間隔でこれらのテストを実行します。 ヘルスチェックが開始されたが、 deadline
で指定されたタイムアウト内に完了しない場合、プログレス モニターはmongosを停止し、クラスターから削除します。
progressMonitor
フィールド
フィールド | 説明 | 単位 |
---|---|---|
interval | ヘルスマネジャーが、停止したり、応答しなくなったりしないよう確認する頻度。 | ミリ秒 |
deadline | ヘルスマネージャーのチェックが進行していない場合に、mongos を自動的に失敗させるまでの中断時間。 | 秒 |
例
次の例は、ヘルスマネージャーの構成方法を示しています。 ヘルスマネージャー パラメータの詳細については、「ヘルスマネージャー パラメータ 」を参照してください。
強度
たとえば、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
はドキュメントの配列 values
を受け取ります。values
の各ドキュメントは 2 個のフィールドを取ります。
type
、ヘルスマネージャーファセットintensity
、強度レベル
詳細については、「healthMonitoringIntensities
」を参照してください。
間隔
たとえば、30 秒ごとにヘルスチェックを実行するように ldap
ヘルスマネージャーファセットを設定するには、スタートアップ時に次のコマンドを発行します。
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
はドキュメントの配列 values
を受け取ります。values
の各ドキュメントは 2 個のフィールドを取ります。
type
、ヘルスマネージャーファセットinterval
、実行の間隔(ミリ秒単位)
詳細については、「healthMonitoringIntervals
」を参照してください。
アクティブなフォールト期間
たとえば、障害からクラッシュまでの期間を 5 分に設定するには、起動時に次のコマンドを発行します。
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を停止し、クラスターから削除します。
interval
を 1000 ミリ秒に設定し、deadline
を 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
」を参照してください。