sql >> データベース >  >> NoSQL >> HBase

CDPオペレーショナルデータベースの高可用性(マルチAZ)

    CDPオペレーショナルデータベース(COD) ApacheHBaseとApachePhoenixを利用した自律型トランザクションデータベースです。これは、Cloudera Data Platform(CDP)パブリッククラウドで実行される主要なデータサービスの1つです。 CDPコンソールから直接CODにアクセスできます。 CODを使用すると、アプリケーション開発者は、デプロイメントと管理に関連することが多いオーバーヘッドなしで、HBaseとPhoenixのパワーを活用できるようになります。 CODはプロビジョニングが簡単で自己管理が可能です。つまり、開発者は数分以内に新しいデータベースインスタンスをプロビジョニングし、プロトタイプの作成を迅速に開始できます。自動スケーリング、自動修復、自動調整などの自律機能により、データベースの管理や管理について心配する必要がなくなります。

    このブログでは、CDPオペレーショナルデータベースがAWSの複数のアベイラビリティーゾーンで実行されている場合に、アプリケーションに高可用性を提供する方法を共有します。

    マルチAZ展開を完全に理解するには つまり、インフラストラクチャにとって、アマゾンウェブサービスが世界中でどのように構成されているか、したがって、場所に関係なく冗長サービスをどのように提供するかを認識することが重要です。 Amazonの公式ドキュメントで説明されているように、AWSクラウドは、世界中の物理的な場所であるいくつかのリージョンで構成されています。 AZの停止は公式には追跡されていませんが、Clouderaのお客様は、年に1〜2回AZの停止を経験したと報告しています。したがって、99.95%以上の可用性を実現するには、マルチAZストレッチ展開が必要です。

    各リージョンは、アベイラビリティーゾーン(AZ)と呼ばれる多数の個別の物理データセンターで構成されています。 。各AZは、独自の電源、接続性、およびネットワーキング機能を備えた自己完結型の施設です。ほとんどのリージョンには、それぞれ2〜3の異なるアベイラビリティーゾーンがあり、特定のリージョン内で適切な冗長性を提供します(AZは、リージョンコードとそれに続く文字識別子で表されます。たとえば、 us-west-1a)> 。

    ただし、この冗長性はストレージレイヤー(S3)にのみ適用され、データベースインスタンスに使用される仮想マシンには存在しません。サーバーインスタンスが存在するアベイラビリティーゾーンが停止した場合、コンピューティングインフラストラクチャ全体がオフラインになるため、データベースは機能しなくなります。

    ここでマルチAZデプロイメントが登場します。マルチAZデプロイメントとは、HBaseのマスターサーバーとリージョンサーバーのコンピューティングインフラストラクチャが複数のアベイラビリティーゾーンに分散され、単一のアベイラビリティーゾーンが停止した場合にリージョンサーバーの一部のみが停止することを意味します。影響を受け、クライアントは利用可能なAZの残りのサーバーに自動的に切り替わります。同様に、バックアップマスター(プライマリマスターが停止しているAZにあったと仮定)は、プライマリマスターサーバーとは別のAZに展開されるため、障害が発生したマスターの役割を自動的に引き継ぎます。これらはすべて自動で行われるため、セットアップ、管理、およびユーザー/管理の観点からのアクションは必要ありません。これは、単一のAZが失われたためにアプリケーションが停止しないようにするために機能するだけです。

    デモ

    新しく作成されたCODデータベースは、環境内に構成されているすべてのアベイラビリティーゾーンを自動的に利用します。したがって、使用するゾーンを使用して環境を設定することが重要です。

    たとえば、次のAZを持つ環境があります:us-west-1a、us-west-1b、us-west-1c。 CODデータベースをデプロイすると、マルチAZ方式で自動的にデプロイされます。何もする必要はありません。舞台裏を確認して、AWSコンソールの内容を確認しましょう。

    CODは、ワーカーノードが構成済みのAZ全体に均等に分散されるようにします。 (ZooKeeperクォーラムに高可用性を提供するために、マスターとリーダーも異なるAZに配置されます。)

    Apache HBaseにはすでにフェイルオーバー機能が組み込まれているため、1つのAZがオフラインになった場合でも、データベースのサービスを即座に自動的に継続するためのシステムがすでに導入されています。

    もう少し楽しくするために、テスト中に簡単なHBase負荷テストを実行してみましょう。 HBaseには、長時間実行される書き込みテストに使用できる負荷テストツールが組み込まれています。

    hbase ltt -write 10:1024:10 -num_keys 10000000

    ここでAZ障害をシミュレートして、何が起こるかを見てみましょう。これを行う最も簡単な方法は、実際のAWSの停止と同様の条件を実行する特定のサブネットの入力トラフィックと出力トラフィックを無効にする新しいネットワークACLを追加することです。

    CODの観点から見ると、データベースはまだ正常であるため、最初の1分間は、ステータスページに特に興味深いものは表示されません。

    しかし、クライアントが進歩を止めていることに気づきました。

    10〜20秒で、マスターは一部のリージョンサーバーが停止していることに気付きます。

    停止がアクティブなマスターに影響を与える場合、HBaseは自動的にバックアップに切り替わり、10〜20秒後にその役割を引き継ぎます。

    障害はそれほど長くはかかりません。2〜3分後、一時的な領域エラーが発生すると、クライアントは再び進行できるようになります。マスターは、デッドリージョンをライブリージョンサーバーに移行する必要がありました。

    停止の終了をシミュレートするために、ネットワークACLの作成を削除して元に戻しましょう。リージョンサーバーがマスターに接続し直しています。

    これで、最初に開始した場所に戻ります。 CODは停止から完全に回復しました。書き込みリクエストでは、2つのドロップが見られます。1つはクライアントが残りのライブリージョンサーバーに移行したとき、もう1つは少し遅れてHBaseのロードバランサーがリージョンを再接続されたサーバーに戻したときです。

    HDFSの代金引換

    クラウドのオブジェクトストレージはCODのデフォルトのストレージレイヤーであり、データを3つのアベイラビリティーゾーンに分散し、舞台裏でバランスを取り直します。 HBaseは、残りのサーバーによってリージョンにサービスを提供するために、いくつかのハウスキーピング(リージョン遷移)を実行するだけで済み、これを比較的高速な操作にします。

    高性能のユースケースの場合、CODは基盤となるストレージとしてHDFSの使用をサポートします。この展開パラダイムでは、1つのブロックレプリカを別のラックに配置し、ラックをアベイラビリティーゾーンにマッピングすることで、フォールトトレランスのためにHDFSラック認識を自動的に構成します。これにより、ネットワークスイッチに障害が発生した場合やクラスター内のパーティションが発生した場合にデータの可用性が提供されます。したがって、上記のデモの動作は、HDFSを使用してCODをデプロイするときに表示される動作と非常によく似ています。

    概要

    マルチAZのデプロイは、高可用性データベースにとって非常に重要であり、現在CODは、追加費用なしで舞台裏のテクニカルプレビューとしてAWSでサポートしています。これにより、追加の構成が不要になり、運用ワークロードがより堅牢で信頼性の高いものになります。両方とも一般提供され、まもなく追加のクラウドプロバイダー(Microsoft、Google)をサポートします。

    HBaseのデプロイからパブリッククラウドのCDPオペレーショナルデータベースに移行する方法や、Cloudera Test Driveを試してみる方法について詳しく知りたい場合は、Clouderaアカウントチームにお問い合わせください。


    1. Redisクラスターフェイルオーバー:スレーブはマスターになりません

    2. 起動時にRスクリプトを実行する

    3. Structuremapを使用してServiceStackWebアプリケーションでキャッシュおよびMQとしてカスタム名前空間にRedisを設定する方法

    4. キーの有効期限が切れたイベント