可用性の強化方法

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

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

このトピックでは、複数のEndeca Server実行インスタンスがあるEndeca Serverノードのクラスタについて説明します。単一Endeca Serverインスタンスでホストされる単一ノード型データ・ドメインを構成できますが、単一Endeca Serverインスタンスは開発環境でのみ使用できます。データ・ドメインに対する問合せ処理の可用性が保証されないからです。すなわち、単一Endeca Serverインスタンスでホストされる単一ノード型データ・ドメインでは、Endeca Serverノードの障害によりDgraphプロセスが停止します。

Endeca Serverノードの可用性

複数のEndeca ServerインスタンスがあるEndeca Serverクラスタにおいて、Endeca Serverクラスタにあるノードのサブセットでクラスタ・コーディネータのサービスのEnsembleを実行すると、Endeca ServerクラスタにあるEndeca Serverノードの可用性が強化されます。

Endeca ServerクラスタのEndeca Serverノードがダウンすると、ホストされているすべてのDgraphノードとクラスタ・コーディネータのサービス(このノードでも実行している場合があります)もダウンします。Endeca Serverクラスタが複数のノードで構成されているかぎり、データ・ドメインの非更新ユーザー・リクエストの処理は中断されません。(クラスタ・コーディネータのサービスに悪影響が及ぶ場合があります。詳細は、「クラスタ・コーディネータのサービスの可用性」を参照してください。)

Endeca Serverノードで障害が発生すると、Endeca Serverクラスタに通知され、Endeca Serverノードが再起動するまで、そのEndeca Serverノードでホストされているデータ・ドメイン・ノードへのリクエストのルーティングがすべて停止されます。

この場合を示すのに役立つ例を考えてみます。3つのノードのある単一データ・ドメイン・クラスタが、3つのノードで構成されるEndeca Serverクラスタ上でホストされる場合を考えてみます。ここではEndeca Serverノードごとに1つのDgraphノードをデータ・ドメインでホストします。この場合、次のようになります。
  • 1つのEndeca Serverノードに障害が発生すると、受信リクエストは残りのノードにルーティングされます。
  • 障害が発生したEndeca Serverノードが、データ・ドメイン・クラスタのリーダー・ノードをホストするノードの場合、Endeca Serverクラスタがそのデータ・ドメインの新規リーダー・ノードを残りのEndeca Serverノードから選出し、選出に応じて後続リクエストをルーティングします。これによって、データ・ドメインのリーダー・ノードの可用性が確保されます。
  • Endeca Serverノードがダウンしても、ホストしているデータ・ドメイン・ノード(Dgraph)は別のEndeca Serverノードに移動しません。データ・ドメインに問合せ処理専用ノードが3つ以上あると、データ・ドメインは引き続き機能します。それ以外は、Endeca Serverノードが再起動するまで、このデータ・ドメインの問合せ処理が停止する場合があります。

障害が発生したEndeca Serverノードを再起動すると、そのプロセスがEndeca Serverクラスタによって再起動されます。ノードがクラスタに再び参加すると、ホストするデータ・ドメインのデータ・ドメイン・クラスタに再び参加します。さらに、ノードがクラスタ・コーディネータをホストしている場合、クラスタ・コーディネータのEnsembleにも再び参加します。

データ・ドメイン・ノードの可用性

