このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

17.3 HAProxyを使用した単純なロード・バランシングの構成

次の例では、HAProxyを使用して、受信リクエストを2つのバックエンドWebサーバー間で分散し、さらにバックエンド・サーバーでサービス停止を処理する機能も持つフロントエンド・サーバーを実装します。

「図17.1」には、外部向けネットワーク(10.0.0.0/24)および内部ネットワーク(192.168.1.0/24)に接続されたHAProxyサーバー(10.0.0.10)が表示されます。 websvr1 (192.168.1.71)およびwebsvr2 (192.168.1.72)という2つのwebサーバーに内部ネットワークでアクセスできます。 IPアドレス10.0.0.10は、インターネットでルーティングできないプライベート・アドレス範囲の10.0.0.0/24にあります。 アップストリーム・ネットワーク・アドレス変換(NAT)ゲートウェイまたはプロキシ・サーバーが、インターネットとの間のアクセスを提供します。

図17.1 ロード・バランシングのためのHAProxy構成の例

この図は、外部公開ネットワーク(10.0.0.0/24)および内部ネットワーク(192.168.1.0/24)に接続されたHAProxyサーバー(10.0.0.10)を示しています。 内部ネットワークでは、2つのWebサーバーwebsvr1 (192.168.1.71)およびwebsvr2 (192.168.1.72)にアクセス可能です。 IPアドレス10.0.0.10は、インターネットでルーティングできないプライベート・アドレス範囲の10.0.0.0/24,にあります。 アップストリーム・ネットワーク・アドレス変換(NAT)ゲートウェイまたはプロキシ・サーバーが、インターネットとの間のアクセスを提供します。


サーバーの/etc/haproxy/haproxy.cfgで次の構成を使用できます。

global
    daemon
    log 127.0.0.1 local0 debug
    maxconn 50000
    nbproc 1

defaults
    mode http
    timeout connect 5s
    timeout client 25s
    timeout server 25s
    timeout queue 10s

# Handle Incoming HTTP Connection Requests
listen  http-incoming
    mode http
    bind 10.0.0.10:80
# Use each server in turn, according to its weight value
    balance roundrobin
# Verify that service is available
    option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
# Insert X-Forwarded-For header
    option forwardfor
# Define the back-end servers, which can handle up to 512 concurrent connections each
    server websvr1 192.168.1.71:80 weight 1 maxconn 512 check
    server websvr2 192.168.1.72:80 weight 1 maxconn 512 check

この構成では、HTTPトラフィックが2つのバックエンドWebサーバーwebsvr1およびwebsvr2の間で分散され、これらのサーバーのファイアウォールは、ポート80で受信TCPリクエストを受け入れるように構成されています。

Webサーバーに単純な/var/www/html/index.htmlファイルを実装し、curlを使用して接続をテストした後は、次の出力に、HAProxyがどのようにトラフィックをこれらのサーバー間で分散し、どのようにwebsvr1でのhttpdサービス停止を処理するかが示されます。

$ while true; do curl http://10.0.0.10; sleep 1; done
This is HTTP server websvr1 (192.168.1.71).
This is HTTP server websvr2 (192.168.1.72).
This is HTTP server websvr1 (192.168.1.71).
This is HTTP server websvr2 (192.168.1.72).
...
This is HTTP server websvr2 (192.168.1.72).
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>
This is HTTP server websvr2 (192.168.1.72).
This is HTTP server websvr2 (192.168.1.72).
This is HTTP server websvr2 (192.168.1.72).
...
This is HTTP server websvr2 (192.168.1.72).
This is HTTP server websvr2 (192.168.1.72).
This is HTTP server websvr2 (192.168.1.72).
This is HTTP server websvr1 (192.168.1.71).
This is HTTP server websvr2 (192.168.1.72).
This is HTTP server websvr1 (192.168.1.71).
...
^C
$

この例では、websvr1httpdサービスが再起動され、websvr2に加えてこのサーバーも再び使用し始めたことが、HAProxyによって検出されました。

HAProxyのロード・バランシング機能とKeepalivedまたはOracle Clusterwareの高可用性機能を組み合せることで、プライマリ・ロード・バランサに障害が発生した場合にサービスの継続性を保証するバックアップ・ロード・バランサを構成できます。 17.10項「Keepalivedを使用したHAProxyの高可用性の実現」および17.12項「Oracle Clusterwareを使用したHAProxyの高可用性の実現」を参照してください。

HAProxyをインストールおよび構成する方法の詳細は、17.2項「HAProxyのインストールと構成」を参照してください。