25.1 HAProxyを使用したPGXのロード・バランシングおよび高可用性の実現

HAProxyは、複数のWebサーバーで着信リクエストを多重化できる、高パフォーマンスのTCP/HTTPロード・バランサおよびプロキシ・サーバーです。

HAProxyをグラフ・サーバー(PGX)の複数のインスタンスとともに使用して、高可用性を実現できます。次の例では、OPG4Jシェルを使用してPGXに接続します。

次の手順では、グラフ・サーバー(PGX)の起動の説明に従って、グラフ・サーバー(PGX)がすでにインストールおよび構成されていることを前提としています。

  1. HAProxyがBig Data ApplianceまたはOracle Linuxディストリビューションにまだインストールされていない場合は、次のコマンドを実行します。
    yum install haproxy
  2. グラフ・サーバー・インスタンスを起動します。

    たとえば、Big Data Applianceの4つのノード(bda02、bda03、bda04、bda05など)の間でPGXをロード・バランシングする場合は、これらの各ノードでPGXを起動します。ポート7007で接続をリスニングするようにPGXを構成します。

  3. HAProxyを構成します。
    1. HAProxyをインストールしたホストの/etc/haproxyディレクトリでhaproxy.cfgファイルを見つけます。
    2. 次のパラメータを使用してフロントエンド・セクションを追加します。
      • bind: リスニングIPアドレスおよびポートを設定します
      • mode: httpまたはhttps
      • default_backend: 使用するバックエンドの名前を設定します

      たとえば、次のフロントエンド構成は、ポート7008でサーバーに割り当てられているすべてのIPアドレスでHTTPトラフィックを受け取ります。

      frontend graph_server_front
        bind *:7008
        mode http
        default_backend graph_server
    3. 次のパラメータを使用してバックエンド・セクションを追加します。
      • mode: httpまたはhttps
      • cookie: セッション永続性に使用するCookieの名前
      • server: ロード・バランサの背後で実行されているサーバーのリスト

      たとえば、次のバックエンド構成はPGX_INSTANCE_STICKY_COOKIEを使用します。

      backend graph_server
        mode http
        cookie PGX_INSTANCE_STICKY_COOKIE insert indirect nocache
        server graph_server_1 host_name_graph_server_1:port check cookie graph_server_1 # Notice that the name at the end must be the same as the server name
        server graph_server_2 host_name_graph_server_2:port check cookie graph_server_2
        option httpchk GET /isReady
        http-check expect string true

      前述の構成ファイルで、option httpchk句は、サーバーの準備状況を確認するようにロード・バランサに指示します。http-check句は、サーバーが正常であり、追加のリクエストを処理できると判断するために、ロード・バランサにtrueレスポンスが必要であることを指定します。サポートされているヘルス・チェック・エンドポイントは、ロード・バランサのヘルス・チェックを参照してください。

  4. ロード・バランサを起動します。

    systemctlを使用してHAProxyを起動します。

    sudo systemctl start haproxy
  5. ロード・バランサをテストします。

    任意のホストから、HAProxyを実行しているサーバーのホストとポートをクライアント・シェルのCLIにbase_urlパラメータとして渡すことにより、HAProxyサーバーへの接続をテストできます。たとえば:

    cd /opt/oracle/graph
    ./bin/opg4j --base_url http://localhost:7008 -u <username>
    

    ノート:

    サーバーが停止すると、PGXインメモリー状態は失われます。HAProxyはコマンドを別のサーバーにルーティングしますが、クライアントはすべてのグラフ・データをリロードする必要があります。

    一連のPGXコマンドを実行してルーティングをテストすることをお薦めします。サーバーを停止し、グラフ・シェルのCLIを再起動して、HAProxyがリクエストを新しいサーバーにリダイレクトすることを確認します。