lighttpd's load balancer

lighttpd のロードバランス機能って誰も試してないのかなぁ。

一応 fair, hash, round-robin と3種類あって、

  • fair
    • 負荷によって振り分ける(デフォルト)
  • hash
    • URLのhashで振り分ける(同じURLは必ず同じホストにわけられる)
    • Cache Array Routing Protocol ていうアルゴリズムを使ってるらしい。
  • round-robin
    • リクエストごとに違うホストへ振り分ける

設定も非常に簡単。

$HTTP["host"] == "www.example.org" {
  proxy.balance = "fair"
  proxy.server  = ( ".pl" => ( ( "host" => "192.168.0.2", "port" => 8080 ),
                            ( "host" => "192.168.0.3" ),
                            ( "host" => "192.168.0.4" ),
                            ( "host" => "192.168.0.5", "port" => 81 ) ) )
}

みたいな。バックエンドホストでも普通に VirtualHost が使えるのも○

svn.unknownplace.orgdev.unknownplace.org でも

$HTTP["host"] =~ "^(dev|svn)\.|unknownplace\.org)$" {
    proxy.server = ( "/" =>
                      ((
                       "host" => "127.0.0.1",
                       "port" => 8080,
                      ))
    )
}

とかしてバックエンドの apache2 にそのままとばしてるけど、後ろでも VirtualHost 普通に使えてうまー。

まぁ、lighttpd の mod_proxy だと svn メソッドとばないので commit できねーのだけど(だめ