例: 冗長性のための複数のOracle NoSQL Databaseプロキシの構成

ロード・バランサと連携するように複数のOracle NoSQL Databaseプロキシを構成する方法について説明します。

複数のOracle NoSQL Databaseプロキシを使用して構成を設定し、冗長性を実現できます。冗長性により、少なくとも1つのプロキシが、様々な需要負荷と障害タイプが発生しても機能し続けるようになります。

Oracle NoSQL Databaseプロキシは、1つ以上の専用ホストで実行できます。それをデータ・ストアのノード内でホストすることもできます。ロード・バランサをフロント・エンドとして使用し、様々なホストでの冗長性のために複数のOracle NoSQL Databaseプロキシのバック・エンド・セットを持つことができます。

HAProxyは、HTTPおよびTCPアプリケーション用のロード・バランサを提供するオープンソース・ソフトウェアです。HAProxyソフトウェアは、複数のOracle NoSQL Databaseプロキシの前にあるロード・バランサとして使用できます。

ノート:

使用可能なロード・バランサは他にもあります。このトピックでは、ロード・バランサとしてHAProxyを使用して概念を示します。

たとえば、3つの専用プロキシ・ホストproxy1-nosql、proxy2-nosql、proxy3-nosqlがあるデータ・ストアを考えてみます。冗長性を持つ複数のプロキシを設定するには、バック・エンドでホストproxy1-nosql、proxy2-nosql、proxy3-nosqlOracle NoSQL Databaseプロキシとして構成します。HAProxyソフトウェアをロード・バランサとしてインストールおよび構成します。ロード・バランサによってリクエストがそれらのプロキシにルーティングされます。

ホストでのOracle NoSQL Databaseプロキシの構成

データ・ストアをデプロイしてあることを確認します。

  • 次のように、各ホスト(proxy1-nosql、proxy2-nosql、proxy3-nosql)でHTTPプロキシを起動します:

    非セキュア・データ・ストア:
    java -jar $KVHOME/lib/httpproxy.jar -helperHosts <kvstore_helper_host:5000> -storeName <kvstore_name> -httpPort 8080 -verbose true

    詳細は、「非セキュア・データ・ストアでのプロキシの使用」を参照してください。

    セキュア・データ・ストア:
    java -jar $KVHOME/lib/httpproxy.jar -helperHosts <kvstore_helper_host:5000> -storeName <kvstore_name> -httpsPort 8443 -storeSecurityFile $KVROOT/security/proxy.login -sslCertificate certificate.pem -sslPrivateKey key-pkcs8.pem -sslPrivateKeyPass <privatekey_password> -verbose true

    詳細は、「セキュアなデータ・ストアでのプロキシの使用」を参照してください。

    ノート:

    Oracle NoSQL Databaseプロキシごとに証明書を作成するかわりに、サブジェクト代替名(SAN)を持つ証明書を1つのみ作成できます。これにより、次のシナリオでの構成が簡略化されます:
    • 証明書をローテーションする必要がある場合。管理および共有する証明書は1つのみです。
    • サーバーに複数の名前がある場合。
    • IPを使用する場合。

    SANの使用の詳細は、プロキシ用の証明書と秘密キーの生成を参照してください。

  • プロキシが機能しているかどうかを確認します。

    非セキュア・データ・ストア:
    http://<proxy1-nosql>:8080/V2/health
    セキュア・データ・ストア:
    https://<proxy1-nosql>:8443/V2/health

ロード・バランサの構成

  • HAProxyソフトウェアをロード・バランサとしてインストールおよび構成します。

    ノート:

    Oracle NoSQL Databaseドキュメントには、HAProxyをロード・バランサとして設定する手順は記載されていません。Oracle NoSQL Databaseプロキシを冗長性を持たせて設定する前に、前提条件として実装する必要があります。
  • HAProxyソフトウェアを構成します:

    この例は、Oracle NoSQL Database HTTPプロキシのコンテキストでオープンソース・ロード・バランサを構成するためのガイドラインとして機能します。

    /etc/haproxy/haproxy.cfgファイルの末尾に次の行を追加します。

    これにより、リクエストをプロキシ(proxy1-nosql、proxy2-nosql、proxy3-nosql)にルーティングするようにHAProxyが構成されます。

    例: 非セキュア・データ・ストア:
    # Configure HAProxy to listen on port 8080
    frontend http_front
       bind *:8080
       stats uri /haproxy?stats
       default_backend http_back
    
    # Configure HAProxy to route requests to Oracle NoSQL Database Proxy hosts on port 8080
    backend http_back
       balance roundrobin
       server proxy1-nosql <IP_node1>:8080 check
       server proxy2-nosql <IP_node2>:8080 check
       server proxy3-nosql <IP_node3>:8080 check

    例: セキュア・データ・ストア:

    ロード・バランサに応じて、次のいずれかの構成例を使用できます:
    • SSLパススルー構成:

      ロード・バランサによって、ロード・バランサのトラフィックを復号化せずに、暗号化されたHTTPSトラフィックがバック・エンド・サーバーに直接渡されます。ここでは、ロード・バランサとプロキシで同じSSL証明書が使用されます。
      # Configure HAProxy to listen on port 8443
      frontend http_front
         bind *:8443 ssl crt /etc/haproxy/certs/full.pem
         timeout http-keep-alive 20s
         stats uri /haproxy?stats
         default_backend http_back
      
      # Configure HAProxy to route requests to Oracle NoSQL Database Proxy hosts on port 8443
      backend http_back
         balance roundrobin
         timeout http-keep-alive 20s
         server proxy1-nosql <IP_node1>:8443 check maxconn 20 ssl verify none
         server proxy2-nosql <IP_node2>:8443 check maxconn 20 ssl verify none
         server proxy3-nosql <IP_node3>:8443 check maxconn 20 ssl verify none
    • SSLブリッジング構成:

      ロード・バランサでは、受信時にすべてのHTTPSトラフィックが復号化され、宛先サーバーへのトラフィックが暗号化されます。この構成では、ロード・バランサとプロキシで別々のSSL証明書を使用できます。
      # Configure HAProxy to listen on port 8443
      frontend http_front
        bind *:8443 ssl crt /etc/haproxy/certs/full.pem
        timeout http-keep-alive 20s
        stats uri /haproxy?stats
        default_backend http_back
      
      
      # Configure HAProxy to route requests to Oracle NoSQL Database Proxy hosts on port 8443
      backend http_back
        balance roundrobin
        timeout http-keep-alive 20s
        server proxy1-nosql <IP_node1>:8443 check maxconn 20 ssl ca-file /root/proxy1-nosql.pem
        server proxy2-nosql <IP_node2>:8443 check maxconn 20 ssl ca-file /root/proxy2-nosql.pem
        server proxy3-nosql <IP_node3>:8443 check maxconn 20 ssl ca-file /root/proxy3-nosql.pem
  • HAProxyを再起動し、ステータスを確認します:
    sudo systemctl stop haproxy.service
    sudo systemctl start haproxy.service
    sudo systemctl status haproxy.service
  • ロード・バランサが機能しているかどうかを確認します。

    ここで、<LB-hostname>は、HAProxyソフトウェアがインストールされているホストです。

    非セキュア・データ・ストア:
    http://<LB-hostname>:8080/V2/health

    セキュア・データ・ストア:

    https://<LB-hostname>:8443/V2/health