HAProxyを使用したプロキシサーバを構築してみた

Pocket

概要

オープンソースソフトウェアのHAProxyを利用したプロキシサーバを構築したので備忘録として作業内容を残してみました。本構成は、クラスタソフトを使用せずにプロキシサーバを2重化し、後続のWebサーバへの負荷分散を実現しています。

 ※HAProxyとは:オープンソースソフトウェアの高可用性、負荷分散を実現するためのソフトウェアです。 高パフォーマンスと安定性のあるTCP通信やHTTP通信の負荷分散や、Proxyサーバ機能を提供しています。

構成

以下の環境で構成します。

環境
・Client:Windows
・ブラウザ:InternetExplorer(以下IEとします)
・Proxy:【OS】Linux、【Software】HAProxy、Squid
・WebServer:【OS】Linux、【Software】Apache

要件
・WebServerへのアクセスはプロキシサーバ経由とします
・通常はWebServer01のWebWerviceへアクセスし、WebServer01の障害時にWebServer02のWebService接続を切り替えます

アクセスフロー

以下に今回の構成を示します。

※OSやSoftwareのインストール手順等は省力します。

1、ClientからProxyへのアクセス

 ClientにはWindows系OS、ブラウザはIEを使用し、ブラウザで指定するプロキシ設定を端末によって変更することでClientからアクセスするプロキシサーバを分散させています。分散については、IEのPACファイルを指定してランダムにプロキシ設定をさせます。これによりClientから見たプロキシサーバは2重化されています。

 以下にPACファイルのサンプルを記載します。

※プロキシ設定を2台のどちらかをランダムに設定

2、ProxyからWebServerへのアクセス

 プロキシサーバでは、Squidをフォワードプロキシとして導入し、そこからリバースプロキシとしてのHAProxyに連携し、WebServerへとリダイレクトさせています。

※Squid:クライアントとサーバの通信を中継するプロキシサーバソフト。リバースプロキシやキャッシュサーバとしても利用されています。本構成ではデフォルトの設定で稼動させます。

 以下に/etc/haproxy/haproxy.confファイルのサンプルを記載します。

※ヘルスチェックへのアクセス結果がOKと返ってくればWebServer01 へ転送します。また、OK以外結果になればWebServer02へ転送させます。

課題

本構成としては、ProxyサーバにHAProxyとSquidの構成で実現させているが、HAProxy単体でもフォワードプロキシとしての機能も備えています。今回は検証する時間がなくこの構成をとりましたが、よりシンプルな構成として、以下のようにHAProxyだけの構成で構築できればと考えています。

最後に

クラウド環境が普及していく中で、アプリケーションサーバを設置する前段として、リバースプロキシやロードバランサーを設置する構成はよく見られるため、こういったプロキシサーバの構築のニーズは少なくないと考えています。その中でHAProxyは高パフォーマンスで機能も豊富なため選択肢としては良いのではないでしょうか。まだまだ豊富な機能を使いこなせていません。もっといろいろなことを試していきたいと思います。

お問い合わせ先

執筆者プロフィール

Fujimura Naoki
Fujimura Naokitdi iDC&セキュリティ推進部
入社以来、インフラの技術支援などを担当。その後、客先常駐業務がほとんどでようやく社内での業務に復帰。
新しい業務の担当にもなり、いろいろなことにチャレンジしたいと考えています。
Pocket

関連記事