Pound で負荷分散のお話
Pound (http://www.apsis.ch/pound)でHTTPサーバーのフロントエンドを立ち上げています。利点として、
- Apache が直接見えない
- 負荷分散+ロードバランサになる
- SSLラッパーになる
- 変なリクエストをはじいてくれる
- 場合によってはApache以外のHTTPサーバを立ち上げてリクエストを処理させる場合も便利
なんて、サーバ公開する上でとっても便利な代物です。設定さえちゃんと行っておけば、バックグランドのHTTPサーバが落ちた場合、適当なメッセージ!を表示してくれるので、落ちてるのがすぐわかります(違う?)。
特にリクエストが増えて裁ききれない状況になった場合、新しくサーバを立てて設定に組み込めば、特に他のサーバをいじらなくても負荷軽減の可能性があります。(その前にファイルサーバがきつくなったり、DBサーバがきつくなったりしますが)
Pound も2系になってから設定ファイルの書き方が変わっちゃいましたので、さっくりと説明してみちゃいます。
ListenHTTP
Address 192.168.x.x
Port 80
End
ListenHTTPS
Address 192.168.x.x
Port 443
Cert "/usr/local/etc/host.domain.np.pem"
EndService
URL ".*.(jpe?g|gif|png|css|txt|ico)"
BackEnd
Address 192.168.xx.xx
Port 8081
TimeOut 300
End
BackEnd
Address 192.168.xx.xx
Port 8081
TimeOut 300
End
EndService
HeadRequire "Host: .*host.domain.*"
BackEnd
Address 192.168.xx.xx
Port 80
TimeOut 300
End
EndService
HeadRequire "Host: .*host2.domain.*"
BackEnd
Address 192.168.xx.xx
Port 8080
TimeOut 300
End
EndService
BackEnd
Address 192.168.xx.xx
Port 8080
Priority 5
TimeOut 300
End
Session
Type IP
TTL 300
End
End
- 最初のブロックでは、Pound が 動作している(自己)IPアドレスを記入します。これはHTTPアクセスに対する設定です。
- 2番目のブロックでは最初のブロックと同じアドレスのHTTPSに対する設定です。IPアドレスは同じ物になると思います。pem の作成はApacheで作成するキーと同一です。
- 3番目はテキストやグラフィックの専用バックエンドを用意する場合の設定です。専用バックエンドを用意しない場合、このブロックはいりません。
- 4番目、5番目は、各ドメインなどに対するバックエンドの設定です。
- 最後のブロックは上記に該当しない場合の汎用的な設定です。
簡単な説明でしたが、この程度設定してあれば特に問題なく使用できるようです。私がはまったのは、TimeOut に対する設定で、この設定が無い場合は TimeOut は非常に短いです。バックエンドサーバの設定如何ではタイムアウトが頻発します。
各設定行の Port はバックエンドサーバの動作しているポート番号をいれてくださいね。ここも間違うと動いてくれません:-)