このトピックでは、過負荷保護機能の仕組みとその使用方法について説明します。
背景情報
プロモーションでは、プライマリノードのCPUリソースが過負荷になる可能性があります。 この場合、プライマリノードをアップグレードできます。 ただし、アップグレードプロセスでは、一時的な接続が発生するか、クラスターが使用できなくなるため、クラスター全体の要求がプライマリノードにルーティングされます。 これにより、プライマリノードの過負荷が悪化し、クラッシュやビジネスの中断も発生します。 この状況を防ぐために、PolarDB for MySQLはPolarProxyの過負荷保護機能を提供しています。 この機能は、すべての読み取り専用ノードが使用できなくなったときに同時リクエストの数を制限し、プライマリノードとサービスの可用性を確保します。
制限事項
この機能を使用するには、PolarProxyが2.8.1以降で、クラスターがPolarDB for MySQLの5.6、5.7、または8.0である必要があります。
この機能は、読み取り /書き込みエンドポイントのみをサポートします。
過負荷保護機能は、すべての読み取り専用ノードにクラッシュが原因で障害が発生した場合、またはプライマリデータベースとのレプリケーションが中断された場合にのみトリガーされます。 この機能は、他のシナリオではサポートされません。
使用状況
[概要] ページの [クラスターエンドポイント] セクションで、[変更] をクリックします。 [ノードの設定] ページで、過負荷保護機能を有効にします。
PolarProxyは、リーキーバケットアルゴリズムに基づいて、クラスター内のすべての読み取り専用ノードに障害があることを検出すると、プライマリノードを保護するためにクラスターへの同時要求を制限します。 読み取り専用ノードが正常になるか、指定された制限時間 (デフォルトでは60秒) に達すると、過負荷保護はキャンセルされます。
PolarDB for MySQLは、履歴データに基づいて、同時リクエストの最大数に適した間隔を選択します。 クラスターが正常な場合、PolarProxyは、過去24時間にプライマリノードでサンプリングされた同時リクエストの数を記録します。
過負荷保護がトリガーされると、PolarProxyは履歴データの中央値を同時リクエストの最大数として使用して、アクティブな接続の数を制限します。
例
テスト中、すべての読み取り専用ノードのレプリケーションが中断されると、過負荷保護がトリガーされます。 この期間中、要求は引き続きプライマリノードにルーティングできますが、要求の数は急激に増加しません。
読み取り専用ノードが回復すると、過負荷保護が無効になり、要求を正常に転送できます。