すべてのプロダクト
Search
ドキュメントセンター

Hologres:ストレージを共有するプライマリインスタンスとセカンダリインスタンスの読み取り/書き込み分割の設定

最終更新日:Jan 11, 2025

Hologres V1.1以降では、高可用性を必要とするオンライン本番環境において、プライマリインスタンスとセカンダリインスタンスでストレージを共有するマルチインスタンス高可用性デプロイメントモードをサポートしています。マルチインスタンス高可用性デプロイメントモードは、高可用性のための障害と負荷の分離をサポートします。このトピックでは、高可用性ソリューションの基本原則と、ストレージを共有するプライマリインスタンスとセカンダリインスタンスの設定方法について説明します。

単一インスタンスの自動復旧による高可用性デプロイメント

Hologresコンピューティングノード(次の図のワーカーノード)は、コンテナーと同様にスケジュールされます。リソースマネージャーは定期的なヘルスチェックを実行します。 Out-Of-Memory(OOM)エラーまたはハードウェアもしくはソフトウェアの障害が原因で、コンピューティングノードの応答に1分以上かかる場合、リソースマネージャーは自動的に新しいコンピューティングノードを起動し、障害が発生したコンピューティングノードから新しいコンピューティングノードにシャードを移行します。たとえば、ワーカーノード3の応答に1分以上かかる場合、リソースマネージャーはワーカーノード4を起動してワーカーノード3を置き換え、迅速な復旧を実現します。データはApsara Distributed File Systemに保存されるため、コンピューティングノードから移行する必要はありません。コンピューティングノードは軽量でステートレスであるため、迅速な復旧が可能です。デフォルトでは、単一インスタンスの高速復旧機能は各Hologresインスタンスで有効になっています。ノードで例外が発生した場合、インスタンスは手動のO&Mを必要とせずに自動的に復旧できます。クエリ演算子が自動復旧中のノードにアクセスしようとすると、クエリはすぐに失敗します。 Hologres V1.1以降では、約1分以内にノードを復旧できる新しい復旧メカニズムを使用しています。これは以前のバージョンよりも5~10倍高速です。单可用方案

マルチインスタンス高可用性デプロイメント

仕組み

単一インスタンスデプロイメントモードでは、障害はリアルタイムで監視され、障害が発生したノードは復旧のために置き換えられます。ノードの復旧中は、サービスが利用できない場合があります。重要なビジネスシナリオでは、障害と負荷の分離をサポートするために、より高レベルの高可用性ソリューションが必要です。 Hologres V1.1以降では、インスタンス間でストレージを共有するマルチインスタンス高可用性デプロイメントモードを使用します。マルチインスタンス高可用性デプロイメントモードでは、プライマリインスタンスは、データの読み取りと書き込み、権限とシステムパラメーターの設定など、すべての機能を備えています。セカンダリインスタンスは読み取り専用です。すべての操作はプライマリインスタンスで実行されます。次の図は、マルチインスタンス高可用性デプロイメントモードを示しています。共享存储多实例プライマリインスタンスとセカンダリインスタンスはコンピューティングリソースを共有せず、インスタンスの負荷と障害は分離されています。すべてのインスタンスは、同じデータ、アクセス制御設定、およびストレージ料金を共有します。

メモリステータスは、インスタンス間でリアルタイムに自動的に同期されます。同じリージョン内のインスタンスのメモリステータスは、ミリ秒以内に同期できます。プライマリインスタンスにデータを書き込むと、システムはプライマリインスタンスからセカンダリインスタンスにデータを自動的に同期します。そのため、セカンダリインスタンスを使用しない場合でも、セカンダリインスタンスの少量のCPUおよびメモリリソースが消費されます。消費されるリソース量は、プライマリインスタンスの消費リソースの約 1/8 です。セカンダリインスタンスの仕様構成は、プライマリインスタンスの仕様構成と大きく異ならないようにすることをお勧めします。

使用上の注意

  • プライマリインスタンスごとに最大 10 個の読み取り専用セカンダリインスタンスを設定できます。インスタンス間のリソース構成は若干異なる場合があります。すべてのインスタンスでシャード数は同じである必要があります。

  • 各読み取り専用セカンダリインスタンスには、一意のエンドポイントがあります。異なる読み取り専用セカンダリインスタンスは、異なるビジネスシナリオで使用されます。エンドポイントを使用してビジネスシナリオを分離できます。

  • Hologres V1.3.27以降では、プライマリインスタンスからセカンダリインスタンスへのデータ同期のレイテンシしきい値が 20 分から 60 分に変更されました。同期のレイテンシが 60 分を超え、セカンダリインスタンスのリソース使用率が長期間 100% のままの場合、セカンダリインスタンスは自動的に再起動して同期のレイテンシを短縮します。セカンダリインスタンスのリソース使用率が長期間 100% のままの場合は、セカンダリインスタンスで実行されているクエリステートメントを最適化するか、セカンダリインスタンスをスケールアウトすることをお勧めします。

  • 読み取り専用セカンダリインスタンスをプライマリインスタンスに関連付けると、プライマリインスタンスは想定どおりに使用でき、影響を受けません。

  • 読み取り専用セカンダリインスタンスをプライマリインスタンスに関連付けるには、約 3 ~ 5分かかります。関連付けが完了すると、読み取り専用セカンダリインスタンスを想定どおりに使用できます。

  • プライマリインスタンスに関連付けられていない読み取り専用セカンダリインスタンスにはアクセスできません。

  • プライマリセカンダリインスタンスアーキテクチャを使用するHologresストレージレイヤーからMaxComputeを使用して直接データを読み取る場合は、プライマリHologresインスタンスのURLのみを使用してHologresに接続できます。セカンダリインスタンスのURLは使用できません。詳細については、「Hologres外部テーブル」トピックのHologres外部テーブルの直接読み取り機能を有効にするをご参照ください。

