気まぐれSE日記

地方でエンジニアしてます

HAProxyでのロードバランサ

以前、ロードバランサを作っていろいろ試行錯誤していましたが.....


それは とあるWeb APサーバをRHEL5のpiranhaとpulseで(VRRP/DSR)なロードバランサ経由させるシステムを作ったのですが通信が詰まる→使い物にならんという苦情が来て結局HAProxyに落ち着きました。ロードバランサを経由させないと速度は速いことからDSRがダメという結論に。マニュアル通り構築して結局のところ使い物にならなかったDSR構成なんですがどこに問題があったのか?DSRでAP側へSSL通信をそのまま経由させていたのがダメだったのかいろいろ考えられることはあったのですがどうにも良くわかんないです。これ以上はパケットキャプチャしないとわからないレベルなので、実験室にお蔵入りさせました。


↓症状としてはこれに近いけれどiptables関係なのかなぁと
http://collectivemeta.com/er845


それで、DSR以外のロードバランサにしようと考えまして選択肢はbalancerとかpenとかHAProxyがありbalancerは有償ぽかったので却下してpenかHAProxyとなり、両方試した結果完成度が高いHAProxyとなりました。



で、結局HAProxyは keepalivedのIPVS(VRRP)で ロードバランサを二重化し、ロードバランサとWeb APサーバ間はSSL通信させないで普通のhttp通信させ、それをロードバランサ上でstunnelを動かしてSSL化してクライアントへ流すという方式にしました。stunnelはHAProxyと連係動作させるためにx-forwarded-for ヘッダを出すように改造するパッチが必要になったりapache側でもmod_rpafというx-forwarded-for ヘッダから正しいアクセス元を記録するモジュールが必要になったりいろいろと小細工が必要でした。


↓このページが参考になりましたネ。
Setting Up A High-Availability Load Balancer With HAProxy/Keepalived On Debian Lenny
http://memochou.ti-da.net/e3253506.html


とりあえず、今のところは快調な動作です。