SinatraアプリをApache2のmod_proxy_balancerを通してThinで動かす(2) -mod_proxy_balancerの設定

  • このエントリーをはてなブックマークに追加

続けて、Apache2の設定。ここでは、既にmod_proxyが入っているものとします。
フロントのApache2から複数起動しているThinのサーバに振るためにmod_proxy_balancerを入れます。
Ubuntuであれば、

$ sudo a2enmod proxy_balancer

で、mod_proxy_balancerが有効になるので、続けてconfファイルを編集。

$ sudo vi /etc/apache2/mods-available/proxy.conf

中身は以下の様な形。


ProxyRequests Off

ProxyPass /foo balancer://foo
ProxyPassReverse /api balancer://foo


BalancerMember http://127.0.0.1:4040 loadfactor=10
BalancerMember http://127.0.0.1:4041 loadfactor=10
BalancerMember http://127.0.0.1:4042 loadfactor=10
BalancerMember http://127.0.0.1:4043 loadfactor=10
BalancerMember http://127.0.0.1:4044 loadfactor=10

これで、自身のホスト内の4040番〜4044番ポートで動いているThinサーバにフォワードされる様になります。
設定を有効にするためにApacheを再起動します。

$ sudo /etc/init.d/apache2 restart

これで、apacheサーバの ~/foo にアクセスされたものがThinサーバにフォワードされます。
開発用にwebrickで動かしていたものと比べて体感的にも大分変わりました。

(Visited 1 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*

SinatraアプリをApache2のmod_proxy_balancerを通してThinで動かす(1) – Thinの設定

  • このエントリーをはてなブックマークに追加

今、WebアプリケーションのAPIサーバをRubyフレームワークSinatraでつくっていて、これを本格的に動かすときにWebサーバをどうしよう。ということになって、Thinが良いらしいという情報を得たので導入してみた。
現状、動いているApacheサーバがあるので、reverse proxyを通して特定のエントリポイントに対してアクセスがあったもののみをフォワードし、Thinを通してSinatraアプリにつなぐことを目標にします。

f:id:hideack:20111103165746p:image

インストールは非常に簡単。

% gem install thin

これで準備OK。簡単ですね。
次にアプリケーションを呼び出すためのファイルを作ります。
ここでは、ファイル名をconfig.ruとします。内容的には以下の様な形。
ここでrequireされているapp.rbはSinatraアプリ本体です。

# config.ru
require 'rubygems'
require 'sinatra'
require './app.rb'
run Sinatra::Application

単純に呼び出してるだけですね。
続けて、Thin本体の設定ファイルを作ります。
まずは中身。

# thin.yaml
timeout: 30
log: log/thin.log
environment: production
servers: 5
daemonize: true
rackup: config.ru
port: 4040

おおよそ設定見てもらったままなのですが、上記の設定でThinサーバのデーモンプロセスが5本起動されます。
利用されるポート番号は4040〜4044までとなります。
続けて、ログファイルの保管先とプロセス管理用のファイル保管されるディレクトリを予め作っておきます。

$ mkdir log
$ mkdir tmp

これでThin本体の準備完了。実際に動かしてみます。

$ thin start -C thin.yaml
Starting server on 0.0.0.0:4040 ...
Starting server on 0.0.0.0:4041 ...
Starting server on 0.0.0.0:4042 ...
Starting server on 0.0.0.0:4043 ...
Starting server on 0.0.0.0:4044 ...

起動完了。試しに動作を確認したければ、wget等で起動したいずれかのポートに対してwgetを叩けば挙動を確認できますね。
止める場合は、$ thin stop -C thin.yaml でOKです。(restartも)
tmpディレクトリには、起動中のプロセスのpidファイルが、logディレクトリにはそれぞれのThinサーバへのアクセスログが記録されます。

$ ls -l tmp/pids/
total 40

  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4040.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4041.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4042.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4043.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4044.pid

$ ls -l log/
total 40

  • rw-r--r-- 1 hideack staff 585 11 3 16:30 thin.4040.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4041.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4042.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4043.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4044.log
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*