プロキシの高可用性構成の設定

プロキシの高可用性構成の構成方法について学習します。

プロキシの高可用性構成を設定できます。高可用性アーキテクチャにより、少なくとも1つのプロキシが、様々な需要負荷と障害タイプが発生しても機能し続けるようになります。

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

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

ノート:

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

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

ホストでの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

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

    ノート:

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

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

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

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

ロード・バランサの構成

  • HAProxyソフトウェアを、ロード・バランサを実行する外部ノード(<LB-hostname>など)にインストールします。

    ノート:

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

    この例は、Oracle NoSQL 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
  • ロード・バランサが機能しているかどうかを確認します。

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

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

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