さまざまなシナリオでの推奨事項

  • 一般的なシナリオ:

    プライマリインスタンスを使用してデータの書き込みと処理を行い、読み取り専用セカンダリインスタンスを使用してデータを分析することをお勧めします。これにより、読み取り/書き込みの分割が保証されます。

  • その他のシナリオ:

    • オンラインサービスクエリの場合、単一の読み取り専用セカンダリインスタンスを使用してオンラインサービスの高可用性を確保することをお勧めします。これは、クエリの安定したP99レイテンシに対する高い要件を満たします。

    • オンライン分析処理(OLAP)クエリの場合、データ分析用にセカンダリインスタンスを指定することをお勧めします。指定されたセカンダリインスタンスは、上記のオンラインサービスクエリで使用されるセカンダリインスタンスとは異なります。これにより、OLAPクエリとオンラインサービスクエリの読み取り分割が保証されます。大量のデータがクエリされても、オンラインサービスクエリは影響を受けません。

ストレージを共有するプライマリインスタンスとセカンダリインスタンスの設定

マルチインスタンス高可用性デプロイメントモードを設定する場合は、次の制限事項に注意してください。

  • プライマリインスタンスとして、バージョンがV1.1以降のHologresインスタンスのみを使用する必要があります。 Hologresインスタンスのバージョンが V1.1 より前の場合は、Hologresコンソールでインスタンスを手動でアップグレードするか、Hologres DingTalkグループに参加してインスタンスのアップグレードを申請してください。 Hologresインスタンスを手動でアップグレードする方法の詳細については、インスタンスのアップグレードをご参照ください。 Hologres DingTalkグループへの参加方法の詳細については、Hologresのオンラインサポートを受けるをご参照ください。

  • プライマリインスタンスに関連付けられていない読み取り専用セカンダリインスタンスにはアクセスできません。

  • プライマリインスタンスとその読み取り専用セカンダリインスタンスは、同じバージョンである必要があります。

  • プライマリインスタンスとその読み取り専用セカンダリインスタンスは、同じリージョンに存在する必要があります。

読み取り専用セカンダリインスタンスの関連付けまたは関連付け解除に必要な権限

RAMユーザーを使用して読み取り専用セカンダリインスタンスをプライマリインスタンスに関連付けたり、関連付けを解除したりする場合は、AliyunHologresFullAccess ポリシーをRAMユーザーにアタッチする必要があります。 RAMユーザーに付与できる権限の詳細については、RAMユーザーに権限を付与するをご参照ください。

マルチインスタンス高可用性デプロイメントモードを設定するには、次の操作を実行します。

  1. Hologresインスタンスを購入します。

    重要

    購入する読み取り専用セカンダリインスタンスは、セカンダリインスタンスを関連付けるプライマリインスタンスと同じリージョンにある必要があります。

    読み取り専用セカンダリインスタンスを購入する際は、[仕様] パラメーターを 読み取り専用セカンダリインスタンス に設定し、[読み取り専用セカンダリインスタンスのプライマリインスタンスID] パラメーターをゾーン内の読み取り専用セカンダリインスタンスを関連付けるプライマリインスタンスのIDに設定します。その他のパラメーターの詳細については、Hologresインスタンスを購入するをご参照ください。

  2. 読み取り専用セカンダリインスタンスをプライマリインスタンスに関連付けます。

    読み取り専用セカンダリインスタンスを購入すると、インスタンスは購入ページで選択したプライマリインスタンスに関連付けられます。インスタンスが [実行中] 状態になると、読み取り専用セカンダリインスタンスを使用できます。

  3. インスタンスを使用します。

    マルチインスタンス高可用性デプロイメントモードを使用する場合は、次の項目に注意してください。

    • 読み取り専用セカンダリインスタンスのエンドポイントを使用して、オンラインサービスを提供できます。

    • テーブルの作成やユーザーへの権限の付与などのすべての操作は、プライマリインスタンスで実行する必要があります。読み取り専用セカンダリインスタンスは、データの読み取りにのみ使用できます。

    • 読み取り専用セカンダリインスタンスは、プライマリインスタンスのすべてのオブジェクトを自動的に継承します。オブジェクトには、ユーザーとテーブルが含まれます。読み取り専用セカンダリインスタンス用に個別にユーザーを作成することはできません。