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 にアクセスした際にアプリケーションサーバのレスポンスが得られれば成功。