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

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

HAProxyをインメモリー分析サーバー(PGX)の複数のインスタンスとともに使用して、高可用性を実現できます。次の例では、opgシェルを使用してPGXに接続します。

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

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

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

  3. HAProxyを構成します。

    この例では、ホストbda01で実行し、ポート8888で着信接続をリスニングするようにHAProxyを構成します。ホストbda01に、次の内容を含む新しいファイルhaproxy.cfgを作成します。

    global
        maxconn 50000
        log /dev/log local0
     
    defaults
        mode http
        option httplog
        log global
        option forwardfor
        timeout connect 5s
        timeout client 5s
        timeout server 5s
        balance source
        hash-type consistent
     
    listen www
        bind :8888
        server web1 bda02:7007 check
        server web2 bda03:7007 check
        server web3 bda04:7007 check
        server web4 bda05:7007 check
    

    balance sourceを指定すると、クライアントのIPアドレスが対応するサーバーのIPアドレスにマップされます。PGXサーバーは分析セッション中にセッションの固定性に依存するため、これは重要です。(HAProxyの構成の詳細は、HAProxy公式ドキュメントを参照してください。)

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

    前のステップで作成した構成ファイルを渡すことによって、bda01でHAProxyを起動します。

    haproxy -f haproxy.cfg
  5. ロード・バランサをテストします。

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

    cd /opt/oracle/oracle-spatial-graph/property_graph
    ./bin/opg --base_url http://bda01:8888
    

    ノート:

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

    一連のPGXコマンドを実行してセッション・アフィニティをテストすることをお薦めします。サーバーを強制終了し、opgシェルを再起動して、HAProxyがリクエストを新しいサーバーにリダイレクトすることを確認します。