クラスタにあるEndeca Serverノードのサブセットでクラスタ・コーディネータのサービスのEnsembleを実行すると、データ・ドメイン・クラスタのノードとサービスにおいて可用性が強化されます。
  • リーダー・ノードの障害。リーダー・ノードがオフラインになると、Endeca Serverクラスタは新規リーダー・ノードを選出し、更新の送信を開始します。このステージの間、フォロワ・ノードでは引き続きデータの一貫したビューを維持し、問合せに応答します。リーダー・ノードであったノードが再起動してクラスタに参加すると、フォロワ・ノードの1つになります。また、Endeca Serverクラスタが新規リーダー・ノードを指名する必要がある前に、リーダー・ノードが再起動してクラスタに参加することもあります。この場合、ノードは引き続きリーダー・ノードの役割を果たします。

    データ・ドメインのリーダー・ノードが変更されると、Endeca Serverは処理を継続し、リーダー・ノードを必要とするリクエストを、新規に指名されたリーダー・ノードをホストするEndeca Serverクラスタ・ノードにルーティングします。

    注意: 外部トランザクションの処理中にデータ・ドメイン・クラスタのリーダー・ノードに障害が発生すると、外部トランザクションは適用されずに自動的にロールバックされます。この場合、新規外部トランザクションを起動する必要があります。外部トランザクションの詳細は、『Oracle Endeca Server開発者ガイド』のトランザクションWebサービスに関する項を参照してください。
  • フォロワ・ノードの障害。いずれかのフォロワ・ノードがオフラインになると、Endeca Serverクラスタはリクエストを他の利用可能なノードにルーティングすることを開始し、このフォロワ・ノードのDgraphプロセスの再起動を試みます。フォロワ・ノードがクラスタに再び参加すると、Endeca Serverはそのルーティング情報をそれに応じて調整します。

クラスタ・コーディネータのサービスの可用性

クラスタ・コーディネータのサービス自体を高可用性にする必要があります。次の文では、要件について詳細に説明します。
  • クラスタ・コーディネータのインスタンスをホストするように、Endeca Serverクラスタにある各Endeca Serverノードをデプロイの際にオプションで構成できます。クラスタ・コーディネータのサービスで可用性を確保するには、独自のクラスタ(Ensembleとしても知られている)でクラスタ・コーディネータのインスタンスをデプロイすることをお薦めします。デプロイの際、クラスタ・コーディネータのサービスをホストするようにEndeca Serverノードのサブセットを構成することをお薦めします。過半数のEnsembleが実行しているかぎり、クラスタ・コーディネータのサービスの可用性は高く、ホストされるドメイン・クラスタとEndeca Serverクラスタでそのサービスが使用されます。クラスタ・コーディネータでは過半数が必要なので、奇数個のインスタンスを起動することが最適です。これは、Endeca Serverクラスタにおいて、3個以上のEndeca Serverノード上でクラスタ・コーディネータのサービスを起動する必要があることを意味します。クラスタ・コーディネータをホストするように構成されたEndeca Serverノードは、ホストされるクラスタ・コーディネータ用プロセスの起動時間を確保する役割を持っています。つまり、Endeca Serverの起動時にクラスタ・コーディネータのサービスを起動し、このサービスが停止した場合には再起動します。

    要約すると、クラスタ・コーディネータは1つのノードのみで実行できますが、クラスタ・コーディネータのサービスで高可用性を確保するには、クラスタ・コーディネータのサービスはEndeca Serverクラスタにおいて3個以上のノード(または3個を超える奇数個のノード)で実行する必要があります。これによって、クラスタ・コーディネータのサービス自体のシングル・ポイント障害が防止されます。クラスタ・コーディネータをクラスタにデプロイする方法の詳細は、『Oracle Endeca Serverインストレーション・ガイド』を参照してください。

  • 3つ以上のEndeca Serverノードでクラスタ・コーディネータのサービスを実行するように構成していないと、クラスタ・コーディネータのサービスでシングル・ポイント障害が発生します。クラスタ・コーディネータのサービスで障害が発生すると、Endeca Serverクラスタがホストするデータ・ドメイン・クラスタへのアクセスは読取り専用になります。これは、データ・ドメインはいかなる方法でも変更できないことを意味します。データ・ドメインの作成、サイズ変更、起動、停止または変更はできません。また、データ・ドメイン・プロファイルの定義もできません。読取り問合せをデータ・ドメインに送信して、読取り操作(データ・ドメインやノードの一覧表示など)をクラスタWebサービスや管理Webサービスで実行できます。Endeca Serverクラスタでクラスタ・コーディネータのサービスがダウンすると、更新、書込みまたは変更を行えません。これは、Endeca Serverクラスタとデータ・ドメイン・クラスタの両方に適用されます。この状況からリカバリするには、障害クラスタ・コーディネータを実行していたEndeca Serverインスタンスを再起動するか再配置する必要があります(必要な措置は障害の特性によって異なります)。