# 可用性の強化方法

このトピックでは、BDDクラスタ・デプロイメントが問合せ処理において可用性を強化する方法について説明します。

重要: BDDクラスタ・デプロイメントでは可用性が強化されますが、高可用性は実現されません。このトピックでは、強化された可用性を可能にするクラスタ動作について説明し、システム管理者がサービス復元措置を実行する必要があるインスタンスについて言及します。

次の3つの項では、可用性を強化するためのBDDクラスタの動作について説明します。

注意: このトピックでは、複数のDgraphの実行中インスタンスがあるBDDデプロイメントについて説明します。単一ノードにBDDをデプロイできますが、このようなデプロイメントは開発環境でのみ機能します。BDDでの問合せ処理の可用性が保証されないためです。すなわち、1つのノードのみが単一DgraphインスタンスをホストしているBDDデプロイメントでは、Dgraphノードの障害によりDgraphプロセスが停止します。

## StudioをホストしているWebLogic Serverノードの可用性

WebLogic Serverノードが停止すると、Studioも停止します。BDDクラスタが、外部ロード・バランサを利用し、Studioを起動する複数のWebLogic Serverノードで構成されているかぎり、これによりBig Data Discoveryの操作は中断されません。

StudioをホストしているWebLogic Studioノードが失敗した場合、(外部ロード・バランサを使用する) BDDクラスタはこれの使用を停止し、再起動するまで他のStudioノードに依存します。

## Dgraphノードの可用性

CDHノードのサブセットでZooKeeper Ensembleを実行すると、Dgraphクラスタのノードとサービスにおいて可用性が強化されます。

- リーダーDgraphノードの障害。リーダーDgraphノードがオフラインになると、BDDクラスタは新規リーダー・ノードを選出し、更新の送信を開始します。このステージの間、フォロワ・ノードでは引き続きデータの一貫したビューを維持し、問合せに応答します。`bdd-admin`スクリプトを使用して、このノードを手動で再起動します。リーダー・ノードであったノードが再起動してクラスタに参加すると、フォロワ・ノードの1つになります。また、クラスタが新規リーダー・ノードを指名する必要がある前に、リーダー・ノードが再起動してクラスタに参加することもあります。この場合、ノードは引き続きリーダー・ノードの役割を果たします。

  リーダー・ノードが変更されると、BDDクラスタは、新しく選出されたリーダーDgraphノードへの更新リクエストのルーティングを開始します。

- フォロワDgraphノードの障害。フォロワ・ノードの1つがオフラインになると、BDDクラスタは、使用可能な他のノードへのリクエストのルーティングを開始します。`bdd-admin`スクリプトを使用して、このノードを手動で再起動します。または、Big Data Discovery用のEnterprise Managerプラグイン(使用している場合)を介して、Dgraphを起動できます。ノードが再起動されると、ノードはクラスタに再び参加し、クラスタはそのルーティング情報をそれに応じて調整します。

## ZooKeeperインスタンスの可用性

ZooKeeperインスタンス自体を高可用性にする必要があります。次の文では、要件について詳細に説明します。

- ZooKeeperインスタンスをホストするように、BDDクラスタ・デプロイメントにおける各CDH (Cloudera Distribution for Hadoop)ノードをデプロイメントの際にオプションで構成できます。ZooKeeperインスタンスで可用性を確保するには、独自のクラスタ(Ensembleと呼ばれる)でインスタンスをデプロイすることをお薦めします。デプロイメントの際、ZooKeeperインスタンスをホストするようにCDHノードのサブセットを構成することをお薦めします。大部分のEnsembleが実行中であるかぎり、ZooKeeperサービスはBDDクラスタで使用されます。ZooKeeperでは過半数が必要であるため、奇数個のインスタンスを起動することが最適です。これは、BDDクラスタにおいて、3個以上のCDHノード上でZooKeeperを起動する必要があることを意味します。ZooKeeperインスタンスをホストしているCDHノードは、ZooKeeperプロセスの稼働時間を確保する責任を負うことが前提となっています。BDDがデプロイされるとCDHノードはZooKeeperを起動し、実行が停止すると再起動します。

  要約すると、ZooKeeperは1つのCDHノードのみで実行できますが、ZooKeeperインスタンスで高可用性を確保するには、ZooKeeperはBDDクラスタにおいて3個以上のCDHノード(または3個を超える奇数個のノード)で実行する必要があります。これにより、ZooKeeper自体のシングル・ポイント障害が防止されます。

- ZooKeeperを実行するために3個以上のCDHノードを構成していない場合、ZooKeeperはシングル・ポイント障害となります。ZooKeeperが失敗すると、BDDが提供するデータ・セットへのアクセスは読取り専用になります。BDDクラスタにおいてZooKeeperが停止している間は、いずれの種類の更新、書込み、変更もできません。この状況からリカバリするには、障害ZooKeeperを実行していたCDHノードを再起動または再配置する必要があります(必要な措置は障害の特性によって異なります)。