Hologres V1.1 以降では、オンラインの本番環境向けに高可用性 (HA) を確保するため、プライマリインスタンスとレプリカインスタンスを使用する共有ストレージデプロイメントモデルを提供しています。このモデルは、障害分離と負荷分離をサポートし、HA 要件を満たします。このトピックでは、この HA ソリューションのコア原則と、共有ストレージを使用するプライマリインスタンスとレプリカインスタンスの設定方法について説明します。
単一インスタンスの自動回復 HA ソリューション
すべての Hologres コンピュートノードはコンテナーでスケジュールされます。これは、次の図ではワーカーノードと呼ばれています。リソースマネージャーは定期的なヘルスチェックを実行します。メモリオーバーフロー、ハードウェア障害、またはソフトウェアのバグなどの理由でコンテナーが 1 分以内に応答しない場合、リソースマネージャーは自動的に新しいコンピュートノードを起動し、シャードの責務を移行します。たとえば、ワーカーノード 3 がタイムアウトした場合、リソースマネージャーはそれをワーカーノード 4 に置き換えます。このプロセスにより、迅速なシステム回復が可能になります。データ状態は Pangu 分散ストレージシステムに保存されており、コンピュートノードから移行する必要はありません。コンピュートノードは軽量でステートレスであるため、システムは障害から迅速に回復できます。このソリューションは、すべてのインスタンスでデフォルトで有効になっています。システムは、手動の O&M 操作なしで障害から自動的に回復します。回復プロセス中、回復中のノードにアクセスしようとするクエリオペレーターはすべて即座に失敗します。Hologres V1.1 以降では、新しい回復メカニズムを使用しており、ノードを約 1 分で復元します。これは以前のバージョンよりも 5〜10 倍高速です。
共有ストレージを使用したマルチインスタンス HA ソリューション
技術的原則
単一インスタンスのソリューションは、リアルタイムの障害検出とノードの置き換えに依存しています。しかし、このアプローチでは、ノードの回復中に短いサービス利用不可のウィンドウが発生します。ミッションクリティカルなシナリオでは、障害分離と負荷分離の両方をサポートする、より高度な HA ソリューションが必要です。Hologres V1.1 以降では、共有ストレージを使用するマルチインスタンスデプロイメントモデルをサポートしています。このモデルでは、プライマリインスタンスが完全な機能を持ちます。読み取りおよび書き込み操作をサポートし、権限やシステムパラメーターを設定できます。レプリカインスタンスは読み取り専用です。すべての変更は、次の図に示すように、プライマリインスタンスで行う必要があります。
プライマリインスタンスとレプリカインスタンスは計算リソースを共有しないため、負荷と障害の分離が保証されます。すべてのインスタンスは同じデータとアクセス制御ポリシーを共有し、ストレージ料金は 1 つだけ請求されます。
メモリ状態は、インスタンス間でリアルタイムに自動的に同期されます。同一リージョン内では、この同期はインスタンスレベルで行われ、ミリ秒単位で完了します。データがプライマリインスタンスに書き込まれると、システムは自動的にそれをレプリカインスタンスに同期します。その結果、レプリカインスタンスはアイドル状態でも CPU とメモリリソースを消費します。この消費量は、プライマリインスタンスの使用量の約 1/8 です。プライマリインスタンスとレプリカインスタンスの仕様を大幅に異なるものに設定しないことを推奨します。
使用上の注意
-
最大 10 個の読み取り専用レプリカインスタンスを設定できます。リソース構成はインスタンス間で異なる場合がありますが、大幅に異なるべきではありません。すべてのインスタンスは同じ数のシャードを持つ必要があります。
-
各読み取り専用レプリカインスタンスには、一意のアクセスエンドポイントがあります。異なるエンドポイントを使用して、ビジネスシナリオを分離できます。
-
Hologres V1.3.27 以降では、プライマリインスタンスとレプリカインスタンス間の同期の遅延しきい値が
20分から60分に引き上げられました。レプリカインスタンスのリソース使用率が 60 分を超えて100%のままである場合、レプリカインスタンスは同期遅延を短縮するために自動的に再起動します。レプリカインスタンスのリソース使用率が長期間100%のままである場合、パフォーマンスチューニングを実行するか、インスタンスをスケールアウトする必要があります。 -
プライマリインスタンスは、読み取り専用レプリカインスタンスにバインドされている間も完全に動作し続けます。
-
読み取り専用レプリカインスタンスをプライマリインスタンスにバインドするには、約 3〜5 分かかります。レプリカインスタンスは、バインドプロセスが完了した後にのみ使用できます。
-
プライマリインスタンスにバインドされていない読み取り専用レプリカインスタンスには接続できません。
-
MaxCompute が Hologres ストレージレイヤーから直接データを読み取り、Hologres がプライマリ/レプリカアーキテクチャを使用している場合、接続 URL はレプリカインスタンスではなく、プライマリインスタンスを指すように設定する必要があります。詳細については、「Hologres 外部テーブルストレージからの直接読み取りを有効にする」をご参照ください。
推奨シナリオ
-
汎用シナリオ:
プライマリインスタンスをデータインジェストとデータ変換に使用し、読み取り専用レプリカインスタンスをデータ分析に使用できます。この構成により、読み書き分離が実現します。
-
シナリオ:
-
高い P99 安定性が求められるオンラインサービスクエリの場合、専用の読み取り専用レプリカインスタンスを使用して、オンラインサービスの可用性を分離し保護することができます。
-
オンライン分析処理 (OLAP) クエリの場合、オンラインサービスのレプリカインスタンスとは別の、分析に特化したレプリカインスタンスを使用できます。この分離により、大規模なクエリがオンラインサービスのパフォーマンスに影響を与えるのを防ぎます。
-
共有ストレージを使用したプライマリインスタンスとレプリカインスタンスの構成
共有ストレージを使用するマルチインスタンスデプロイメントには、以下の制限が適用されます。
-
プライマリインスタンスとして機能できるのは、Hologres V1.1 以降のみです。ご利用のインスタンスがそれより前のバージョンを実行している場合は、「一般的なアップグレード準備エラー」をご参照いただくか、Hologres ユーザーグループに参加してアップグレードをリクエストしてください。詳細については、「オンラインサポートをさらに受けるには?」をご参照ください。
-
読み取り専用レプリカインスタンスは、プライマリインスタンスにバインドされる前には接続できません。
-
プライマリインスタンスとレプリカインスタンスは、同じ Hologres バージョンを実行する必要があります。
-
プライマリインスタンスとレプリカインスタンスは、同じリージョンに存在する必要があります。
アタッチおよびデタッチ操作の権限要件
読み取り専用レプリカインスタンスでアタッチおよびデタッチ操作を実行するには、RAM ユーザーに AliyunHologresFullAccess アクセスポリシーを付与する必要があります。RAM ロールの権限の詳細については、「RAM ユーザーへの権限付与」をご参照ください。
共有ストレージを使用する高可用性マルチインスタンスデプロイメントを構成するには、次の手順を実行します。
-
新しい Hologres インスタンスの購入
重要読み取り専用レプリカインスタンスは、プライマリインスタンスと同じリージョンにある必要があります。
新しいインスタンスを購入する際、Instance Type を 読み取り専用レプリカインスタンス に設定し、[読み取り専用レプリカインスタンスのプライマリインスタンス ID] で同じゾーンのプライマリインスタンスの ID を選択します。その他のパラメーターの詳細については、「Hologres インスタンスの購入」をご参照ください。
-
読み取り専用レプリカインスタンスのアタッチ
読み取り専用レプリカインスタンスを購入すると、購入ページで選択したプライマリインスタンスに自動的にアタッチされます。レプリカインスタンスの状態が 正常に実行されています に変わった後、使用を開始できます。
-
使用例
共有ストレージを使用するマルチインスタンスデプロイメントを使用する場合、以下の点に注意してください。
-
構成が完了したら、レプリカインスタンスのエンドポイントを使用してオンライントラフィックを処理します。
-
テーブル作成やユーザー権限付与など、すべての操作はプライマリインスタンスで実行する必要があります。レプリカインスタンスは、データ読み取り操作のみをサポートします。
-
レプリカインスタンスは、ユーザーやテーブルなど、すべてのオブジェクトをプライマリインスタンスから自動的に継承します。アクセス制御レイヤーでレプリカインスタンス専用のユーザーを作成することはできません。
-