最近、nginxをロードバランサーとして利用しているのですが、高速でイケているのでご紹介したいと思います。

nginxは、エンジンエックスって読むそうです。
まだ慣れない私は「ネゴシックス」ってイメージなので、コマンド打つときにふとスペル忘れたりします。
nginxは、軽量かつ高速であることが評価されて、最近シェアを伸ばしつつあるようですね。
オープンソースのロードバランサーといえば、昔からあったのは「Pound」ですが、Poundは設定は手軽ですが、アクセス数が多いとパフォーマンスが悪いので、弊社ではテスト環境等以外では利用していません。

nginxをCentOS6で利用する前提で説明します。

[text]
yum install nginx
[/text]

として導入すると、/etc/nginxに設定ファイルなどが設置されます。
nginx.confでロードバランサーの設定をします。

[text]
upstream backend {
server xxx.xxx.xxx.xx1:80 weight=5 max_fails=5 fail_timeout=20m;
server xxx.xxx.xxx.xx2:80 weight=5 max_fails=5 fail_timeout=20m;
}
[/text]

weightで振り分けるサーバーの割合を調整します。

接続元IPが同じであれば、同じサーバーに振るには、以下のようにip_hash;を指定します。

[text]
upstream backend {
ip_hash;
server xxx.xxx.xxx.xx1:80 weight=5 max_fails=5 fail_timeout=20m;
server xxx.xxx.xxx.xx2:80 weight=5 max_fails=5 fail_timeout=20m;
}
[/text]

sticky sessionで維持するには、標準機能ではなく、サードパーティのモジュールが必要となるようです。その場合以下のように指定します。

[text]
upstream backend {
sticky;
server xxx.xxx.xxx.xx1:80 weight=5 max_fails=5 fail_timeout=20m;
server xxx.xxx.xxx.xx2:80 weight=5 max_fails=5 fail_timeout=20m;
}
[/text]

nginxをリバースプロキシとして利用して、リバースプロキシ側でgzip圧縮してあげるのは以下のように指定します。

[text]
gzip on;
gzip_disable "msie6";
[/text]

静的ファイルをキャッシュさせるには以下のように指定します。ディレクトリに権限を付与してあげる必要があります。

[text]
proxy_cache_path /var/cache/nginx/static_file_cache levels=1:2 keys_zone=cache_static_file:512m inactive=1d max_size=768m;
proxy_temp_path /var/cache/nginx/temp;
[/text]

nginxはSSLでも使えるし、手軽なので、これから益々注目されてくると思います。
まだnginxを触っていない方、普段Apacheを利用している方は、是非nginxを使ってみてください。