このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。
次の例では、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)ゲートウェイまたはプロキシ・サーバーが、インターネットとの間のアクセスを提供します。
サーバーの/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
$
この例では、websvr1
でhttpd
サービスが再起動され、websvr2
に加えてこのサーバーも再び使用し始めたことが、HAProxyによって検出されました。
HAProxyのロード・バランシング機能とKeepalivedまたはOracle Clusterwareの高可用性機能を組み合せることで、プライマリ・ロード・バランサに障害が発生した場合にサービスの継続性を保証するバックアップ・ロード・バランサを構成できます。 17.10項「Keepalivedを使用したHAProxyの高可用性の実現」および17.12項「Oracle Clusterwareを使用したHAProxyの高可用性の実現」を参照してください。
HAProxyをインストールおよび構成する方法の詳細は、17.2項「HAProxyのインストールと構成」を参照してください。