Apache のロードバランサーモジュールを使って、 Apache を proxy を go-lang で作った独自アプリケーションサーバと接続させる設定をした時のメモ。
基本的には RoR アプリを作成した時に Apache のバックに Mongrel を何台が走らせたりする時に使う方法と一緒。
忘れないようにメモ。
もし mod_proxy がインストールされていない場合はインストールする。
基本的にはapache2 にモジュールを追加するを参考。
まず apache の proxy モジュールディレクトリへ行くと分かる通り、ソースファイルはいくつもあり、単体でコンパイルしてインストールしても、 apache 起動時にリンカーエラーが出る。なのでまずまとめてコンパイルする。
$ cd ~/Documents/Build/httpd-2.2.11/modules/proxy $ /usr/local/bin/apxs -c *.c
そして次に、個別にインストールしたいモジュールをインストール。
# /usr/local/bin/apxs -ian proxy mod_proxy.la # /usr/local/bin/apxs -ian proxy_http mod_proxy_http.la # /usr/local/bin/apxs -ian proxy_balancer mod_proxy_balancer.la
これでモジュールが modules ディレクトリにコピーされると同時に、モジュールをロードするための適当なコメントが httpd.conf かもしくはそれ同等のファイルに書き込まれるはず。
こんな感じです。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
あくまでとりあえず暫定の設定方法ですが、ロードバランサーとは言ってるものの、特定のバーチャルドメインに接続した際にそれをアプリケーションサーバの方に飛ばす設定のみをここでは行う。
<VirtualHost *:80>
    ServerName go.localdomain
    <Proxy balancer://mycluster>
        BalancerMember http://127.0.0.1:5080
    </Proxy>
    ProxyPass / balancer://mycluster/
    ErrorLog "/usr/local/logs/go.localdomain-error_log"
    CustomLog "/usr/local/logs/go.localdomain-access_log" common
</VirtualHost>
これでブラウザで http://go.localdomain にアクセスした際にアプリケーションサーバのレスポンスが得られれば成功。
